ferret-0.6.orig/0000755000175000017500000000000010244441747012232 5ustar fikefikeferret-0.6.orig/ChangeLog0000644000175000017500000000021407754172245014007 0ustar fikefike2003-11-11 Jose E. Marchesi * GerWin 0.6 released 2003-10-09 Jose E. Marchesi * New changelog ferret-0.6.orig/BUGS0000644000175000017500000000061307741225411012711 0ustar fikefike-*- mode:text -*- Time-stamp: "2003-10-09 10:43:20 jemarch" HORRIBLE BUGS LIST ------------------ * Infinite loop while painting looping foreign key exports. * Strange bug on windows while setting the name of an object to one with blanks inside it. I am unable to reproduce it (SOLVED by jemarch). (please include your favorite Gerwin BUG here, and send a report to gerwin-bug@nongnu.org)ferret-0.6.orig/COPYING0000644000175000017500000004311007741225411013260 0ustar fikefike GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ferret-0.6.orig/gerwinml/0000755000175000017500000000000010244441702014045 5ustar fikefikeferret-0.6.orig/gerwinml/gerwinml.dtd0000644000175000017500000000546107741225412016402 0ustar fikefike ferret-0.6.orig/FILE_MIGRATION-0.5-to-0.60000644000175000017500000000164207754172245015537 0ustar fikefikeger. file migration from GerWin 0.5 to GerWin 0.6 ================================================= Another file format change, sorry! (i think i must adopt XML to store ER diagrams as soon as posible). To migrate from 0.5 .ger to 0.6 .ger, open your 0.5 .ger file and add two lines after line 3, containing two integers. These integers are the relation and entity temporary sequence number (to name anonymous objects). So fit these numbers in order to be largest than the number of entities and relations that your model contains. For example, to the 0.5 .ger file, containing 12 entities and 21 relations: -- begin of file -- My GerWin Project /my/home/myproject.ger Anonymous GNUdist ... -- end of file -- we need to add 13 (or bigger) and 22 (or bigger) to the lines 4 and 5: -- begin of file -- My GerWin Project /my/home/myproject.ger Anonymous GNUdist 13 22 ... -- end of file -- And that is all. Good luck :)ferret-0.6.orig/NEWS0000644000175000017500000000307107754173341012736 0ustar fikefike-*- mode:text -*- Time-stamp: "2003-11-11 15:42:58 jemarch" New in GerWin 0.6... -------------------- - New attribute option "del/edit", that lead you to edit a previously inserted attribute. - New painting algorithm for the Table Diagram to support loops on key migration. Now the labels with the migrated attributes are movable. - The horrible bug forbiding loops on key migration has been fixed. - Fixed a bug with internal counters. - Now GerWin generates good SQL to support foreign keys, grouping all the attributes migrated from an referred table in one ADD FOREIGN KEY sentence. This applies for the output formats SQL92, POSTGRESQL and MYSQL. - Yet another file format change, sorry. To upgrade your existing (0.5) .ger files, read FILE_MIGRATION-0.5-to-0.6 - Documentation still in progress... :/ New in GerWin 0.5... -------------------- - Bugfixing release New in GerWin 0.4... -------------------- - A more rational interface. - Support for generate various output formats on the same session. - Now output consist of the three built-in SQL dialects (sql92, postgresql and mysql) and GerwinML, a xml language to express the table diagram. A DTD for GerwinML is included in the gerwinml/ directory, so you can write a XSL to translate from GerwinML to everything you want. - Now the several output formats are RE-driven colored! :) - Another file format change, sorry. To upgrade your existing .ger files, just delete the sql-file line from it (that is, the line number 3). That should work. - Documentation still in progress... :/ferret-0.6.orig/README0000644000175000017500000000311007754172245013113 0ustar fikefike-*- mode:text -*- Time-stamp: "2003-11-11 15:25:19 jemarch" README for Gerwin 0.6 --------------------- 0. What is Gerwin? Gerwin is a tool that aid you in creating data models and then (perhaps) implementing it on a relational database. You can draw your data model via an entity-relation diagram, generate the tables from it (another graphical diagram) and then generate the SQL or GerwinML that mirror such relational tables. Currently several SQL dialects are supported (for most popular free software database systems) and the GerwinML generation makes to support more targets very easy (writing a XSL for the translation from the XML to some SQL dialect, for example). 1. How do i run Gerwin? To type: $ gerwin should work if you have tcl/tk installed in your GNU system. 2. Where can i find updates and Gerwin related material? On the Gerwin homepage, of course: http://es.gnu.org/~jemarch/gerwin You can also go directly to the GerWin savannah page: http://savannah.nongnu.org/projects/gerwin 3. Where is the documentation? Hmm... currently there is not documentation, sorry. Anyway, the tool is fairly simple and (i hope) intuitive. If you become confused using gerwin, feel free to ask on jemarch@gnu.org 4. How can i enlarge the draw space? Use the arrow keys to change the canvas size: - vertical ^ | | - horizontal <--- ---> + horizontal | | v + vertical -- Jose E. Marchesi ferret-0.6.orig/THANKS0000644000175000017500000000045307741225411013143 0ustar fikefike-*- mode:text -*- Time-stamp: "2003-08-09 22:47:13 jemarch" THANKS! ------- Many many thanks to Juan Garbajosa, Manuel Bollaín, Pedro Pablo Alarcón and Carlos del Cuvillo for his very valuable help in testing the tool and his very valuable suggestions. -- Jose E. Marchesi ferret-0.6.orig/TODO0000644000175000017500000000155107741225411012720 0ustar fikefike-*- mode: outline -*- Time-stamp: "2003-08-09 22:39:32 jemarch" WISHES list ----------- * Pages alphabetical order (?) * Bind the second mouse button always to "Edit properties" (Or perhaps is better a menu with all the edition operations?) ?? (please tell me what you would prefer on jemarch@gnu.org. Thanks :) * Change "Is Key" and "Is not key" for "Toggle primary key" (?) * Add a change button to the "New attribute" box. When cliking into an attribute in the bbox. * Page "domain" to declare domains. And then select the domains for the attributes via a desplegable. ** domain aliases * Hide attributes into the relation and entities draws. * For a long long time, on a far far galaxy... :) ** Ross extensions. (Somewhat strange ideas from Manuel Bollaín, such as "contained" properties between relations.. ) ** Extended E/R model. ferret-0.6.orig/gerwin0000755000175000017500000000004607741225411013447 0ustar fikefike#!/usr/bin/wish source src/gerwin.tcl ferret-0.6.orig/gerwin.bat0000644000175000017500000000003007741225411014202 0ustar fikefikewishrun.exe gerwin.tcl ferret-0.6.orig/src/0000755000175000017500000000000010244441702013010 5ustar fikefikeferret-0.6.orig/src/ChangeLog0000644000175000017500000000047507754162202014577 0ustar fikefike2003-10-09 Jose E. Marchesi * gui.tcl (gui_edit_entity): Added khad changes to permit predefined domains (gui_attribute_delete_relation): Do the same for relations * gm.tcl (gm_draw_entity): Added khad changes to solve the "moving box" bug. (gm_draw_relation): the same * New changelog ferret-0.6.orig/src/gen.tcl0000644000175000017500000003202207754162203014274 0ustar fikefike;# gen.tcl -- Gerwin ;# ;# Generation Routines ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 11:24:57 jemarch" ;# ;# gen_move_relation_attributes TABLE RELATION NULL ;# ;# Pass all attributes from RELATION to TABLE, with NULL proc gen_move_relation_attributes {table relation null} { foreach ak [gob_relation_get_attributes $relation] { set ak [lindex $ak 0] ;# the attribute name ;# See if there is already an attribute named $ak on the table if {[gob_table_attribute_exist $table $ak]} then { ;# Rename the attribute with # set nname "${relation}%${ak}" } else { set nname $ak } gob_table_attribute_add $table $nname \ [gob_relation_get_attribute_domain $relation $ak] $null } } ;# ;# gen_move_key_attributes_as_foreign_keys TABLE ENTITY NULL ;# ;# Pass all attributes from the ENTITY key to TABLE, with NULL proc gen_move_entity_key_attributes_as_foreign_keys {table entity null} { global gen_current_relation foreach ak [gob_entity_get_key $entity] { ;# See if there is already an attribute named $ak on the table if {[gob_table_attribute_exist $table $ak]} then { ;# See if the table and the entity have the same name (reflexive relation) if {$table == $entity} then { set nname "${entity}%${gen_current_relation}%${ak}" } else { ;# Rename the attribute with # set nname "${entity}%${ak}" } } else { set nname $ak } gob_table_attribute_add $table $nname \ [gob_entity_get_attribute_domain $entity $ak] $null gob_table_add_attribute_to_foreign_keys $table $nname $entity } } ;# ;# gen_ER_to_TD ;# ;# Generates the TD in the td page from the ER in the er page proc gen_ER_to_TD {} { global gmainframe global gcanvas global gcanvas_td global gerwin_entities global gerwin_relations global gerwin_tables global gm_entity global gm_relation global gerwin_table global gerwin_relation global gerwin_entity global gen_current_relation global gm_managed global gm_flkey ;# Scale the TD canvas set re_sreg [${gcanvas} cget -scrollregion] ${gcanvas_td} configure -scrollregion $re_sreg ;# All entities must have a primary key! foreach e $gerwin_entities { if {[llength [gob_entity_get_key $e]] == 0} then { gui_notice "$e have not a primary key! All entities must have a primary key to create tables" return } } ;# Erase all possible previous tables foreach t $gerwin_tables { gob_delete_table $t } ;# Erase all possible previous flkeys if {[info exist gm_flkey]} then { unset gm_flkey } set gerwin_tables {} ;# Erase the td canvas ${gcanvas_td} delete all ;# Examine entities foreach e $gerwin_entities { ;# Create a new table gob_create_table $e {} {} {} ;# The table have the same attributes than the entity foreach a [gob_entity_get_attributes $e] { gob_table_attribute_add $e [lindex $a 0] [lindex $a 1] 1 } ;# Also, both have the same key foreach k [gob_entity_get_key $e] { gob_table_add_attribute_to_key $e $k gob_table_set_attribute_null $e $k 0 } set temp($e,xpos) $gm_entity($e,xpos) set temp($e,ypos) $gm_entity($e,ypos) } ;# Examine relations foreach r $gerwin_relations { set gen_current_relation $r set nentities [gob_relation_get_num_entities $r] if {$nentities == 2} then { ;# Binary relation if {$gerwin_relation($r,reflexive)} then { ;# Reflexive relation set entity1 [lindex [lindex $gerwin_relation($r,entities) 0] 0] set entity2 $entity1 ;# Get the cards set cardmax1 [lindex [lindex [lindex $gerwin_relation($r,entities) 0] 1] 1] set cardmax2 [lindex [lindex [lindex $gerwin_relation($r,entities) 1] 1] 1] set cardmin1 [lindex [lindex [lindex $gerwin_relation($r,entities) 0] 1] 0] set cardmin2 [lindex [lindex [lindex $gerwin_relation($r,entities) 1] 1] 0] } else { ;# Non-reflexive relations set entity1 [lindex [lindex $gerwin_relation($r,entities) 0] 0] set entity2 [lindex [lindex $gerwin_relation($r,entities) 1] 0] set cardmax1 [gob_relation_get_entity_max_card $r $entity1] set cardmin1 [gob_relation_get_entity_min_card $r $entity1] set cardmax2 [gob_relation_get_entity_max_card $r $entity2] set cardmin2 [gob_relation_get_entity_min_card $r $entity2] } switch $cardmax1 { 1 { switch $cardmax2 { 1 { ;# /1 -> /1 RELATIONS if {($cardmin1 == 1) && ($cardmin2 == 1)} then { ;# Move the entity1 key to entity2 gen_move_entity_key_attributes_as_foreign_keys $entity2 $entity1 0 ;# Insert the relation attributes into entity2 gen_move_relation_attributes $entity2 $r 1 } if {($cardmin1 == 0) && ($cardmin2 == 1)} then { ;# Move the entity2 keys to entity1 gen_move_entity_key_attributes_as_foreign_keys $entity1 $entity2 0 ;# Insert the relation attributes into entity1 gen_move_relation_attributes $entity1 $r 1 } if {($cardmin1 == 1) && ($cardmin2 == 0)} then { ;# Move the entity1 keys to entity2 gen_move_entity_key_attributes_as_foreign_keys $entity2 $entity1 0 ;# Insert the relation attributes into entity2 gen_move_relation_attributes $entity2 $r 1 } if {($cardmin1 == 0) && ($cardmin2 == 0)} then { ;# Move the entity 1 keys to entity 2 gen_move_entity_key_attributes_as_foreign_keys $entity2 $entity1 1 ;# Insert the relation attributes into entity2 gen_move_relation_attributes $entity2 $r 1 } } N { ;# /1 -> /N relations if {($cardmin1 == 1) && ($cardmin2 == 1)} then { ;# Move entity 1 keys to entity 2 gen_move_entity_key_attributes_as_foreign_keys $entity2 $entity1 0 ;# Insert the relation attributes into entity2 gen_move_relation_attributes $entity2 $r 1 } if {($cardmin1 == 0) && ($cardmin2 == 1)} then { ;# Move entity 1 keys to entity 2 gen_move_entity_key_attributes_as_foreign_keys $entity2 $entity1 0 ;# Insert the relation attributes into entity2 gen_move_relation_attributes $entity2 $r 1 } if {($cardmin1 == 1) && ($cardmin2 == 0)} then { ;# Move entity 1 keys to entity 2 gen_move_entity_key_attributes_as_foreign_keys $entity2 $entity1 1 ;# Insert the relation attributes into entity2 gen_move_relation_attributes $entity2 $r 1 } if {($cardmin1 == 0) && ($cardmin2 == 0)} then { ;# Move entity 1 keys to entity 2 gen_move_entity_key_attributes_as_foreign_keys $entity2 $entity1 1 ;# Insert the relation attributes into entity2 gen_move_relation_attributes $entity2 $r 1 } } } } N { switch $cardmax2 { 1 { ;# /N -> /1 RELATIONS if {($cardmin1 == 1) && ($cardmin2 == 1)} then { ;# Move entity 2 keys to entity 1 gen_move_entity_key_attributes_as_foreign_keys $entity1 $entity2 0 ;# Insert the relation attributes into entity1 gen_move_relation_attributes $entity1 $r 1 } if {($cardmin1 == 0) && ($cardmin2 == 1)} then { ;# Move entity 2 keys to entity 1 gen_move_entity_key_attributes_as_foreign_keys $entity1 $entity2 0 ;# Insert the relation attributes into entity1 gen_move_relation_attributes $entity1 $r 1 } if {($cardmin1 == 1) && ($cardmin2 == 0)} then { ;# Move entity 2 keys to entity 1 gen_move_entity_key_attributes_as_foreign_keys $entity1 $entity2 1 ;# Insert the relation attributes into entity1 gen_move_relation_attributes $entity1 $r 1 } if {($cardmin1 == 0) && ($cardmin2 == 0)} then { ;# Move entity 2 keys to entity 1 gen_move_entity_key_attributes_as_foreign_keys $entity1 $entity2 1 ;# Insert the relation attributes into entity1 gen_move_relation_attributes $entity1 $r 1 } } N { ;# /N -> /N ;# Create a new table gob_create_table $r {} {} {} ;# Add the keys from the related entities foreach ak [gob_entity_get_key $entity1] { ;# See if a rename is necessary if {[gob_table_attribute_exist $r $ak]} then { ;# Rename the attribute with # set nname "${entity1}%${ak}" } else { set nname $ak } gob_table_attribute_add $r $nname \ [gob_entity_get_attribute_domain $entity1 $ak] 0 gob_table_add_attribute_to_foreign_keys $r \ $nname $entity1 gob_table_add_attribute_to_key $r $nname } foreach ak [gob_entity_get_key $entity2] { ;# See if a rename is necessary if {[gob_table_attribute_exist $r $ak]} then { ;# Rename the attribute with # set nname "${entity2}%${ak}" } else { set nname $ak } gob_table_attribute_add $r $nname \ [gob_entity_get_attribute_domain $entity2 $ak] 0 gob_table_add_attribute_to_foreign_keys $r \ $nname $entity2 gob_table_add_attribute_to_key $r $nname } ;# Insert the relation attributes into the new table set toattr $r foreach ak [gob_relation_get_attributes $r] { gob_table_attribute_add $toattr [lindex $ak 0] [lindex $ak 1] \ 1 } ;# Set the geometry for the new table set temp($r,xpos) $gm_relation($r,xpos) set temp($r,ypos) $gm_relation($r,ypos) } } } } } else { ;# Relations with >2 links ;# All cards are N ;# Create a new table gob_create_table $r {} {} {} ;# Set the geometry for the new table set temp($r,xpos) $gm_relation($r,xpos) set temp($r,ypos) $gm_relation($r,ypos) foreach e [gob_relation_get_entities $r] { set e [lindex $e 0] ;# Add the keys to the foreign keys to the new table, ;# and to the primary key. foreach ak [gob_entity_get_key $e] { ;# See if a rename is necessary if {[gob_table_attribute_exist $r $ak]} then { ;# Rename the attribute with # set nname "${e}%${ak}" } else { set nname $ak } gob_table_attribute_add $r $nname \ [gob_entity_get_attribute_domain $e $ak] 0 gob_table_add_attribute_to_foreign_keys $r \ $nname $e gob_table_add_attribute_to_key $r $nname } } } } ;# Draw all the tables foreach t $gerwin_tables { gm_draw_table $t $temp($t,xpos) $temp($t,ypos) } ;# Finally, update all the links foreach t $gerwin_tables { set gm_managed {} gm_table_update_links $t } } ;# ;# gen_TD_to_Output FORMAT ;# ;# Generates the Output corresponding to the actual TD contents ;# (that is, the actual table space) ;# ;# FORMAT is the Output format. proc gen_TD_to_Output {format} { global output_pages global output_pages_widget global gtext_output global gerwin_output_formats ;# Do nothing if FORMAT is empty or is not a valid output format if {$format == ""} then { return } if {[lsearch $gerwin_output_formats $format] == -1} then { return } ;# Create or switch to the good output page ;# See if FORMAT have alreay a page in the output area set index [lsearch $output_pages $format] if {$index != -1} then { ;# Make the page visible ${output_pages_widget} raise [lindex $output_pages $index] } else { ;# Create a new page for the format gui_create_output_page $format } ;# Make the text widget editable $gtext_output($format) configure -state normal ;# Call to the appropiate generation routine omit_clear gen_TD_to_format_${format} ;# Make the text widget no editable $gtext_output($format) configure -state disabled ;# Finally, colorize gtext_output($format) gen_colorize $format } ;# ;# gen_colorize FORMAT ;# ;# Colorizes the generated text for FORMAT proc gen_colorize {format} { global gtext_output global output_colors set gtext $gtext_output($format) set colors $output_colors($format) ;# Rewind the text widget ${gtext} mark set insert 1.0 ;# Foreach colors foreach color $colors { set er [lindex $color 0] set col [lindex $color 1] ;# Find all occurrences of ER on the text widget, and assign it ;# the tag "col" ${gtext} mark set traveller 1.0 while {1} { set sresult [${gtext} search -regexp -nocase -count foundnum -- $er [${gtext} index traveller] end] if {$sresult == ""} then { ;# No more matches break } ${gtext} mark set traveller $sresult ${gtext} tag add $col [${gtext} index traveller] "[${gtext} index traveller] + $foundnum chars" ${gtext} mark set traveller "[${gtext} index traveller] + [expr $foundnum + 1] chars" } ;# Colorize the tag ${gtext} tag configure $col -foreground $col } } ;# ;# omit_line LINE ;# ;# Outputs LINE to the right output text widget proc omit_line {line} { global gerwin_output_active_format global gtext_output $gtext_output($gerwin_output_active_format) insert end "${line}\n" } ;# ;# omit_clear ;# ;# Clear the right output text widget proc omit_clear {} { global gerwin_output_active_format global gtext_output $gtext_output($gerwin_output_active_format) delete 1.0 end } ferret-0.6.orig/src/gerwin.tcl0000644000175000017500000004143407754172245015034 0ustar fikefike;# gerwin.tcl -- Gerwin ;# ;# Main file. ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 15:16:30 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;# ;# gerwin_init ;# ;# Initializes gerwin proc gerwin_init {} { ;# Initialize the gui gui_init .gerwin ;# Initialize the bitmap library ;#Bitmap::_init ;# Set the initial state: Moving ;#gerwin_set_state Editing } ;# ;# gerwin_set_state STATE ;# ;# Set STATE as the new STATE for gerwin proc gerwin_set_state {state} { global gmainframe global gerwin_state global gcanvas set userframe [${gmainframe} getframe] set gerwin_state $state gui_change_state $state ;# Change the bindings if necessary switch $state { "Inserting entity" - "Inserting label" { ;# Destroy the binding on all the canvas objects ${gcanvas} bind all {} ;# Bind on the entire widget bind ${gcanvas} {gui_mark %x %y} } default { ;# Destroy the binding on the canvas bind ${gcanvas} {} ;# Bind on all the canvas elements gui_launch_bindings } } } ;# ;# gerwin_quit ;# ;# Quits Gerwin proc gerwin_quit {} { exit } ;# ;# gerwin_print_TD ;# ;# Print the gcanvas_td into a postscript file proc gerwin_print_TD {} { global gcanvas_td ;# Get the file where put the postscrip set filetypes {{"PostScript" {.ps}}} set f [tk_getSaveFile -initialdir "." \ -filetypes $filetypes -title "Print to a PostScript file"] ;# Switch over the result switch $f { "" { ;# Do nothing return } default { ;# Put the .ps suffix if it is not done if {! [string match "*.ps" $f] } then { append f ".ps" } ;# Ok, save the postscript into f ;# Get the bounding box set bbox [${gcanvas_td} bbox all] set x [lindex $bbox 0] set y [lindex $bbox 1] set height [lindex $bbox 3] set width [lindex $bbox 2] ${gcanvas_td} postscript -file $f -colormode color \ -pageanchor c -width $width -height $height \ -x $x -y $y } } } ;# ;# gerwin_print_ER ;# ;# Print the gcanvas into a postscript file proc gerwin_print_ER {} { global gcanvas ;# Get the file where put the postscrip set filetypes {{"PostScript" {.ps}}} set f [tk_getSaveFile -initialdir "." \ -filetypes $filetypes -title "Print to a PostScript file"] ;# Switch over the result switch $f { "" { ;# Do nothing return } default { ;# Put the .ps suffix if it is not done if {! [string match "*.ps" $f] } then { append f ".ps" } ;# Ok, save the postscript into f ;# Get the bounding box set bbox [${gcanvas} bbox all] set x [lindex $bbox 0] set y [lindex $bbox 1] set height [lindex $bbox 3] set width [lindex $bbox 2] ${gcanvas} postscript -file $f -colormode color \ -pageanchor c -width $width -height $height \ -x $x -y $y } } } ;# ;# gerwin_save_sql ;# ;# Saves the current SQL on a file proc gerwin_save_sql {} { global gmainframe global gerwin_cproject_sqlfile global gtext_sql if {($gerwin_cproject_sqlfile == "none")} then { MessageDlg ${gmainframe}.notice -title "Saving project" \ -message "You must assign a SQL file to the project before saving it!" \ -type ok return } set res [MessageDlg ${gmainframe}.notice -title "Saving SQL" \ -message "Are you sure you want to save the SQL listing into ${gerwin_cproject_sqlfile}?" \ -type yesno] switch $res { 0 { ;# Yes, save it set fout [open ${gerwin_cproject_sqlfile} w] puts $fout [${gtext_sql} get 1.0 end] close $fout } 1 { ;# No return } } } ;# ;# gerwin_save_project ;# ;# Project saving dialog proc gerwin_save_project {} { global gmainframe global gerwin_cproject_name global gerwin_cproject_file if {($gerwin_cproject_file == "none") || ($gerwin_cproject_file == "")} then { MessageDlg ${gmainframe}.notice -title "Saving project" \ -message "You must assign a file to the project before saving it!" \ -type ok return } set res [MessageDlg ${gmainframe}.notice -title "Saving project" \ -message "Are you sure you want to save $gerwin_cproject_name into ${gerwin_cproject_file}?" \ -type yesno] switch $res { 0 { ;# Yes, save it gerwin_save_project_file } 1 { ;# No return } } } ;# ;# gerwin_get_default_project_name ;# proc gerwin_get_default_project_name {} { global gerwin_project_counter return "Project$gerwin_project_counter" incr gerwin_project_counter } ;# ;# gerwin_close_project ;# ;# Closes the current project proc gerwin_close_project {} { global gerwin_cproject_name global gmainframe global gcanvas global gcanvas_td ;# Do nothing if there is not any project open if {${gerwin_cproject_name} == "none"} then { return } ;# Make sure we want to close the project set res [MessageDlg ${gmainframe}.notice -title "Closing the project" \ -message "Are you sure you want to close ${gerwin_cproject_name}?" \ -type yesno] switch $res { 0 { ;# Yes, close it gerwin_purge_project ;# Disable some buttons gui_no_project_opened ;# Resize the canvas # ${gcanvas} configure -scrollregion {} # ${gcanvas_td} configure -scrollregion {} } 1 { ;# No, coward return } } } ;# ;# gerwin_open_project ;# ;# Select a project file and then make that project the current one proc gerwin_open_project {} { global gmainframe global gerwin_cproject_name ;# Warning if there is another project opened if {$gerwin_cproject_name != "none"} then { set res [MessageDlg ${gmainframe}.notice -title "Open a new project?" \ -message "There is another project opened. You must close it and then open a new one." \ -type ok] return } set filetypes {{"Gerwin Project" {.ger}}} set f [tk_getOpenFile -initialdir "." \ -filetypes $filetypes -title "Open a gerwin file"] ;# switch over the result switch $f { "" { ;# Do nothing return } default { ;# Now we can edit gui_project_opened ;# Load the project from $f gerwin_load_project_file $f } } } ;# ;# gerwin_purge_project ;# ;# Purges all the gerwin state proc gerwin_purge_project {} { global gerwin_entities global gerwin_relations global gerwin_tables global gerwin_cproject_name global gerwin_cproject_file global gerwin_cproject_sqlfile global gerwin_cproject_author global gerwin_entity_seq global gerwin_output_active_format global output_pages set gerwin_cproject_name none set gerwin_cproject_file none set gerwin_cproject_author none set gerwin_entity_seq 1 ;# Purge all relations foreach r $gerwin_relations { gob_delete_relation $r gm_delete_relation $r gui_edition_area_delete_page $r } set gerwin_relations {} ;# Purge all entities foreach e $gerwin_entities { gob_delete_entity $e gm_delete_entity $e gui_edition_area_delete_page $e } set gerwin_entities {} ;# Purge all tables foreach t $gerwin_tables { gob_delete_table $t gm_delete_table $t } set gerwin_tables {} ;# Purge project variables set gerwin_cproject_file none set gerwin_cproject_sqlfile none ;# Purge the output pages foreach op $output_pages { gui_destroy_output_page $op } ;# Destroy the app area Domain page ;#gui_app_area_destroy_Domain_page ;# Destroy the app area Project page gui_app_area_destroy_Project_page ;# Destroy the rest of the app areas gui_app_area_destroy_Output_page gui_app_area_destroy_TD_page gui_app_area_destroy_ER_page ;# Delete the active format set gerwin_output_active_format {} } ;# ;# gerwin_save_output_file FORMAT ;# ;# Save the FORMAT output to a file proc gerwin_save_output_file {format} { global gmainframe global gtext_output set filename [tk_getSaveFile -initialdir "." \ -title "Saving an output file"] ;# Switch over the result switch $filename { "" { ;# Do nothing return } default { ;# Make sure we want to save set res [MessageDlg ${gmainframe}.notice -title "Saving SQL" \ -message "Are you sure you want to save this $format output into ${filename}?" \ -type yesno] switch $res { 0 { ;# Yes, save it set fout [open ${filename} w] puts $fout [$gtext_output($format) get 1.0 end] close $fout } 1 { ;# No return } } } } } ;# ;# gerwin_new_project ;# ;# Creates a new project, named after the project count proc gerwin_new_project {} { global gerwin_cproject_name global gerwin_cproject_file global gerwin_cproject_author global gcanvas ;# Make sure the user really want to get a new project if {$gerwin_cproject_name != "none"} then { set answer [gui_yes_no_cancel "Another project is already opened.\nAre you sure \ you want to discard the old project and start another one?"] switch $answer { 0 { ;# Purge the old project gerwin_purge_project } 1 - 2 { return } } } ;# Set the default values for project attributes set gerwin_cproject_name [gerwin_get_default_project_name] set gerwin_cproject_file none set gerwin_cproject_author "Anonymous GNUdist" ;# Activate the buttons gui_project_opened ;# Scale the canvas ${gcanvas} configure -scrollregion {0 0 1024 768} } ;# ;# gerwin_load_project_file FILENAME ;# ;# Load a project from FILENAME proc gerwin_load_project_file {filename} { global gerwin_cproject_name global gerwin_cproject_file global gerwin_cproject_author global gerwin_entities global gerwin_relations global gerwin_entity global gerwin_relation global gm_entity global gm_relation global gerwin_relation_seq global gerwin_entity_seq global gcanvas ;# Open the input channel ;# We suppose the file exist set fin [open $filename r] ;## ;## Load in project information ;## gets $fin gerwin_cproject_name gets $fin gerwin_cproject_file gets $fin gerwin_cproject_author gets $fin gerwin_entity_seq gets $fin gerwin_relation_seq ;## ;## Load canvas information ;## gets $fin sreg ${gcanvas} configure -scrollregion $sreg ;## ;## Load entity information ;## gets $fin numentities for {set x 0} {$x < $numentities} {incr x} { gets $fin ename ;# Entity name gets $fin xpos ;# Get geometry information gets $fin ypos gob_create_entity $ename {} {} {} ;# Create the entity ;# Load in the attributes gets $fin numattributes for {set y 0} {$y < $numattributes} {incr y} { gets $fin aline ;# Read the attribute line ;# Add the new attribute to the entity gob_entity_add_attribute $ename [lindex $aline 0] [lindex $aline 1] } ;# Load in the keys gets $fin numkeys for {set y 0} {$y < $numkeys} {incr y} { gets $fin key ;# Read the key ;# Add the key to the entity gob_entity_add_attribute_to_key $ename $key } ;# Load in the relations gets $fin numrelations for {set y 0} {$y < $numrelations} {incr y} { gets $fin relation ;# Read the relation ;# Add the relation to the entity gob_entity_add_relation $ename $relation } ;# Ok, draw the entity gm_draw_entity $ename $xpos $ypos } ;## ;## Load in the relations ;## gets $fin numrelations for {set x 0} {$x < $numrelations} {incr x} { gets $fin rname ;# Relation name gets $fin temp_reflexive ;# Reflexive relation? gets $fin xpos ;# Geometry information gets $fin ypos ;# Create the relation gob_create_relation $rname {} {} set gerwin_relation($rname,reflexive) $temp_reflexive ;# Load in the attributes gets $fin numattributes ;# Number of attributes for {set y 0} {$y < $numattributes} {incr y} { gets $fin aline ;# Read the attribute line gob_relation_add_attribute $rname [lindex $aline 0] [lindex $aline 1] } ;# Load in the entities gets $fin numentities ;# Number of entities for {set y 0} {$y < $numentities} {incr y} { gets $fin ename ;# Entity name gets $fin emincard ;# Entity minimal cardinality gets $fin emaxcard ;# Entity maximal cardinality gob_relation_add_entity $rname $ename $emincard $emaxcard } ;# Ok, draw the relation gm_draw_relation $rname $xpos $ypos if {$gerwin_relation($rname,reflexive)} then { gm_relation_update_links_reflexive $rname } else { gm_relation_update_links $rname } } ;# Set some internal state ;#set gerwin_entity_seq [expr $numentities] ;#set gerwin_relation_seq [expr $numrelations] } ;# ;# gerwin_save_project_file ;# ;# Save the current project proc gerwin_save_project_file {} { global gerwin_cproject_name global gerwin_cproject_file global gerwin_cproject_author global gerwin_entities global gerwin_relations global gerwin_entity global gerwin_relation global gm_entity global gm_relation global gerwin_entity_seq global gerwin_relation_seq global gcanvas ;# Open the out channel ;# We suposse the file exist set filename $gerwin_cproject_file set fout [open $filename w] ;## ;## Write out project information ;## puts $fout $gerwin_cproject_name puts $fout $gerwin_cproject_file puts $fout $gerwin_cproject_author puts $fout $gerwin_entity_seq puts $fout $gerwin_relation_seq ;## ;## Write out canvas size information ;## set sreg [${gcanvas} cget -scrollregion] puts $fout $sreg ;## ;## Write out entity information ;## set nentities [llength $gerwin_entities] puts $fout $nentities ;# Number of entities foreach e $gerwin_entities { puts $fout $e ;# Entity name ;# Geometry attributes puts $fout $gm_entity($e,xpos) puts $fout $gm_entity($e,ypos) set nattributes [llength $gerwin_entity($e,attributes)] puts $fout $nattributes ;# Number of attributes foreach a $gerwin_entity($e,attributes) { puts $fout $a ;# Attributes } set nkeys [llength $gerwin_entity($e,key)] puts $fout $nkeys ;# Number of key attributes foreach k $gerwin_entity($e,key) { puts $fout $k ;# Keys } set nrelations [llength $gerwin_entity($e,relations)] puts $fout $nrelations ;# Number of relations foreach r $gerwin_entity($e,relations) { puts $fout $r ;# Relations } } ;# Output relations set nrelations [llength $gerwin_relations] puts $fout $nrelations ;# Number of relations foreach r $gerwin_relations { puts $fout $r ;# Relation name puts $fout $gerwin_relation($r,reflexive) ;# It is a reflexive relation? ;# Output geometry information puts $fout $gm_relation($r,xpos) puts $fout $gm_relation($r,ypos) set nattributes [llength [gob_relation_get_attributes $r]] puts $fout $nattributes ;# Number of attributes foreach a [gob_relation_get_attributes $r] { puts $fout $a } set nentities [llength [gob_relation_get_entities $r]] puts $fout $nentities ;# Number of entities foreach e [gob_relation_get_entities $r] { set e [lindex $e 0] puts $fout $e ;# Entity name puts $fout [gob_relation_get_entity_min_card $r $e] ;# Entity min card puts $fout [gob_relation_get_entity_max_card $r $e] ;# Entity max card } } close $fout } ;##### Load external packages lappend auto-path [file join . widgets] puts "Loading external megawidget libraries:" puts "" puts " BWidget 1.6" lappend auto_path [file join . widgets bwidget] package require BWidget 1.6 puts " Icons 1.0" lappend auto_path [file join . widgets icons] package require icons 1.0 puts " Tablelist 2.7" lappend auto_path [file join . widgets tablelist] package require Tablelist 2.7 puts "" ;###### Done loading libraries source src/globals.tcl source src/gob.tcl source src/gui.tcl source src/gm.tcl source src/gen.tcl source src/postgresql.tcl source src/mysql.tcl source src/sql92.tcl source src/gerwinml.tcl ;# Ok, start! gerwin_init ferret-0.6.orig/src/gerwinml.tcl0000644000175000017500000001402107741225411015343 0ustar fikefike;# gerwinml.tcl -- Gerwin ;# ;# GerwinML tables generation routine ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-07-10 19:09:13 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;# Register the format lappend gerwin_output_formats GerwinML ;# Set the color scheme for this output format set output_colors(GerwinML) { {{} red} {{<[a-zA-Z_]+} blue} {{} blue} {{/>} blue} {{=} blue} {{\".*?\"} orange} } ;# Set the type scheme for this output format set gerwin_output_format_types(GerwinML) { {{DYNAMIC_STRING(%d)} {DYNAMIC_STRING(%d)}} {{FIXED_STRING(%d)} {FIXED_STRING(%d)}} {INTEGER INTEGER} {FLOAT FLOAT} {NATURAL INTEGER} {CHARACTER CHARACTER} } ;# The generation routine proc gen_TD_to_format_GerwinML {} { global gerwin_cproject_name global gerwin_cproject_author global gerwin_cproject_file global gerwin_output_active_format global gerwin_tables global gerwin_table ;# Ok, generate the GerwinML omit_line "" omit_line "" omit_line " " omit_line "" omit_line " " ;# Iterate on the tables foreach t $gerwin_tables { set table_name $t ;# Some blank space before each table omit_line "" omit_line "" omit_line " " omit_line "" ;# Emit the table attributes omit_line " " omit_line "" set nattributes [gob_table_get_nattributes $t] set i 0 foreach a [gob_table_get_attributes $t] { incr i ;# See if the name contain any % ;# If it is the case, then this is a repeated foreign key ;# and the name in gob_table_get_foreign_keys is without the #! if {[regexp \% $a]} then { ;# Convert the # to an underscore set nname [string map {% _} $a] } else { set nname $a } ;# Write the attribute name and the attribute domain append line " " ;# Ok, omit the line omit_line $line set line {} } omit_line "" omit_line " " ;# Now, emit the table restrictions omit_line "" ;# Begin of table restrictions omit_line "" omit_line " " ;# Begin of primary key omit_line "" omit_line " " ;# Begin of primary_key_attributes omit_line " " ;# Generate primary key attributes omit_line "" foreach a [gob_table_get_key $t] { ;# Obtain the original name ;#regsub {.+%([^%]+)} $a "\\1" a set a [string map "% _" $a] omit_line " " } omit_line "" omit_line " " ;# End of primary_key_attributes omit_line " " ;# End of primary key ;# Begin of not_nulleable omit_line "" omit_line " " ;# Begin of not_nulleable_attributes omit_line " " ;# Generate not-nulleable attributes omit_line "" foreach a [gob_table_get_attributes $t] { if {![gob_table_get_attribute_null $t $a]} then { ;# Normalize the name ;#regsub {.+%([^%]+)} $a "\\1" a set a [string map "% _" $a] omit_line " " } } omit_line "" omit_line " " ;# End of not _nulleable_attributes omit_line "" omit_line " " ;# End of not_nulleable ;# Begin of foreign_keys omit_line "" omit_line " " omit_line "" ;# Generate foreign_key elements set rtables {} foreach fkd [gob_table_get_foreign_keys $t] { set rtable [lindex $fkd 1] if {[lsearch $rtables $rtable] == -1} then { lappend rtables $rtable } } ;# Ok, now we have all the rtables into $rtables foreach rtable $rtables { ;# Begin of foreign_key omit_line " " omit_line "" ;# Begin of foreign_key_attributes omit_line " " omit_line "" ;# Emit the foreign keys for this rtable foreach a [gob_table_get_attributes $t] { ;# Get the remote name for the attribute regsub {.+%([^%]+)} $a "\\1" nname set nname [string map "% _" $nname] if {[gob_table_is_foreign_key $t $a]} then { ;# Get the foreign key for the attribute set art [gob_table_get_foreign_key_rtable $t $a] if {$art == $rtable} then { set a [string map "% _" $a] ;# Begin foreign_key_attribute omit_line " " } } } omit_line "" omit_line " " ;# End of foreign_key_attributes omit_line "" omit_line " " ;# End of foreign_key omit_line "" } omit_line "" omit_line " " ;# End of foreign_keys omit_line "" omit_line " " ;# End of table restrictions omit_line "" omit_line "
" omit_line "" } omit_line "
" omit_line "" omit_line "
" omit_line "" omit_line "
" } ferret-0.6.orig/src/globals.tcl0000644000175000017500000001144007754172245015156 0ustar fikefike;# globals.tcl -- Gerwin ;# ;# Global variables. ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 15:25:10 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA set gerwin_version 0.6 ;################### ;# Current project data # ;################### set gerwin_cproject_name none ;# current project name set gerwin_cproject_file none ;# current project .ger file set gerwin_cproject_sqlfile none ;# current .sql file set gerwin_cproject_author none ;# current project author set gerwin_project_counter 0 ;################ ;# GOB Entity data # ;################ set gerwin_entities {} ;# List of the names of all entities from the current project ;# gerwin_entity(entity_name, attributes) ;# Per-entity information ;# gerwin_entity(entity_name, key) ;################# ;# GOB Relation data # ;################# set gerwin_relations {} ; ;# List of the names of all relations from the current project ;# gerwin_relation(relation_name,entities) -> {{e1 c1} {e2 c2} ... {eN cN}} ;# gerwin_relation(relation_name,attributes) -> {{a1 d1} {a2 d2} ... {aN dN}} ;################ ;# GOB Label data # ;############### set gerwin_labels {} ;# List of the name of labels in the system set gerwin_label_seq 0 ;# gerwin_label(label_name,text) ;# gerwin_label(label_name,font) ;################# ;# GOB Domain data # ;################# set gerwin_predefined_domains {} set gerwin_domains {} ;# Active domains on the system ;# set gerwin_domain($domain,$output_format) -> type ;############### ;# GOB Table data # ;############### set gerwin_tables {} ;# set gerwin_table(table, ;################## ;# WGOB Table data ## ;################# set gm_tables {} set gm_managed {} ;# Already painted relations ;# set gm_table(table, ;################## ;# WGOB Entity data # ;################## set gm_entities {} ;# List of the names of all entities printed in the canvas ;# gm_entity(entity_name, attributes) ;# Per-entity information ;# gm_entity(entity_name, key) set gm_relations {} ;# List of the names of all relations printed in the canvas ;# gm_relation(relation_name,attr) set gerwin_entity_seq 1 ;# Sequence to make anonymous entities set gerwin_relation_seq 1 ;# Sequence to make anonymous relations set gerwin_changing_entity_name {} ;# Temporary set gerwin_changing_attribute {} set gerwin_changing_domain {} set gerwin_obj_moving {} set gerwin_obj_type_moving {} ;########## ;# GUI data # ;########## ;# gfonts() Gerwin fonts set gmainframe {} ;# Gerwin mainframe widget set apparea {} ;# Application area notebook set apptree {} ;# Application tree set gcanvas {} ;# Canvas for the ER diagram set gcanvas_td {} ;# Canvas for the TD diagram ;# set gtext_output(format) ;# Text widget for the several Output generated text set gui_button_bbox_project {} set gui_button_bbox_elements {} set gui_button_bbox_toos {} set gui_button_bbox_gen_TD {} set gui_button_bbox_gen_output {} set gui_button_bbox_gen_GerwinML {} set gui_button_bbox_ssql {} set gui_button_bbox_print_ER {} set gui_button_bbox_print_TD {} set earea_pages {"Project"} ;# Edition area pages set output_pages {} ;# Output pages set output_pages_widget {} ;# Widget with the output pages set gui_font {} ;# Global font set fontselwidget {} ;# Widget for the font selection set gerwin_editionarea {} ;# Widget with the notebook for the edition area set gui_entity1 {} ;# First entity in a relation creation set gui_entity2 {} ;# Second entity in a relation creation set gui_concise_view 0 ;# Concise view mean not to show the attributes of the objects set gen_current_relation {} ;############# ;# Gerwin data # ;############# set gerwin_output_formats {} ;# Supported Output formats set gerwin_output_active_format {} ;# currently active Output format ;# set gerwin_output_format_types($format) -> {{t1 pd1} {t2 pd2} ... {tN pdN}} set gerwin_state Editing ;# Actual status of the GUI ;# Inserting entity ;# Inserting relation ;# Inserting label ;# Moving (default) ;# Editing ;# Deletingferret-0.6.orig/src/gm.tcl0000644000175000017500000012716107754162203014137 0ustar fikefike;# gm.tcl -- Gerwin ;# ;# Geometry Manager ;# ;# Copyright (C) 2003 Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 13:33:51 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;################################## ;####### ENTITY ROUTINES ########### ;################################## ;# ;# gm_draw_entity ENTITY XPOS YPOS ;# ;# Draw ENTITY at (XPOS,YPOS) on the canvas proc gm_draw_entity {entity xpos ypos} { global gmainframe global gerwin_entity global gm_entity global gui_concise_view global gcanvas global gfonts ;# Save the original position of the entity set origx $xpos set origy $ypos set userframe [${gmainframe} getframe] ;# Create all the slaves objects set slaves {} ;# The box with the name lappend slaves [${gcanvas} create text \ [expr $xpos + 17] [expr $ypos + 2] \ -anchor nw -text "$entity" -fill blue \ -tag taggroup-Entity-$entity \ -font $gfonts(ercanvas_titles)] lappend slaves [${gcanvas} create rect \ $xpos $ypos \ [expr $xpos + 15] [expr $ypos + 20] \ -tag taggroup-Entity-$entity -fill blue -outline blue] lappend slaves [${gcanvas} create text \ [expr $xpos + 4] [expr $ypos + 4] \ -anchor nw -text "E" -fill white \ -tag taggroup-Entity-$entity \ -font $gfonts(ercanvas_minilabels)] set line_title [${gcanvas} create line \ $xpos [expr $ypos + 20] [expr $xpos + 150] [expr $ypos + 20] \ -tag taggroup-Entity-$entity -fill blue] lappend slaves $line_title lappend to_expand $line_title ;# Draw all the key attributes for the entity set were_keys 0 set i 2 set ypos [expr $ypos + 5] foreach attribute $gerwin_entity($entity,attributes) { if {[gob_entity_is_key $entity [lindex $attribute 0]]} then { set were_keys 1 ;# Get the coords for the new rect set bxi [expr $xpos] set byi [expr $ypos + (($i * 15) - 15)] set bxf [expr $xpos + 150] set byf [expr $ypos + ($i * 15)] ;# Get the coords for the new text set tx [expr $bxi + 2] set ty [expr $byi + 2] ;# Determine the text contents set ttext "${attribute} [gob_entity_get_attribute_domain $entity $attribute]" lappend slaves [${gcanvas} create text $tx $ty -anchor nw \ -text $ttext -tag taggroup-Entity-$entity \ -font $gfonts(ercanvas_default)] incr i } } if {$were_keys} then { ;# Make the separator line set line_key [${gcanvas} create line $xpos $byf $bxf $byf \ -tag taggroup-Entity-$entity] lappend slaves $line_key lappend to_expand $line_key } ;# Draw all the non-key attributes for the entity foreach attribute $gerwin_entity($entity,attributes) { if {! [gob_entity_is_key $entity [lindex $attribute 0]] } then { ;# Get the coords for the new rect set bxi [expr $xpos] set byi [expr $ypos + (($i * 15) - 15)] set bxf [expr $xpos + 150] set byf [expr $ypos + ($i * 15)] ;# Get the coords for the new text set tx [expr $bxi + 2] set ty [expr $byi + 2] set ttext "${attribute} [gob_entity_get_attribute_domain $entity $attribute]" lappend slaves [${gcanvas} create text $tx $ty -anchor nw \ -text $ttext -tag taggroup-Entity-$entity \ -font $gfonts(ercanvas_default)] incr i } } ;# Create the new wgob set gm_entity($entity,grouptag) taggroup-Entity-$entity ;# Get the bbox set ebbox [${gcanvas} bbox taggroup-Entity-$entity] set gm_entity($entity,xpos) [lindex $ebbox 0] set gm_entity($entity,ypos) [lindex $ebbox 1] set gm_entity($entity,xlong) \ [expr [lindex $ebbox 2] - $gm_entity($entity,xpos)] set gm_entity($entity,ylong) \ [expr [lindex $ebbox 3] - $gm_entity($entity,ypos)] ;# Create the surrounding rect lappend slaves [${gcanvas} create rect \ $gm_entity($entity,xpos) $gm_entity($entity,ypos) \ [lindex $ebbox 2] [lindex $ebbox 3] \ -tag $gm_entity($entity,grouptag) -outline blue] set ebbox [${gcanvas} bbox $gm_entity($entity,grouptag)] set gm_entity($entity,xpos) [lindex $ebbox 0] set gm_entity($entity,ypos) [lindex $ebbox 1] set gm_entity($entity,xlong) \ [expr [lindex $ebbox 2] - $gm_entity($entity,xpos)] set gm_entity($entity,ylong) \ [expr [lindex $ebbox 3] - $gm_entity($entity,ypos)] ;# Resize the to_expand lines foreach l $to_expand { set lcoords [${gcanvas} coords $l] set lcoords [lreplace $lcoords 2 2 [lindex $ebbox 2]] ;#set lcoords [lreplace $lcoords 0 0 [lindex $ebbox 0]] ${gcanvas} coords $l $lcoords } ;# Resave the positions set ebbox [${gcanvas} bbox taggroup-Entity-$entity] set gm_entity($entity,xpos) $origx set gm_entity($entity,ypos) $origy ;# Put the slaves into the wgob set gm_entity($entity,slaves) $slaves ;# Bind for moving ${gcanvas} bind $gm_entity($entity,grouptag) {gui_drag %x %y} } ;# ;# gm_delete_entity ENTITY ;# ;# Deletes ENTITY from the canvas proc gm_delete_entity {entity} { global gmainframe global gm_entity global gm_entities global gcanvas set userframe [${gmainframe} getframe] ;# Unbind the movement ${gcanvas} bind $gm_entity($entity,grouptag) {} ;# Delete all the slaves ${gcanvas} delete $gm_entity($entity,grouptag) ;# Free the gm_entity array unset gm_entity($entity,xpos) unset gm_entity($entity,ypos) unset gm_entity($entity,xlong) unset gm_entity($entity,ylong) unset gm_entity($entity,grouptag) unset gm_entity($entity,slaves) set index [lsearch $gm_entities $entity] set gm_entities [lreplace $gm_entities $index $index] } ;# ;# gm_entity_change_name ENTITY NEWNAME ;# ;# Set NEWNAME as the new name for ENTITY proc gm_entity_change_name {entity nname} { global gm_entities global gm_entity ;# Change the name in entities set index [lsearch $gm_entities $entity] set gm_entities [lreplace $gm_entities $index $index $nname] ;# Change the name in entity set temp_slaves $gm_entity($entity,slaves) set temp_grouptag $gm_entity($entity,grouptag) set temp_xpos $gm_entity($entity,xpos) set temp_ypos $gm_entity($entity,ypos) set temp_xlong $gm_entity($entity,xlong) set temp_ylong $gm_entity($entity,ylong) unset gm_entity($entity,slaves) unset gm_entity($entity,grouptag) unset gm_entity($entity,xpos) unset gm_entity($entity,ypos) unset gm_entity($entity,xlong) unset gm_entity($entity,ylong) unset gm_entity($entity,nname) set gm_entity($nname,slaves) $temp_slaves set gm_entity($nname,grouptag) $temp_grouptag set gm_entity($nname,xpos) $temp_xpos set gm_entity($nname,ypos) $temp_ypos set gm_entity($nname,xlong) $temp_xlong set gm_entity($nname,ylong) $temp_ylong set gm_entity($nname,nname) {} } ;################################################## ;############## RELATION ROUTINES ################# ;################################################## ;# ;# gm_draw_relation RELATION XPOS YPOS ;# ;# Draw RELATION at (XPOS,YPOS) on the canvas proc gm_draw_relation {relation xpos ypos} { global gmainframe global gerwin_relation global gm_relation global gcanvas global gfonts #fix moving box :) set origx $xpos set origy $ypos set userframe [${gmainframe} getframe] ;# Create all the slaves objects set slaves {} ;# The box with the name lappend slaves [${gcanvas} create text \ [expr $xpos + 17] [expr $ypos + 2] \ -anchor nw -text "$relation" -fill orange \ -tag taggroup-Relation-$relation \ -font $gfonts(ercanvas_titles)] lappend slaves [${gcanvas} create rect \ $xpos $ypos \ [expr $xpos + 15] [expr $ypos + 20] -fill orange -outline orange \ -tag taggroup-Relation-$relation] lappend slaves [${gcanvas} create text \ [expr $xpos + 4] [expr $ypos + 4] \ -anchor nw -text "R" -fill white \ -tag taggroup-Relation-$relation \ -font $gfonts(ercanvas_minilabels)] set line_title [${gcanvas} create line \ $xpos [expr $ypos + 20] [expr $xpos + 150] [expr $ypos + 20] \ -tag taggroup-Relation-$relation -fill orange] lappend slaves $line_title lappend to_expand $line_title ;# Draw all the existing attributes for the relation set i 2 set ypos [expr $ypos + 5] foreach attribute $gerwin_relation($relation,attributes) { ;# Get the coords for the new rect set bxi [expr $xpos] set byi [expr $ypos + (($i * 15) - 15)] set bxf [expr $xpos + 150] set byf [expr $ypos + ($i * 15)] ;# Get the coords for the new text set tx [expr $bxi + 2] set ty [expr $byi + 2] ;# Determine the text contents set ttext "${attribute} [gob_relation_get_attribute_domain $relation $attribute]" lappend slaves [${gcanvas} create text $tx $ty -anchor nw \ -text $ttext -tag taggroup-Relation-$relation \ -font $gfonts(ercanvas_default)] incr i } ;# Create the new wgob set gm_relation($relation,grouptag) taggroup-Relation-$relation ;# Get the bbox set ebbox [${gcanvas} bbox taggroup-Relation-$relation] set gm_relation($relation,xpos) [lindex $ebbox 0] set gm_relation($relation,ypos) [lindex $ebbox 1] set gm_relation($relation,xlong) \ [expr [lindex $ebbox 2] - $gm_relation($relation,xpos)] set gm_relation($relation,ylong) \ [expr [lindex $ebbox 3] - $gm_relation($relation,ypos)] ;# Create the surrounding rect lappend slaves [${gcanvas} create rect \ $gm_relation($relation,xpos) $gm_relation($relation,ypos) \ [lindex $ebbox 2] [lindex $ebbox 3] \ -tag $gm_relation($relation,grouptag) -outline orange] set ebbox [${gcanvas} bbox $gm_relation($relation,grouptag)] set gm_relation($relation,xpos) [lindex $ebbox 0] set gm_relation($relation,ypos) [lindex $ebbox 1] set gm_relation($relation,xlong) \ [expr [lindex $ebbox 2] - $gm_relation($relation,xpos)] set gm_relation($relation,ylong) \ [expr [lindex $ebbox 3] - $gm_relation($relation,ypos)] ;# Resize to_expand lines foreach l $to_expand { set lcoords [${gcanvas} coords $l] set lcoords [lreplace $lcoords 2 2 [lindex $ebbox 2]] ;#set lcoords [lreplace $lcoords 0 0 [lindex $ebbox 0]] ${gcanvas} coords $l $lcoords } ;# Resave the positions set ebbox [${gcanvas} bbox taggroup-Relation-$relation] set gm_relation($relation,xpos) $origx set gm_relation($relation,ypos) $origy ;# Put the slaves into the wgob set gm_relation($relation,slaves) $slaves ;# Bind for moving ${gcanvas} bind $gm_relation($relation,grouptag) {gui_drag %x %y} } ;# ;# gm_delete_relation RELATION ;# ;# Deletes RELATION from the canvas proc gm_delete_relation {relation} { global gmainframe global gm_relation global gm_relations global gcanvas set userframe [${gmainframe} getframe] ;# Unbind the movement ${gcanvas} bind $gm_relation($relation,grouptag) {} ;# Delete all the slaves ${gcanvas} delete $gm_relation($relation,grouptag) ;# Delete all links from the relation ${gcanvas} delete "taggroup-Link-$relation" ;# Free the gm_relation array unset gm_relation($relation,xpos) unset gm_relation($relation,ypos) unset gm_relation($relation,xlong) unset gm_relation($relation,ylong) unset gm_relation($relation,grouptag) unset gm_relation($relation,slaves) set index [lsearch $gm_relations $relation] set gm_relations [lreplace $gm_relations $index $index] } ;# ;# gm_relation_change_name RELATION NNAME ;# ;# Set NNAME as the new name for RELATION proc gm_relation_change_name {relation nname} { global gm_relations global gm_relation ;# Change the name in relations set index [lsearch $gm_relations $relation] set gm_relations [lreplace $gm_relations $index $index $nname] ;# Change the name in relation set temp_slaves $gm_relation($relation,slaves) set temp_grouptag $gm_relation($relation,grouptag) set temp_xpos $gm_relation($relation,xpos) set temp_ypos $gm_relation($relation,ypos) set temp_xlong $gm_relation($relation,xlong) set temp_ylong $gm_relation($relation,ylong) unset gm_relation($relation,slaves) unset gm_relation($relation,grouptag) unset gm_relation($relation,xpos) unset gm_relation($relation,ypos) unset gm_relation($relation,xlong) unset gm_relation($relation,ylong) set gm_relation($nname,slaves) $temp_slaves set gm_relation($nname,grouptag) $temp_grouptag set gm_relation($nname,xpos) $temp_xpos set gm_relation($nname,ypos) $temp_ypos set gm_relation($nname,xlong) $temp_xlong set gm_relation($nname,ylong) $temp_ylong } ;# ;# gm_relation_update_links_reflexive {relation} ;# ;# Update and redraw all links to the reflexive RELATION proc gm_relation_update_links_reflexive {relation} { global gcanvas global gm_relations global gm_relation global gm_entity ;# Delete old links ${gcanvas} delete "taggroup-Link-$relation" ;# Get the two links set entity1 [lindex [gob_relation_get_entities $relation] 0] set entity2 [lindex [gob_relation_get_entities $relation] 1] set entity [lindex $entity1 0] set card1 [lindex $entity1 1] set card2 [lindex $entity2 1] ;# Draw the two links ;# Get the bboxes for the entity and the relation set bbox_relation [${gcanvas} bbox "taggroup-Relation-$relation"] set bbox_entity [${gcanvas} bbox "taggroup-Entity-$entity"] ;# Obtain the cuads set refpointrx [expr \ [lindex $bbox_relation 0] + \ (([lindex $bbox_relation 2] - [lindex $bbox_relation 0]) / 2)] set refpointry [expr \ [lindex $bbox_relation 1] + \ (([lindex $bbox_relation 3] - [lindex $bbox_relation 1]) / 2)] set refpointex [expr \ [lindex $bbox_entity 0] + \ (([lindex $bbox_entity 2] - [lindex $bbox_entity 0]) / 2)] set refpointey [expr \ [lindex $bbox_entity 1] + \ (([lindex $bbox_entity 3] - [lindex $bbox_entity 1]) / 2)] set cuad_relation_to_entity [gm_get_cuad_reflexive $refpointrx $refpointry \ $refpointex $refpointey] switch $cuad_relation_to_entity { 1 { set cuad_entity_to_relation 3 } 2 { set cuad_entity_to_relation 4 } 3 { set cuad_entity_to_relation 1 } 4 { set cuad_entity_to_relation 2 } } ;# Now, find all the link points switch $cuad_entity_to_relation { 1 { set lpr1-x $gm_relation($relation,xpos) set lpr1-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpr1mid-x $refpointex set lpr1mid-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpe1-x $refpointex set lpe1-y $gm_entity($entity,ypos) set lpr2-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2-y [expr ($gm_relation($relation,ypos) + \ $gm_relation($relation,ylong))] set lpr2mid-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2mid-y $refpointey set lpe2-x [expr ($gm_entity($entity,xpos) + \ $gm_entity($entity,xlong))] set lpe2-y $refpointey } 2 { set lpr1-x [expr ($gm_relation($relation,xpos) + \ $gm_relation($relation,xlong))] set lpr1-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpr1mid-x $refpointex set lpr1mid-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpe1-x $refpointex set lpe1-y $gm_entity($entity,ypos) set lpr2-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2-y [expr ($gm_relation($relation,ypos) + \ $gm_relation($relation,ylong))] set lpr2mid-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2mid-y $refpointey set lpe2-x $gm_entity($entity,xpos) set lpe2-y $refpointey } 3 { set lpr1-x [expr ($gm_relation($relation,xpos) + \ $gm_relation($relation,xlong))] set lpr1-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpr1mid-x $refpointex set lpr1mid-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpe1-x $refpointex set lpe1-y [expr ($gm_entity($entity,ypos) + \ $gm_entity($entity,ylong))] set lpr2-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2-y $gm_relation($relation,ypos) set lpr2mid-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2mid-y $refpointey set lpe2-x $gm_entity($entity,xpos) set lpe2-y $refpointey } 4 { set lpr1-x $gm_relation($relation,xpos) set lpr1-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpr1mid-x $refpointex set lpr1mid-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] set lpe1-x $refpointex set lpe1-y [expr ($gm_entity($entity,ypos) + \ $gm_entity($entity,ylong))] set lpr2-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2-y $gm_relation($relation,ypos) set lpr2mid-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lpr2mid-y $refpointey set lpe2-x [expr ($gm_entity($entity,xpos) + \ $gm_entity($entity,xlong))] set lpe2-y $refpointey } } ;# Draw both links into the canvas ${gcanvas} create line ${lpr1-x} ${lpr1-y} \ ${lpr1mid-x} ${lpr1mid-y} \ -tag "taggroup-Link-$relation" ${gcanvas} create line ${lpr1mid-x} ${lpr1mid-y} \ ${lpe1-x} ${lpe1-y} \ -tag "taggroup-Link-$relation" ${gcanvas} create line ${lpr2-x} ${lpr2-y} \ ${lpr2mid-x} ${lpr2mid-y} \ -tag "taggroup-Link-$relation" ${gcanvas} create line ${lpr2mid-x} ${lpr2mid-y} \ ${lpe2-x} ${lpe2-y} \ -tag "taggroup-Link-$relation" ;# Draw the cardinality on the middle points set card1-x ${lpr1mid-x} set card1-y ${lpr1mid-y} set card2-x ${lpr2mid-x} set card2-y ${lpr2mid-y} ${gcanvas} create text \ ${card1-x} ${card1-y} -anchor nw \ -text "[lindex $card1 0]/[lindex $card1 1]" \ -tag "taggroup-Link-$relation" -fill red ${gcanvas} create text \ ${card2-x} ${card2-y} -anchor nw \ -text "[lindex $card2 0]/[lindex $card2 1]" \ -tag "taggroup-Link-$relation" -fill red ;# Uff! what a fucking chaos here! ;) [jemarch] } ;# ;# gm_relation_update_links RELATION ;# ;# Update and redraw all links to RELATIONs entities proc gm_relation_update_links {relation} { global gcanvas global gm_relations global gm_relation ;# Delete old links ${gcanvas} delete "taggroup-Link-$relation" ;# For each entity foreach e [gob_relation_get_entities $relation] { ;# Get the entity card set entity [lindex $e 0] set card [lindex $e 1] ;# Draw new links gm_draw_link $relation $entity $card } } ;# ;# gm_get_cuad_reflexive BBOX X2 Y2 ;# ;# Obtain the cuad relative to (x2,y2) from BBOX1 (the rectangle) proc gm_get_cuad_reflexive {x1 y1 x2 y2} { if {($x2 >= $x1) && ($y2 < $y1)} then { return 1 } if {($x2 >= $x1) && ($y2 >= $y1)} then { return 4 } if {($x2 < $x1) && ($y2 < $y1)} then { return 2 } if {($x2 < $x1) && ($y2 >= $y1)} then { return 3 } } ;# ;# gm_get_cuad BBOX X2 Y2 ;# ;# Obtain the (irregular) cuad relative to (x2,y2) from BBOX1 (the rectangle) proc gm_get_cuad {x1 y1 x2 y2} { # if {($x2 >= $x1) && ($y2 < $y1)} then { # return 1 # } # if {($x2 >= $x1) && ($y2 >= $y1)} then { # return 4 # } # if {($x2 < $x1) && ($y2 < $y1)} then { # return 2 # } # if {($x2 < $x1) && ($y2 >= $y1)} then { # return 3 # } ;# Solve the trivial cases if {($x2 == $x1)} then { if {$y2 >= $y1} then { return 4 } if {$y2 < $y1} then { return 2 } } ;# Calculate the pend of the rect (x1,y1)-(x2,y2) set pend [expr ((${y2}.0 - ${y1}.0) / (${x2}.0 - ${x1}.0))] ;# Determine the cuad (really the side) if {($pend >= 0.5)} then { if {$x2 > $x1} then { return 4 } if {$x2 < $x1} then { return 2 } } if {($pend < -0.5)} then { if {$x2 > $x1} then { return 2 } if {$x2 < $x1} then { return 4 } } if {$x2 > $x1} then { return 1 } if {$x2 < $x1} then { return 3 } } ;# ;# gm_draw_link RELATION ENTITY CARD ;# ;# Draw a link from RELATION to ENTITY on the canvas, with CARD proc gm_draw_link {relation entity card} { global gm_relation global gm_entity global gcanvas ;# Get the bboxes for the entity and the relation set bbox_relation [${gcanvas} bbox "taggroup-Relation-$relation"] set bbox_entity [${gcanvas} bbox "taggroup-Entity-$entity"] ;# Obtain the cuads ;# We use the botton-right points of the rectangles for that. ;# Question: Perhaps would be better to use the middle point? [jemarch] ;# Answer: yes! done! [jemarch] set refpointrx [expr \ [lindex $bbox_relation 0] + \ (([lindex $bbox_relation 2] - [lindex $bbox_relation 0]) / 2)] set refpointry [expr \ [lindex $bbox_relation 1] + \ (([lindex $bbox_relation 3] - [lindex $bbox_relation 1]) / 2)] set refpointex [expr \ [lindex $bbox_entity 0] + \ (([lindex $bbox_entity 2] - [lindex $bbox_entity 0]) / 2)] set refpointey [expr \ [lindex $bbox_entity 1] + \ (([lindex $bbox_entity 3] - [lindex $bbox_entity 1]) / 2)] set cuad_relation_to_entity [gm_get_cuad $refpointrx $refpointry \ $refpointex $refpointey] switch $cuad_relation_to_entity { 1 { set cuad_entity_to_relation 3 } 2 { set cuad_entity_to_relation 4 } 3 { set cuad_entity_to_relation 1 } 4 { set cuad_entity_to_relation 2 } } ;# Now, find the link points ;# Get the link point of the relation switch $cuad_relation_to_entity { 1 { set lprelation-x [expr ($gm_relation($relation,xpos) + \ $gm_relation($relation,xlong))] set lprelation-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] } 2 { set lprelation-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lprelation-y $gm_relation($relation,ypos) } 3 { set lprelation-x $gm_relation($relation,xpos) set lprelation-y [expr ($gm_relation($relation,ypos) + \ ($gm_relation($relation,ylong) / 2))] } 4 { set lprelation-x [expr ($gm_relation($relation,xpos) + \ ($gm_relation($relation,xlong) / 2))] set lprelation-y [expr ($gm_relation($relation,ypos) + \ $gm_relation($relation,ylong))] } } ;# Get the link point of the entity switch $cuad_entity_to_relation { 1 { set lpentity-x [expr ($gm_entity($entity,xpos) + \ $gm_entity($entity,xlong))] set lpentity-y [expr ($gm_entity($entity,ypos) + \ ($gm_entity($entity,ylong) / 2))] } 2 { set lpentity-x [expr ($gm_entity($entity,xpos) + \ ($gm_entity($entity,xlong) / 2))] set lpentity-y $gm_entity($entity,ypos) } 3 { set lpentity-x $gm_entity($entity,xpos) set lpentity-y [expr ($gm_entity($entity,ypos) + \ ($gm_entity($entity,ylong) / 2))] } 4 { set lpentity-x [expr ($gm_entity($entity,xpos) + \ ($gm_entity($entity,xlong) / 2))] set lpentity-y [expr ($gm_entity($entity,ypos) + \ $gm_entity($entity,ylong))] } } ;# Ok, now we have both link points: ;# ;# (lprelation-x,lprelation-y) and (lpentity-x,lpentity-y) ;# Draw the link itself into the canvas ${gcanvas} create line ${lprelation-x} ${lprelation-y} \ ${lpentity-x} ${lpentity-y} \ -tag "taggroup-Link-$relation" ;# Draw the cardinality set card-x [expr (${lpentity-x} + ((${lprelation-x} - ${lpentity-x}) / 2))] set card-y [expr (${lpentity-y} + ((${lprelation-y} - ${lpentity-y}) / 2))] ${gcanvas} create text \ ${card-x} ${card-y} -anchor nw \ -text \ "[gob_relation_get_entity_min_card $relation $entity]/[gob_relation_get_entity_max_card $relation $entity]" \ -tag "taggroup-Link-$relation" -fill red } ;################################################## ;############## FLYING KEYS ROUTINES ############## ;################################################## ;# ;# gm_draw_flkey FROMTABLE TOTABLE KEYLIST XPOS YPOS ;# ;# Draw a flying key proc gm_draw_flkey {fromtable totable keylist xpos ypos} { global gmainframe global gerwin_table global gm_table global gcanvas_td set userframe [${gmainframe} getframe] ;# Create all slaves objects set slaves {} ;# The box with the name lappend slaves [${gcanvas_td} create text \ [expr $xpos + 17] [expr $ypos + 2] \ -anchor nw -text "$keylist" -fill darkgreen \ -tag taggroup-Flkey-$fromtable-$totable] ;# Get the bbox set ebbox [${gcanvas_td} bbox taggroup-Flkey-$fromtable-$totable] ;# Create the surrounding rect lappend slaves [${gcanvas_td} create rect \ $xpos $ypos \ [lindex $ebbox 2] [lindex $ebbox 3] \ -tag taggroup-Flkey-$fromtable-$totable -outline darkgreen] ;# Bind for moving ${gcanvas_td} bind taggroup-Flkey-$fromtable-$totable {gui_drag_td %x %y} ;# Bind for marking ${gcanvas_td} bind taggroup-Flkey-$fromtable-$totable } ;################################################## ;############## TABLE ROUTINES ################### ;################################################## ;# ;# gm_draw_table TABLE XPOS YPOS ;# ;# Draw TABLE at (XPOS,YPOS) on the TD canvas proc gm_draw_table {table xpos ypos} { global gmainframe global gerwin_table global gm_table global gcanvas_td set userframe [${gmainframe} getframe] ;# Create all slaves objects set slaves {} ;# The box with the name lappend slaves [${gcanvas_td} create text \ [expr $xpos + 17] [expr $ypos + 2] \ -anchor nw -text "$table" -fill violet \ -tag taggroup-Table-$table] lappend slaves [${gcanvas_td} create rect \ $xpos $ypos \ [expr $xpos + 15] [expr $ypos + 20] \ -tag taggroup-Table-$table -fill violet -outline violet] lappend slaves [${gcanvas_td} create text \ [expr $xpos + 4] [expr $ypos + 4] \ -anchor nw -text "T" -fill white \ -tag taggroup-Table-$table] set line_title [${gcanvas_td} create line \ $xpos [expr $ypos + 20] [expr $xpos + 150] [expr $ypos + 20] \ -tag taggroup-Table-$table -fill violet] lappend slaves $line_title lappend to_expand $line_title ;# Draw all the key attributes for the table set were_keys 0 set i 2 set ypos [expr $ypos + 5] foreach attribute $gerwin_table($table,attributes) { if {[gob_table_is_key $table [lindex $attribute 0]]} then { set were_keys 1 ;# Get the coords for the new rect set bxi [expr $xpos] set byi [expr $ypos + (($i * 15) - 15)] set bxf [expr $xpos + 150] set byf [expr $ypos + ($i * 15)] ;# Get the coords for the new text set tx [expr $bxi + 2] set ty [expr $byi + 2] ;# Determine the text contents set ttext "[lindex ${attribute} 0] [gob_table_get_attribute_domain $table [lindex $attribute 0]]" ;# See if we must to insert the NON NULL if {! [gob_table_get_attribute_null $table [lindex $attribute 0]] } then { lappend ttext "NOT_NULL" } lappend slaves [${gcanvas_td} create text $tx $ty -anchor nw \ -text $ttext -tag taggroup-Table-$table] incr i } } if {$were_keys} then { ;# Make the separator line set line_key [${gcanvas_td} create line $xpos $byf $bxf $byf \ -tag taggroup-Table-$table] lappend slaves $line_key lappend to_expand $line_key } ;# Draw all the non-key attributes for the table foreach attribute $gerwin_table($table,attributes) { if {! [gob_table_is_key $table [lindex $attribute 0]] } then { ;# Get the coords for the new rect set bxi [expr $xpos] set byi [expr $ypos + (($i * 15) - 15)] set bxf [expr $xpos + 150] set byf [expr $ypos + ($i * 15)] ;# Get the coords for the new text set tx [expr $bxi + 2] set ty [expr $byi + 2] set ttext "[lindex ${attribute} 0] [gob_table_get_attribute_domain $table [lindex $attribute 0]]" ;# See if we must to insert the NON NULL if {! [gob_table_get_attribute_null $table [lindex $attribute 0]] } then { lappend ttext "NOT_NULL" } lappend slaves [${gcanvas_td} create text $tx $ty -anchor nw \ -text $ttext -tag taggroup-Table-$table] incr i } } ;# Create the new wgob set gm_table($table,grouptag) taggroup-Table-$table ;# Get the bbox set ebbox [${gcanvas_td} bbox taggroup-Table-$table] set gm_table($table,xpos) [lindex $ebbox 0] set gm_table($table,ypos) [lindex $ebbox 1] set gm_table($table,xlong) \ [expr [lindex $ebbox 2] - $gm_table($table,xpos)] set gm_table($table,ylong) \ [expr [lindex $ebbox 3] - $gm_table($table,ypos)] ;# Create the surrounding rect lappend slaves [${gcanvas_td} create rect \ $gm_table($table,xpos) $gm_table($table,ypos) \ [lindex $ebbox 2] [lindex $ebbox 3] \ -tag $gm_table($table,grouptag) -outline violet] ;# Another time, get the bbox set ebbox [${gcanvas_td} bbox $gm_table($table,grouptag)] set gm_table($table,xpos) [lindex $ebbox 0] set gm_table($table,ypos) [lindex $ebbox 1] set gm_table($table,xlong) \ [expr [lindex $ebbox 2] - $gm_table($table,xpos)] set gm_table($table,ylong) \ [expr [lindex $ebbox 3] - $gm_table($table,ypos)] ;# Resize to expand lines foreach l $to_expand { set lcoords [${gcanvas_td} coords $l] set lcoords [lreplace $lcoords 2 2 [lindex $ebbox 2]] ${gcanvas_td} coords $l $lcoords } ;# Resave the positions set ebbox [${gcanvas_td} bbox taggroup-Table-$table] set gm_table($table,xpos) [lindex $ebbox 0] set gm_table($table,ypos) [lindex $ebbox 1] ;# Put the slaves into the wgob set gm_table($table,slaves) $slaves ;# Bind for moving ${gcanvas_td} bind $gm_table($table,grouptag) {gui_drag_td %x %y} ;# Bind for marking ${gcanvas_td} bind $gm_table($table,grouptag) } ;# ;# gm_delete_table TABLE ;# ;# Removes TABLE from the TD canvas proc gm_delete_table {table} { global gmainframe global gm_table global gm_tables global gcanvas_td set userframe [${gmainframe} getframe] ;# Unbind the movement ${gcanvas_td} bind $gm_table($table,grouptag) {} ;# Delete all the slaves ${gcanvas_td} delete $gm_table($table,grouptag) ;# Dree the gm_table array entry for table unset gm_table($table,xpos) unset gm_table($table,ypos) unset gm_table($table,xlong) unset gm_table($table,ylong) unset gm_table($table,grouptag) unset gm_table($table,slaves) set index [lsearch $gm_tables $table] set gm_tables [lreplace $gm_tables $index $index] ;# Delete all the table's links ${gcanvas_td} delete "taggroup-Link-$table" ;#gm_delete_flkey } ;# ;# gm_table_update_links TABLE [XPOS YPOS] ;# ;# Update and redraw all links to related tables ;# proc gm_table_update_links {table} { global gcanvas_td global gm_tables global gm_table global gerwin_table global gm_managed global gm_flkey ;# Delete old links foreach t [gob_table_get_foreign_keys $table] { set rtable [lindex $t 1] ;#${gcanvas_td} delete "taggroup-Flkey-$rtable-$table" ${gcanvas_td} delete "taggroup-Flkey-link-$rtable-$table" } ;# For each foreign key foreach t [gob_table_get_foreign_keys $table] { set rtable [lindex $t 1] set rattribute [lindex $t 0] lappend rattributes($rtable) $rattribute } ;# For each rtable foreach rtable [array names rattributes] { ;# Draw the new link if the rtable is not the table if {$rtable != $table} then { gm_draw_link_td $table $rtable $rattributes($rtable) } } ;# Then, for each referring table foreach t $gerwin_table($table,rtables) { ;# Update the links if table is not rtable if {$t != $table} then { ;# Update the managed list if {[lsearch $gm_managed $t] == -1} then { lappend gm_managed $table gm_table_update_links $t } } } ;# Clear the managed list set gm_managed {} } ;# ;# gob_draw_link_td TABLE RTABLE RATTRIBUTES ;# ;# Draw a link from RTABLE to TABLE with RATTRIBUTES (a list with the labels) proc gm_draw_link_td {table rtable rattributes} { global gm_table global gcanvas_td global gm_flkey ;# Get the bboxes for both tables set bbox_table [${gcanvas_td} bbox "taggroup-Table-$table"] set bbox_rtable [${gcanvas_td} bbox "taggroup-Table-$rtable"] ;# Decompose it into single variables set t_x [lindex $bbox_table 0] set t_y [lindex $bbox_table 1] set tr_x [lindex $bbox_rtable 0] set tr_y [lindex $bbox_rtable 1] ;# Draw the flying key ;# Make the label set le [llength $rattributes] set i 1 set ltext {} foreach lname $rattributes { ;# Transform any 'object%attribute' to 'attribute' if {[regexp \% $lname]} then { regsub {.+%(.+)} $lname "\\1" lname } if {$i == $le} then { if {! [info exists ${lname}]} then { lappend ltext "${lname}" set ${lname} lala } } else { if {! [info exists ${lname}]} then { lappend ltext "${lname}," } } incr i } ;# Create the new flkey, if it do not exist if {! [gm_flkey_exist $rtable $table]} then { gm_flkey_create $rtable $table } ;# Draw the rattribute, according with the new or old status of the flkey if {([gm_flkey_get_xpos $rtable $table] == -1) && ([gm_flkey_get_ypos $rtable $table] == -1)} then { set {rattr_x} [expr (${t_x} + ((${tr_x} - ${t_x}) / 2))] set {rattr_y} [expr (${t_y} + ((${tr_y} - ${t_y}) / 2))] set drawit 1 ;# Update the new coordinates gm_flkey_set_xpos $rtable $table ${rattr_x} gm_flkey_set_ypos $rtable $table ${rattr_y} } else { ;# Put it on $xpos and $ypos set {rattr_x} [gm_flkey_get_xpos $rtable $table] set {rattr_y} [gm_flkey_get_ypos $rtable $table] set drawit 0 } if {$drawit} then { if {[info exist gm_flkey("$table-$rtable",xpos)]} then { ;# Get the bounding box of the inverse flkey set bbox_iflkey [${gcanvas_td} bbox "taggroup-Flkey-$table-$rtable"] set iflk1_x [lindex $bbox_iflkey 0] set iflk1_y [lindex $bbox_iflkey 1] set iflk2_x [lindex $bbox_iflkey 2] set iflk2_y [lindex $bbox_iflkey 3] ;# We determine rattr_x and rattr_y depending of the relative position of the ;# iflkey. ;# ;# Such relative position can be obtained from the relative cuads of the two involving tables. ;# Obtain the relative quad from RTABLE to TABLE set refpointtx [expr \ [lindex $bbox_table 0] + \ (([lindex $bbox_table 2] - [lindex $bbox_table 0]) / 2)] set refpointty [expr \ [lindex $bbox_table 1] + \ (([lindex $bbox_table 3] - [lindex $bbox_table 1]) / 2)] set refpointrtx [expr \ [lindex $bbox_rtable 0] + \ (([lindex $bbox_rtable 2] - [lindex $bbox_rtable 0]) / 2)] set refpointrty [expr \ [lindex $bbox_rtable 1] + \ (([lindex $bbox_rtable 3] - [lindex $bbox_rtable 1]) / 2)] set cuad_table_to_rtable [gm_get_cuad $refpointtx $refpointty \ $refpointrtx $refpointrty] ;# If cuad_table_to_rtable is 1 or 3, then put the new flkey behind the last if {($cuad_table_to_rtable == 1) || ($cuad_table_to_rtable == 3)} then { set rattr_x $iflk1_x set rattr_y [expr $iflk2_y + 20] } else { ;# If cuad_table_to_rtable is 2 or 4, then put the new flkey at the right of the last set rattr_x [expr $iflk2_x + 20] set rattr_y ${iflk1_y} } } gm_draw_flkey $rtable $table $ltext ${rattr_x} ${rattr_y} } ;# Obtain the Flkey bounding box set bbox_flkey [${gcanvas_td} bbox "taggroup-Flkey-$rtable-$table"] ;# Decompose it into simple variables set fl_x [lindex $bbox_flkey 0] set fl_y [lindex $bbox_flkey 1] ;# ;# Get the link points from TABLE to the FLKEY ;# ;# ;# Obtain the cuads set refpointtx [expr \ [lindex $bbox_table 0] + \ (([lindex $bbox_table 2] - [lindex $bbox_table 0]) / 2)] set refpointty [expr \ [lindex $bbox_table 1] + \ (([lindex $bbox_table 3] - [lindex $bbox_table 1]) / 2)] set refpointflx [expr \ [lindex $bbox_flkey 0] + \ (([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0]) / 2)] set refpointfly [expr \ [lindex $bbox_flkey 1] + \ (([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]) / 2)] set cuad_table_to_flkey [gm_get_cuad $refpointtx $refpointty \ $refpointflx $refpointfly] switch $cuad_table_to_flkey { 1 { set cuad_flkey_to_table 3 } 2 { set cuad_flkey_to_table 4 } 3 { set cuad_flkey_to_table 1 } 4 { set cuad_flkey_to_table 2 } } ;# Get the link point for the table switch $cuad_table_to_flkey { 1 { set lptable-x [expr ($gm_table($table,xpos) + \ $gm_table($table,xlong))] set lptable-y [expr ($gm_table($table,ypos) + \ ($gm_table($table,ylong) / 2))] } 2 { set lptable-x [expr ($gm_table($table,xpos) + \ ($gm_table($table,xlong) / 2))] set lptable-y $gm_table($table,ypos) } 3 { set lptable-x $gm_table($table,xpos) set lptable-y [expr ($gm_table($table,ypos) + \ ($gm_table($table,ylong) / 2))] } 4 { set lptable-x [expr ($gm_table($table,xpos) + \ ($gm_table($table,xlong) / 2))] set lptable-y [expr ($gm_table($table,ypos) + \ $gm_table($table,ylong))] } } ;# Get the link point for the flkey switch $cuad_flkey_to_table { 1 { set lpflkey-x [expr [lindex $bbox_flkey 0] + \ ([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0])] set lpflkey-y [expr [lindex $bbox_flkey 1] + \ (([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]) / 2)] } 2 { set lpflkey-x [expr [lindex $bbox_flkey 0] + \ (([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0]) / 2)] set lpflkey-y [lindex $bbox_flkey 1] } 3 { set lpflkey-x [lindex $bbox_flkey 0] set lpflkey-y [expr ([lindex $bbox_flkey 1] + \ (([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]) / 2))] } 4 { set lpflkey-x [expr ([lindex $bbox_flkey 0] + \ (([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0]) / 2))] set lpflkey-y [expr ([lindex $bbox_flkey 1] + \ ([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]))] } } ;# ;# Get the link points from RTABLE to the FLKEY ;# ;# ;# Obtain the cuads set refpointtx [expr \ [lindex $bbox_rtable 0] + \ (([lindex $bbox_rtable 2] - [lindex $bbox_rtable 0]) / 2)] set refpointty [expr \ [lindex $bbox_rtable 1] + \ (([lindex $bbox_rtable 3] - [lindex $bbox_rtable 1]) / 2)] set refpointflx [expr \ [lindex $bbox_flkey 0] + \ (([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0]) / 2)] set refpointfly [expr \ [lindex $bbox_flkey 1] + \ (([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]) / 2)] set cuad_rtable_to_flkey [gm_get_cuad $refpointtx $refpointty \ $refpointflx $refpointfly] switch $cuad_rtable_to_flkey { 1 { set cuad_flkey_to_rtable 3 } 2 { set cuad_flkey_to_rtable 4 } 3 { set cuad_flkey_to_rtable 1 } 4 { set cuad_flkey_to_rtable 2 } } ;# Get the link point for the rtable switch $cuad_rtable_to_flkey { 1 { set lprtable-x [expr ($gm_table($rtable,xpos) + \ $gm_table($rtable,xlong))] set lprtable-y [expr ($gm_table($rtable,ypos) + \ ($gm_table($rtable,ylong) / 2))] } 2 { set lprtable-x [expr ($gm_table($rtable,xpos) + \ ($gm_table($rtable,xlong) / 2))] set lprtable-y $gm_table($rtable,ypos) } 3 { set lprtable-x $gm_table($rtable,xpos) set lprtable-y [expr ($gm_table($rtable,ypos) + \ ($gm_table($rtable,ylong) / 2))] } 4 { set lprtable-x [expr ($gm_table($rtable,xpos) + \ ($gm_table($rtable,xlong) / 2))] set lprtable-y [expr ($gm_table($rtable,ypos) + \ $gm_table($rtable,ylong))] } } ;# Get the link point for the flkey switch $cuad_flkey_to_rtable { 1 { set lpflkey2-x [expr [lindex $bbox_flkey 0] + \ ([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0])] set lpflkey2-y [expr [lindex $bbox_flkey 1] + \ (([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]) / 2)] } 2 { set lpflkey2-x [expr [lindex $bbox_flkey 0] + \ (([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0]) / 2)] set lpflkey2-y [lindex $bbox_flkey 1] } 3 { set lpflkey2-x [lindex $bbox_flkey 0] set lpflkey2-y [expr ([lindex $bbox_flkey 1] + \ (([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]) / 2))] } 4 { set lpflkey2-x [expr ([lindex $bbox_flkey 0] + \ (([lindex $bbox_flkey 2] - [lindex $bbox_flkey 0]) / 2))] set lpflkey2-y [expr ([lindex $bbox_flkey 1] + \ ([lindex $bbox_flkey 3] - [lindex $bbox_flkey 1]))] } } ;# Draw the link itself into the canvas ${gcanvas_td} create line ${lprtable-x} ${lprtable-y} \ ${lpflkey2-x} ${lpflkey2-y} \ -tag "taggroup-Flkey-link-$rtable-$table" ${gcanvas_td} create line ${lptable-x} ${lptable-y} \ ${lpflkey-x} ${lpflkey-y} \ -tag "taggroup-Flkey-link-$rtable-$table" -arrow first } ;# ;# gm_flkey_create RTABLE TABLE ;# ;# Creates a new flkey on the system, from RTABLE to TABLE ;# proc gm_flkey_create {rtable table} { global gm_flkey ;# See if the flkey already exist on the system if {[gm_flkey_exist $rtable $table]} then { return } ;# Ok, create the new rtable ;# On (-1, -1), by default set gm_flkey("$rtable-$table",xpos) -1 set gm_flkey("$rtable-$table",ypos) -1 ;# Done. } ;# ;# gm_flkey_exist RTABLE TABLE ;# ;# Return 1 if RTABLE-TABLE exist on the system ;# Return 0 else. proc gm_flkey_exist {rtable table} { global gm_flkey return [info exist gm_flkey("$rtable-$table",xpos)] } ;# ;# gm_flkey_get_xpos RTABLE TABLE ;# ;# Return the x position for RTABLE-TABLE proc gm_flkey_get_xpos {rtable table} { global gm_flkey ;# FIXME: no checking at all here! return $gm_flkey("$rtable-$table",xpos) } ;# ;# gm_flkey_get_ypos RTABLE TABLE ;# ;# Return the y position for RTABLE-TABLE proc gm_flkey_get_ypos {rtable table} { global gm_flkey ;# FIXME: no checking at all here! return $gm_flkey("$rtable-$table",ypos) } ;# ;# gm_flkey_set_xpos RTABLE TABLE XPOS ;# ;# Set a new position x for RTABLE-TABLE proc gm_flkey_set_xpos {rtable table xpos} { global gm_flkey ;# FIXME: no checking at all here! set gm_flkey("$rtable-$table",xpos) $xpos } ;# ;# gm_flkey_set_ypos RTABLE TABLE YPOS ;# ;# Set a new position y for RTABLE-TABLE proc gm_flkey_set_ypos {rtable table ypos} { global gm_flkey ;# FIXME: no checking at all here! set gm_flkey("$rtable-$table",ypos) $ypos } ;# ;# gm_delete_flkey TABLE ;# ;# Deletes all flkeys on which TABLE appears. proc gm_delete_flkey {table} { FIXME "implement gm_delete_flkey" }ferret-0.6.orig/src/gob.tcl0000644000175000017500000007272607741225411014306 0ustar fikefike;# gob.tcl -- Gerwin ;# ;# Gerwin-objects implementation ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-07-10 19:01:18 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;#################################### ;########## GOB LABEL ############### ;#################################### ;# ;# gob_create_label TEXT FONT ;# ;# Creates a new label containing TEXT with FONT proc gob_create_label {text font} { global gerwin_labels global gerwin_label global gerwin_label_seq ;# Get a new name for the label set nname [gob_label_get_new_name] lappend gerwin_labels $nname set gerwin_label($nname,text) $text set gerwin_label($nname,font) $font } ;# ;# gob_destroy_label LABEL ;# ;# Destroy LABEL proc gob_destroy_label {label} { global gerwin_labels global gerwin_label ;# Manage gerwin_labels set index [lsearch $gerwin_labels] set gerwin_labels [lreplace $gerwin_labels $index $index] ;# Manage gerwin_label unset gerwin_label($label,text) unset gerwin_label($label,font) } ;# ;# gob_label_get_new_name ;# ;# Return a new unique name for a label proc gob_label_get_new_name {} { global gerwin_label_seq set name label$gerwin_label_seq incr gerwin_label_seq return $name } ;#################################### ;########## GOB ENTITY ############## ;#################################### ;# ;# gob_create_entity NAME ATTRIBUTES KEY RELATIONS ;# ;# Creates a new entity into the system proc gob_create_entity {name attributes key relations} { global gerwin_entities global gerwin_entity ;# See if already exist an entity named NAME if {[gob_entity_exist $name]} then { gui_notice "Entity $name already exist." return } ;# OK, create the new entity lappend gerwin_entities $name set gerwin_entity($name,attributes) $attributes set gerwin_entity($name,key) $key set gerwin_entity($name,relations) $relations } ;# ;# gob_entity_change_relation_name ENTITY RELATION NNAME ;# ;# RELATION is now called NNAME... proc gob_entity_change_relation_name {entity relation nname} { global gerwin_entity set relations $gerwin_entity($entity,relations) set index [lsearch $relations $relation] set relations [lreplace $relations $index $index $nname] set gerwin_entity($entity,relations) $relations } ;# ;# gob_entity_add_relation ENTITY RELATION ;# ;# Add RELATION to ENTITYs relations set proc gob_entity_add_relation {entity relation} { global gerwin_entity lappend gerwin_entity($entity,relations) $relation } ;# ;# gob_entity_delete_relation ENTITY RELATION ;# ;# Deletes RELATION from ENTITYs relation set proc gob_entity_delete_relation {entity relation} { global gerwin_entity set relations $gerwin_entity($entity,relations) set index [lsearch $relations $relation] set relations [lreplace $relations $index $index] set gerwin_entity($entity,relations) $relations } ;# ;# gob_entity_get_relations ENTITY ;# ;# Return a list with all relations of ENTITY proc gob_entity_get_relations {entity} { global gerwin_entity return $gerwin_entity($entity,relations) } ;# ;# gob_delete_entity ENTITY ;# ;# Destroys the GOB ENTITY object proc gob_delete_entity {entity} { global gerwin_entities global gerwin_entity unset gerwin_entity($entity,attributes) unset gerwin_entity($entity,key) set index [lsearch $gerwin_entities $entity] set gerwin_entities [lreplace $gerwin_entities $index $index] } ;# ;# gob_entity_add_attribute NAME ATTRIBUTE DOMAIN ;# ;# Add ATTRIBUTE to the attributes set for NAME proc gob_entity_add_attribute {name attribute domain} { global gerwin_entity ;# See if attribute already exist into the entity if {[gob_entity_attribute_exist $name $attribute]} then { gui_notice "Attribute $attribute already exist in $name" return } ;# OK, add the attribute set temp $gerwin_entity($name,attributes) lappend temp [list $attribute $domain] set gerwin_entity($name,attributes) $temp } ;# ;# gob_entity_set_attribute_domain ENTITY ATTRIBUTE DOMAIN ;# ;# Set DOMAIN as the new domain for ATTRIBUTE, in ENTITY proc gob_entity_set_attribute_domain {entity attribute domain} { global gerwin_entity set attributes $gerwin_entity($entity,attributes) ;# Replace the old entry with the newer one set index [lsearch -glob $attributes "$attribute *"] set attributes [lreplace $attributes $index $index [list $attribute $domain]] set gerwin_entity($entity,attributes) $attributes } ;# ;# gob_entity_exist NAME ;# ;# Return 1 if NAME is an entity. ;# Return 0 else. proc gob_entity_exist {name} { global gerwin_entities if {[lsearch $gerwin_entities $name] == -1} then { return 0 } else { return 1 } } ;# ;# gob_entity_attribute_exist ENTITY ATTRIBUTE ;# ;# Return 1 if ATTRIBUTE exist in ENTITY ;# Return 0 else. proc gob_entity_attribute_exist {entity attribute} { global gerwin_entity set attributes $gerwin_entity($entity,attributes) if {[lsearch -glob $attributes "$attribute *"] == -1} then { return 0 } else { return 1 } } ;# ;# gob_entity_get_attributes ENTITY ;# ;# Return a list with all ENTITY's attributes names proc gob_entity_get_attributes {entity} { global gerwin_entity return $gerwin_entity($entity,attributes) } ;# ;# gob_entity_get_attribute_domain ENTITY ATTRIBUTE ;# ;# Return the domain of ATTRIBUTE, from ENTITY proc gob_entity_get_attribute_domain {entity attribute} { global gerwin_entity set attributes $gerwin_entity($entity,attributes) set index [lsearch -glob $attributes "$attribute *"] return [lindex [lindex $attributes $index] 1] } ;# ;# gob_entity_add_attribute_to_key ENTITY ATTRIBUTE ;# ;# Add ATTRIBUTE to be part of the key of ENTITY proc gob_entity_add_attribute_to_key {entity attribute} { global gerwin_entity ;# Get the actual key set akey $gerwin_entity($entity,key) ;# Add the new attribute lappend akey $attribute ;# Set the new key set gerwin_entity($entity,key) $akey } ;# ;# gob_entity_delete_attribute_from_key ENTITY ATTRIBUTE ;# ;# Delete ATTRIBUTE from ENTITY's key proc gob_entity_delete_attribute_from_key {entity attribute} { global gerwin_entity ;# Get the actual key set akey $gerwin_entity($entity,key) ;# Find the attribute to delete set index [lsearch $akey $attribute] ;# Remove the attribute set akey [lreplace $akey $index $index] ;# Set the new key set gerwin_entity($entity,key) $akey } ;# ;# gob_entity_get_key ENTITY ;# ;# Return the ENTITY's key proc gob_entity_get_key {entity} { global gerwin_entity return $gerwin_entity($entity,key) } ;# ;# gob_entity_is_key ENTITY ATTRIBUTE ;# ;# Return 1 if ATTRIBUTE is in ENTITY's key ;# Return 0 else proc gob_entity_is_key {entity attribute} { global gerwin_entity if {[lsearch $gerwin_entity($entity,key) $attribute] == -1} then { return 0 } else { return 1 } } ;# ;# gob_entity_get_num_attributes ENTITY ;# ;# Return the number of attributes of ENTITY proc gob_entity_get_num_attributes {entity} { global gerwin_entity return [llength $gerwin_entity($entity,attributes)] } ;# ;# gob_entity_delete_attribute ENTITY ATTRIBUTE ;# ;# Deletes ATTRIBUTE from ENTITY ;# Of course, if ATTRIBUTE is in the key, then it is also removed from the key proc gob_entity_delete_attribute {entity attribute} { global gerwin_entity set attributes $gerwin_entity($entity,attributes) set index [lsearch -glob $attributes "$attribute *"] set attributes [lreplace $attributes $index $index] set gerwin_entity($entity,attributes) $attributes ;# Process the key if {[gob_entity_is_key $entity $attribute]} then { gob_entity_delete_attribute_from_key $entity $attribute } } ;# ;# gob_entity_change_name ENTITY NEWNAME ;# ;# Set NEWNAME as the new name for ENTITY proc gob_entity_change_name {entity nname} { global gerwin_entities global gerwin_entity global gerwin_relation ;# Change the name in entities set index [lsearch $gerwin_entities $entity] set gerwin_entities [lreplace $gerwin_entities $index $index $nname] ;# Change the name in entity set temp_attributes $gerwin_entity($entity,attributes) set temp_key $gerwin_entity($entity,key) set temp_relations $gerwin_entity($entity,relations) unset gerwin_entity($entity,attributes) unset gerwin_entity($entity,key) unset gerwin_entity($entity,relations) set gerwin_entity($nname,attributes) $temp_attributes set gerwin_entity($nname,key) $temp_key set gerwin_entity($nname,relations) $temp_relations ;# Change from $entity to $nname in all the relations foreach r [gob_entity_get_relations $nname] { if {$gerwin_relation($r,reflexive)} then { ;# Reflexive relation gob_relation_change_entity_name_reflexive $r $nname } else { gob_relation_change_entity_name $r $entity $nname } } } ;#################################### ;########## GOB RELATION ############ ;#################################### ;# ;# gob_create_relation NAME ENTITIES-CARDS ATTRIBUTES ;# ;# Creates a new relation into the system proc gob_create_relation {name entities attributes} { global gerwin_relations global gerwin_relation ;# See if already exist a relation named NAME if {[gob_relation_exist $name]} then { gui_notice "Relation $name already exist." return } ;# Ok, create the new relation lappend gerwin_relations $name set gerwin_relation($name,entities) $entities set gerwin_relation($name,attributes) $attributes set gerwin_relation($name,reflexive) 0 ;# Not by default } ;# ;# gob_relation_exist NAME ;# ;# Return 1 if NAME is a relation ;# Return 0 else. proc gob_relation_exist {name} { global gerwin_relations if {[lsearch $gerwin_relations $name] == -1} then { return 0 } else { return 1 } } ;# ;# gob_relation_add_attribute NAME ATTRIBUTE DOMAIN ;# ;# Add ATTRIBUTE to the attributes set for NAME proc gob_relation_add_attribute {name attribute domain} { global gerwin_relation ;# See if attribute already exist into the relation if {[gob_relation_attribute_exist $name $attribute]} then { gui_notice "Attribute $attribute already exist in $name" return } ;# Ok, add the attribute set temp $gerwin_relation($name,attributes) lappend temp [list $attribute $domain] set gerwin_relation($name,attributes) $temp } ;# ;# gob_relation_attribute_exist NAME ATTRIBUTE ;# ;# Return 1 if ATTRIBUTE is part of NAME's attributes set ;# Return 0 else proc gob_relation_attribute_exist {name attribute} { global gerwin_relation set attributes $gerwin_relation($name,attributes) if {[lsearch -glob $attributes "$attribute *"] == -1} then { return 0 } else { return 1 } } ;# ;# gob_relation_set_attribute_domain RELATION ATTRIBUTE DOMAIN ;# ;# Set DOMAIN as the new domain for ATTRIBUTE, in RELATION proc gob_relation_set_attribute_domain {relation attribute domain} { global gerwin_relation set attributes $gerwin_relation($relation,attributes) ;# Replace the old entry with the newer one set index [lsearch -glob $attributes "$attribute *"] set attributes [lreplace $attributes $index $index [list $attribute $domain]] set gerwin_relation($relation,attributes) $attributes } ;# ;# gob_relation_get_attributes RELATION ;# ;# Return a list with all attributes of RELATION proc gob_relation_get_attributes {relation} { global gerwin_relation return $gerwin_relation($relation,attributes) } ;# ;# gob_relation_get_attribute_domain RELATION ATTRIBUTE ;# ;# Return the domain of ATTRIBUTE, in RELATION proc gob_relation_get_attribute_domain {relation attribute} { global gerwin_relation set attributes $gerwin_relation($relation,attributes) set index [lsearch -glob $attributes "$attribute *"] return [lindex [lindex $attributes $index] 1] } ;# ;# gob_relation_get_num_attributes RELATION ;# ;# Return the number of attributes RELATION have proc gob_relation_get_num_attributes {relation} { global gerwin_relation return [llength $gerwin_relation($relation,attributes)] } ;# ;# gob_relation_delete_attribute RELATION ATTRIBUTE ;# ;# Delete ATTRIBUTE from RELATION's attributes set proc gob_relation_delete_attribute {relation attribute} { global gerwin_relation set attributes $gerwin_relation($relation,attributes) set index [lsearch -glob $attributes "$attribute *"] set attributes [lreplace $attributes $index $index] set gerwin_relation($relation,attributes) $attributes } ;# ;# gob_relation_add_entity RELATION ENTITY MINCARD MAXCARD ;# ;# Add ENTITY with MINCARD/MAXCARD to RELATION's entities set proc gob_relation_add_entity {relation entity mincard maxcard} { global gerwin_relation ;# See if that entity already exist in entities # if {[gob_relation_entity_exist $relation $entity]} then { # gui_notice "$entity already exist in $relation" # return # } ;# Ok, add the entity set entities $gerwin_relation($relation,entities) lappend entities [list $entity [list $mincard $maxcard]] set gerwin_relation($relation,entities) $entities } ;# ;# gob_relation_entity_exist RELATION ENTITY ;# ;# Return 1 if ENTITY exist into RELATION ;# Return 0 else proc gob_relation_entity_exist {relation entity} { global gerwin_relation set entities $gerwin_relation($relation,entities) if {[lsearch -glob $entities "$entity *"] == -1} then { return 0 } else { return 1 } } ;# ;# gob_relation_set_entity_card RELATION ENTITY CARD ;# ;# Set CARD as the new card for ENTITY, in RELATION proc gob_relation_set_entity_card {relation entity card} { global gerwin_relation set entities $gerwin_relation($relation,entities) set index [lsearch -glob $entities "$entity *"] set entities [lreplace $entities $index $index \ [list $entity $card]] set gerwin_relation($relation,entities) $entities } ;# ;# gob_relation_get_entities RELATION ;# ;# Return a list with all entities in RELATION proc gob_relation_get_entities {relation} { global gerwin_relation return $gerwin_relation($relation,entities) } ;# ;# gob_relation_get_entity_card RELATION ENTITY ;# ;# Return the card of ENTITY, in RELATION proc gob_relation_get_entity_card {relation entity} { global gerwin_relation set entities $gerwin_relation($relation,entities) set index [lsearch -glob $entities "$entity *"] return [lindex [lindex $entities $index] 1] } ;# ;# gob_relation_get_entity_min_card RELATION ENTITY ;# ;# Return the minimal cardinality for ENTITY proc gob_relation_get_entity_min_card {relation entity} { return [lindex [gob_relation_get_entity_card $relation $entity] 0] } ;# ;# gob_relation_get_entity_max_card RELATION ENTITY ;# ;# Return the maximal cardinality for ENTITY proc gob_relation_get_entity_max_card {relation entity} { return [lindex [gob_relation_get_entity_card $relation $entity] 1] } ;# ;# gob_relation_set_entity_min_card RELATION ENTITY CARD ;# ;# Set CARD as the new minimal card for ENTITY proc gob_relation_set_entity_min_card {relation entity mincard} { set card [gob_relation_get_entity_card $relation $entity] set card [lreplace $card 0 0 $mincard] gob_relation_set_entity_card $relation $entity $card } ;# ;# gob_relation_set_entity_max_card RELATION ENTITY CARD ;# ;# Set CARD as the new maximal card for ENTITY proc gob_relation_set_entity_max_card {relation entity maxcard} { set card [gob_relation_get_entity_card $relation $entity] set card [lreplace $card 1 1 $maxcard] gob_relation_set_entity_card $relation $entity $card } ;# ;# gob_relation_get_num_entities RELATION ;# ;# Return the number of entities from RELATION proc gob_relation_get_num_entities {relation} { global gerwin_relation return [llength $gerwin_relation($relation,entities)] } ;# ;# gob_relation_delete_entity RELATION ENTITY ;# ;# Delete ENTITY from RELATIONs entity set proc gob_relation_delete_entity {relation entity} { global gerwin_relation set entities $gerwin_relation($relation,entities) set index [lsearch -glob $entities "$entity *"] set entities [lreplace $entities $index $index] set gerwin_relation($relation,entities) $entities } ;# ;# gob_delete_relation RELATION ;# ;# Deletes RELATION from the system proc gob_delete_relation {relation} { global gerwin_relations global gerwin_relation ;# Free gerwin_relations set index [lsearch $gerwin_relations $relation] set gerwin_relations [lreplace $gerwin_relations $index $index] ;# Free gerwin_relation unset gerwin_relation($relation,attributes) unset gerwin_relation($relation,entities) unset gerwin_relation($relation,reflexive) } ;# ;# gob_relation_change_entity_name_reflexive RELATION NNAME ;# ;# NNAME is the new entity name for the reflexive relation RELATION... proc gob_relation_change_entity_name_reflexive {relation nname} { global gerwin_relation set entities $gerwin_relation($relation,entities) set gerwin_relation($relation,entities) \ [list [list $nname [lindex [lindex $entities 0] 1]] \ [list $nname [lindex [lindex $entities 1] 1]]] } ;# ;# gob_relation_change_entity_name RELATION ENTITY NNAME ;# ;# ENTITY now is called NNAME... proc gob_relation_change_entity_name {relation entity nname} { global gerwin_relation set entities $gerwin_relation($relation,entities) set index [lsearch -glob $entities "$entity *"] set card [lindex [lindex $entities $index] 1] set entities [lreplace $entities $index $index [list $nname $card]] set gerwin_relation($relation,entities) $entities } ;# ;# gob_relation_change_name RELATION NNAME ;# ;# Changes the name of RELATION to NNAME proc gob_relation_change_name {relation nname} { global gerwin_relation ;# Backup properties set attributes $gerwin_relation($relation,attributes) set entities $gerwin_relation($relation,entities) set reflexive $gerwin_relation($relation,reflexive) ;# Delete the relation gob_delete_relation $relation ;# Create the new relation gob_create_relation $nname $entities $attributes set gerwin_relation($nname,reflexive) $reflexive ;# Update the relation name on all entities affected by that relation foreach e [gob_relation_get_entities $nname] { gob_entity_change_relation_name [lindex $e 0] $relation $nname } } ;#################################### ;########## GOB TABLE ############### ;#################################### ;# ;# gob_create_table TABLE ATTRIBUTES PKEY FKEYS ;# ;# Creates a new table named TABLE into the system proc gob_create_table {name attributes pkey fkeys} { global gerwin_tables global gerwin_table ;# See if already exist a table named NAME if {[gob_table_exist $name]} then { gui_notice "Table $name already exist. Something horrible happens." return } ;# Ok, create the new table lappend gerwin_tables $name set gerwin_table($name,attributes) $attributes set gerwin_table($name,key) $pkey set gerwin_table($name,fkeys) $fkeys set gerwin_table($name,rtables) {} } ;# ;# gob_delete_table TABLE ;# ;# Deletes TABLE from the system proc gob_delete_table {table} { global gerwin_tables global gerwin_table ;# Remove the table from gerwin_tables set index [lsearch $gerwin_tables $table] set gerwin_tables [lreplace $gerwin_tables $index $index] ;# Remove the table fields from gerwin_table unset gerwin_table($table,attributes) unset gerwin_table($table,key) unset gerwin_table($table,fkeys) } ;# ;# gob_table_exist TABLE ;# ;# Return 1 if TABLE exist in the system ;# Return 0 else proc gob_table_exist {table} { global gerwin_tables set result [lsearch $gerwin_tables $table] if {$result != -1} then { return 1 } else { return 0 } } ;# ;# gob_table_attribute_exist TABLE ATTRIBUTE ;# ;# Return 1 if there is already an attribute named ATTRIBUTE on TABLE ;# Return 0 else proc gob_table_attribute_exist {table attribute} { global gerwin_table set attributes $gerwin_table($table,attributes) set index [lsearch -glob $attributes "$attribute *"] if {$index == -1} then { return 0 } else { return 1 } } ;# ;# gob_table_set_attribute_null TABLE ATTRIBUTE NULL ;# ;# Set the null property for ATTRIBUTE to NULL, on TABLE proc gob_table_set_attribute_null {table attribute null} { global gerwin_table set attributes $gerwin_table($table,attributes) set index [lsearch -glob $attributes "$attribute *"] set sattribute [lindex $attributes $index] set domain [lindex $sattribute 1] set attributes [lreplace $attributes $index $index [list $attribute $domain $null]] set gerwin_table($table,attributes) $attributes } ;# ;# gob_table_attribute_add TABLE ATTRIBUTE DOMAIN NULL ;# ;# Add ATTRIBUTE to TABLE, with DOMAIN proc gob_table_attribute_add {table attribute domain null} { global gerwin_table set attributes $gerwin_table($table,attributes) lappend attributes [list $attribute $domain $null] set gerwin_table($table,attributes) $attributes } ;# ;# gob_table_get_attribute_null TABLE ATTRIBUTE ;# ;# Return 1 if ATTRIBUTE is anullable ;# Return 0 else proc gob_table_get_attribute_null {table attribute} { global gerwin_table set attributes $gerwin_table($table,attributes) set index [lsearch -glob $attributes "$attribute *"] set a [lindex $attributes $index] return [lindex $a 2] } ;# ;# gob_table_attribute_delete TABLE ATTRIBUTE ;# ;# Delete ATTRIBUTE from TABLE's attribute set proc gob_table_attribute_delete {table attribute} { global gerwin_table set attributes $gerwin_table($table,attributes) set index [lsearch -glob $attributes "$attribute *"] set attributes [lreplace $attributes $index $index] set gerwin_table($table,attributes) $attributes } ;# ;# gob_table_get_attributes TABLE ;# ;# Return a list with all attributes names from TABLE proc gob_table_get_attributes {table} { global gerwin_table set result {} foreach a $gerwin_table($table,attributes) { lappend result [lindex $a 0] } return $result } ;# ;# gob_table_get_attribute_domain TABLE ATTRIBUTE ;# ;# Return the domain of ATTRIBUTE from TABLE proc gob_table_get_attribute_domain {table attribute} { global gerwin_table set attributes $gerwin_table($table,attributes) set index [lsearch -glob $attributes "$attribute *"] return [lindex [lindex $attributes $index] 1] } ;# ;# gob_table_set_attribute_domain TABLE ATTRIBUTE DOMAIN ;# ;# Set DOMAIN as the new ATTRIBUTE domain, in TABLE proc gob_table_set_attribute_domain {table attribute domain} { global gerwin_table set attributes $gerwin_table($table,attributes) set index [lsearch -glob $attributes "$attribute *"] set attributes [lreplace $attributes $index $index [list $attribute $domain]] set gerwin_table($table,attributes) $attributes } ;# ;# gob_table_get_nattributes TABLE ;# ;# Return the number of attributes that TABLE have proc gob_table_get_nattributes {table} { global gerwin_table return [llength $gerwin_table($table,attributes)] } ;# ;# gob_table_add_attribute_to_key TABLE ATTRIBUTE ;# ;# Add ATTRIBUTE to the primary key of TABLE proc gob_table_add_attribute_to_key {table attribute} { global gerwin_table set key $gerwin_table($table,key) lappend key $attribute set gerwin_table($table,key) $key } ;# ;# gob_table_remove_attribute_from_key TABLE ATTRIBUTE ;# ;# Removes ATTRIBUTE from TABLE's primary key proc gob_table_remove_attribute_from_key {table attribute} { global gerwin_table set key $gerwin_table($table,key) set index [lsearch $key $attribute] set key [lreplace $key $index $index] set gerwin_table($table,key) } ;# ;# gob_table_get_key TABLE ;# ;# Return the primary key of TABLE proc gob_table_get_key {table} { global gerwin_table return $gerwin_table($table,key) } ;# ;# gob_table_is_foreign_key TABLE ATTRIBUTE ;# ;# Return 1 if ATTRIBUTE is a foreign key on TABLE proc gob_table_is_foreign_key {table attribute} { global gerwin_table set fkeys $gerwin_table($table,fkeys) set index [lsearch -glob $fkeys "$attribute *"] if {$index == -1} then { return 0 } else { return 1 } } ;# ;# gob_table_get_foreign_key_rtable TABLE ATTRIBUTE ;# ;# Return the rtable of the foreign key ATTRIBUTE on TABLE proc gob_table_get_foreign_key_rtable {table attribute} { global gerwin_table set fkeys $gerwin_table($table,fkeys) set index [lsearch -glob $fkeys "$attribute *"] set fkey [lindex $fkeys $index] return [lindex $fkey 1] } ;# ;# gob_table_get_foreign_keys TABLE ;# ;# Return the foreign keys of TABLE proc gob_table_get_foreign_keys {table} { global gerwin_table return $gerwin_table($table,fkeys) } ;# ;# gob_table_add_attribute_to_foreign_keys TABLE ATTRIBUTE RTABLE ;# ;# Add ATTRIBUTE as a foreign key, referring RTABLE proc gob_table_add_attribute_to_foreign_keys {table attribute rtable} { global gerwin_table set fkeys $gerwin_table($table,fkeys) lappend fkeys [list $attribute $rtable] set gerwin_table($table,fkeys) $fkeys ;# Now, update the rtables field to rtable lappend gerwin_table($rtable,rtables) $table } ;# ;# gob_table_remove_attribute_from_foreign_keys TABLE ATTRIBUTE ;# ;# Remove ATTRIBUTE as a foreign key of TABLE proc gob_table_remove_attribute_from_foreign_keys {table attribute} { global gerwin_table set fkeys $gerwin_table($table,fkeys) set index [lsearch -glob $fkeys "$attribute *"] ;# Update the rtables field in the attribute's rtable set rtable [lindex [lindex $fkeys $index] 1] set index2 [lsearch $gerwin_table($rtable,rtables) $table] set gerwin_table($rtable,rtables) \ [lreplace $gerwin_table($rtable,rtables) $index $index] set fkeys [lreplace $fkeys $index $index] set gerwin_table($table,fkeys) $fkeys } ;# ;# gob_table_set_foreign_key_rtable TABLE ATTRIBUTE RTABLE ;# ;# Set RTABLE as the ATTRIBUTE referred table in TABLE proc gob_table_set_foreign_key_rtable {table attribute rtable} { global gerwin_table set fkeys $gerwin_table($table,fkeys) set index [lsearch -glob $fkeys "$attribute *"] set fkeys [lreplace $fkeys $index $index [list $attribute $rtable]] set gerwin_table($table,fkeys) $fkeys } ;# ;# gob_table_is_key TABLE ATTRIBUTE ;# ;# Return 1 if ATTRIBUTE is part of TABLE primary key ;# Return 0 else proc gob_table_is_key {table attribute} { global gerwin_table set key $gerwin_table($table,key) set index [lsearch $key $attribute] if {$index == -1} then { return 0 } else { return 1 } } ;#################################### ;########## GOB DOMAIN ############# ;#################################### ;# ;# gob_create_domain DOMAIN ;# ;# Creates a new domain called DOMAIN on the project ;# ;# Initially, all maps are UNDEFINED proc gob_create_domain {dom} { global gerwin_output_formats global gerwin_domains global gerwin_domain ;# Update gerwin_domains lappend gerwin_domains $dom ;# Update gerwin_domain foreach of $gerwin_output_formats { set gerwin_domain($dom,$of) UNDEFINED } } ;# ;# gob_domain_create_predefined_domains ;# ;# Creates into the system all the predefined domains rom gerwin_predefined_domains proc gob_domain_create_predefined_domains {} { global gerwin_output_formats global gerwin_predefined_domains global gerwin_domains global gerwin_output_format_types foreach pd $gerwin_predefined_domains { ;# Add the domain to gerwin_domains lappend gerwin_domains $pd ;# Create the maps from the several output formats foreach of $gerwin_output_formats { set format_types $gerwin_output_format_types($of) ;# Locate the correct entry for $pd set index [lsearch -glob $format_types ".* $pd"] set ftype [lindex [lindex $format_types $index] 0] ;# Add the map gob_domain_map_type $pd $of $ftype } } } ;# ;# gob_domain_map_type DOMAIN FORMAT TYPE ;# ;# Map TYPE as the new type for DOMAIN to FORMAT proc gob_domain_map_type {domain format type} { global gerwin_domain set gerwin_domain($domain,$format) $type } ;# ;# gob_domain_delete DOMAIN ;# ;# Deletes DOMAIN from the project, only if it is not a predefined domain proc gob_domain_delete {dom} { global gerwin_domains global gerwin_domain global gerwin_output_formats ;# We cannot delete a predefined domain if {[gob_domain_is_predefined $dom]} then { return } ;# Free gerwin_domains set index [lsearch $gerwin_domains $dom] set gerwin_domains [lreplace $gerwin_domains $index $index] ;# Free gerwin_domain foreach of $gerwin_output_format { unset gerwin_domain($dom,$of) } }ferret-0.6.orig/src/gui.tcl0000644000175000017500000025076407754172245014335 0ustar fikefike;# gui.tcl -- Gerwin ;# ;# GUI implementation ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 14:45:16 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;# ;# gui_create_fonts ;# ;# Creates the default fonts for Gerwin proc gui_create_fonts {} { global gfonts ;# Default application font set gfonts(default) \ [font create -family Helvetica -size 11] ;# Fonts for the ER Diagram set gfonts(ercanvas_default) \ [font create -family Courier -size 8] set gfonts(ercanvas_titles) \ [font create -family Courier -size 11] set gfonts(ercanvas_minilabels) \ [font create -family Times -size 8] } ;# ;# gui_gcanvas_make_zoom CANVAS FACTOR ;# ;# Makes a zoom on CANVAS, by FACTOR ;# Manages fonts sizes ;# ;# CANVAS can be er or td proc gui_gcanvas_make_zoom {what_canvas factor} { global gcanvas global gcanvas_td global gfonts switch $what_canvas { er { ;# First of all, scale the canvas itself ${gcanvas} scale all 0.0 0.0 $factor $factor ;# Scale the fonts set fontfactor [expr ([font actual $gfonts(ercanvas_default) -size] \ * $factor)] regsub {([0-9]+)\.[0-9]} $fontfactor "\\1" fontfactor font configure $gfonts(ercanvas_default) \ -size $fontfactor set fontfactor [expr ([font actual $gfonts(ercanvas_titles) -size] \ * $factor)] regsub {([0-9]+)\.[0-9]} $fontfactor "\\1" fontfactor font configure $gfonts(ercanvas_titles) \ -size $fontfactor ;# Reconfigure all entities and relations dimensions } td { } } } ;# ;# gui_init WIDGET ;# ;# Initializes the gerwin widgets, into WIDGET proc gui_init {widget} { global fontselwidget global gmainframe global gcanvas global gerwin_version global gerwin_editionarea global apparea set gmainframe ${widget} ;# Title wm title . "Gerwin $gerwin_version" ;# Create the fonts gui_create_fonts ;# Make the mainframe MainFrame ${gmainframe} -separator both \ -textvariable gerwin_state -menu [gui_create_mainmenu] ${gmainframe} addindicator -text "Tcl Gerwin" ${gmainframe} addindicator -text $gerwin_version ;# Create the button-area set fbarea [${gmainframe} addtoolbar] gui_create_button_area $fbarea set userframe [${gmainframe} getframe] ;# Create the app area gui_create_app_area ${userframe}.apparea ;# Create the edition area ;# The edition area is a notebook widget, that contain frames. ;# The first frame is that one with the project properties ;#set gerwin_editionarea ${userframe}.editionarea ;#gui_create_edition_area ${userframe}.editionarea ;# Launch the bindings ;#gui_launch_bindings ;#pack ${userframe}.editionarea -side top -fill x pack ${gmainframe} -fill both -expand true ;# Now there is not any project opened, so disable all the buttons ;# except the one with new-project and the one with load-project gui_no_project_opened } ;# ;# gui_create_app_area WIDGET ;# ;# Create the app area with all the pages proc gui_create_app_area {widget} { global gmainframe global apparea global apptree set userframe [${gmainframe} getframe] ;# Create the apptree ;# gui_create_apptree ${userframe}.apptree ;# Create the notebook NoteBook ${userframe}.apparea set apparea ${userframe}.apparea ;# Pack the apptree ;# pack ${apptree} -fill y -side left ;# Pack the apparea pack ${apparea} -fill both -expand true -side right } ;# ;# gui_create_apptree PATH ;# ;# Create the apptree at PATH ;# proc gui_create_apptree {path} { global apptree set apptree $path ;# Create the Tree widget Tree ${path} -showlines true -dragenabled false ;############################## ;# Create the application nodes ;############################## ;# Gerwin -> Settings at right gui_apptree_insert 0 root Gerwin } ;# ;# gui_apptree_insert INDEX PARENT NODE ;# ;# Insert NODe into the apptree proc gui_apptree_insert {index parent node} { global apptree global gfonts ${apptree} insert $index $parent apptree-{$node} \ -text $node -font $gfonts(default) -image [Bitmap::get save] } ;# ;# gui_app_area_raise_Project_page ;# ;# Raises the project page on the app area proc gui_app_area_raise_Project_page {} { global apparea ${apparea} raise Project } ;# ;# gui_app_area_destroy_ER_page ;# ;# Destroys the app area TD page proc gui_app_area_destroy_ER_page {} { global apparea ${apparea} delete ER } ;# ;# gui_app_area_destroy_TD_page ;# ;# Destroys the app area TD page proc gui_app_area_destroy_TD_page {} { global apparea ${apparea} delete TD } ;# ;# gui_app_area_destroy_Output_page ;# ;# Destroys the app area Output page proc gui_app_area_destroy_Output_page {} { global apparea ${apparea} delete Output } ;# ;# gui_app_area_destroy_Project_page ;# ;# Destroys the app area Project page proc gui_app_area_destroy_Project_page {} { global apparea ${apparea} delete Project } ;# ;# gui_app_area_create_Project_page ;# ;# Creates the app area Project page, with page information proc gui_app_area_create_Project_page {} { global apparea global gerwin_cproject_name global gerwin_cproject_file global gerwin_cproject_author ;# Create the new page, if it is not created ${apparea} insert 0 Project -text "Project" ${apparea} raise Project ;# Put here the project attributes set widget [${apparea} getframe Project] TitleFrame ${widget}.editframe -side center -text "Project Properties" set editwidget [${widget}.editframe getframe] ;# Project name frame ${editwidget}.nameline LabelEntry ${editwidget}.nameline.label -label "Project Name:" -labelwidth 16 \ -textvariable gerwin_cproject_name \ -helptext "Name of the current project" -width 50 ;# Project file frame ${editwidget}.fileline LabelEntry ${editwidget}.fileline.label -label "Project File:" -labelwidth 16 \ -textvariable gerwin_cproject_file \ -helptext "Storage file of the current project" -editable false \ -width 50 Button ${editwidget}.fileline.button -text "select file" \ -helptext "Select a file to store the project in" \ -command "set tempfile \[gui_select_file_to_save\] ; \ if {\$tempfile != {}} then { set gerwin_cproject_file \$tempfile gerwin_save_project_file } " \ -relief groove ;# Project author frame ${editwidget}.authorline LabelEntry ${editwidget}.authorline.label -label "Project Author:" -labelwidth 16 \ -textvariable gerwin_cproject_author \ -helptext "Author of the current project" -width 50 pack ${editwidget}.nameline.label -side left -anchor w pack ${editwidget}.nameline -side top -anchor w pack ${editwidget}.fileline.label -side left -anchor w pack ${editwidget}.fileline.button -side left pack ${editwidget}.fileline -side top -anchor w pack ${editwidget}.authorline.label -side left -anchor w pack ${editwidget}.authorline -side top -anchor w pack ${editwidget} -side left pack ${widget}.editframe -side left -fill both -expand true ;# Scale the notebook NoteBook::compute_size ${apparea} } ;# ;# gui_app_area_raise_ER_page ;# ;# Raises the ER page proc gui_app_area_raise_ER_page {} { global apparea ${apparea} raise ER } ;# ;# gui_app_area_raise_TD_page ;# ;# Raises the TD page proc gui_app_area_raise_TD_page {} { global apparea ${apparea} raise TD } ;# ;# gui_app_area_raise_Output_page ;# ;# Raises the Output page proc gui_app_area_raise_Output_page {} { global apparea ${apparea} raise Output } ;# ;# gui_app_area_create_Domain_page ;# ;# Create the app area Domain page, with the Domain Manager proc gui_app_area_create_Domain_page {} { global apparea global gcanvas ;# Create the new page ${apparea} insert 0 Domain -text "Domains and Types" ;# Include here the new } ;# ;# gui_app_area_destroy_Domain_page ;# ;# Delete the Domain page from the app area, and destroy its contents proc gui_app_area_destroy_Domain_page {} { global apparea global gerwin_domains global gerwin_domain ;# Delete the page and destroy the contents ${apparea} delete Domain ;# Purge all domains on the system foreach d $gerwin_domains { gob_domain_delete $d } set gerwin_domains {} } ;# ;# gui_app_area_create_ER_page ;# ;# Create the app area ER page proc gui_app_area_create_ER_page {} { global apparea global gcanvas global gerwin_editionarea ;# Buttons globals global gui_button_bbox_elements global gui_button_bbox_tools global gui_button_bbox_print_ER global gui_button_bbox_zoom_ER ;# Create the new page ${apparea} insert end ER -text "ER Diagram" ;# Now, the scrolled canvas and the editionarea into two paned windows set pw [${apparea} getframe ER].pw PanedWindow $pw -side left -weights extra ;# Frame for the ER toolbar and scrolled canvas ;# Create the toolbar for ER set erframe [${pw} add] frame ${erframe}.toolbar set bbox [ButtonBox ${erframe}.toolbar.tb2 -spacing 0 -padx 1 -pady 1] set gui_button_bbox_elements $bbox $bbox add -text entity \ -helptype balloon -helptext "Insert a new entity object" \ -relief groove \ -command {gerwin_set_state "Inserting entity"} $bbox add -text relation \ -helptype balloon -helptext "Insert a new relation object" \ -relief groove \ -command {gerwin_set_state "Inserting relation begin"} Separator ${erframe}.toolbar.sep2 -orient vertical set bbox [ButtonBox ${erframe}.toolbar.tb3 -spacing 0 -padx 1 -pady 1] set gui_button_bbox_tools $bbox $bbox add -text move \ -helptype balloon -helptext "Move an object" \ -relief groove \ -command {gerwin_set_state "Moving"} $bbox add -text edit \ -helptype balloon -helptext "Edit the properties of an object" \ -relief groove \ -command {gerwin_set_state "Editing"} $bbox add -text delete \ -helptype balloon -helptext "Delete an object" \ -command {gerwin_set_state "Deleting"} -relief groove ;#-image [Bitmap::get cut] -relief groove \ Separator ${erframe}.toolbar.sep1 -orient vertical set bbox [ButtonBox ${erframe}.toolbar.tb7 -spacing 0 -padx 1 -pady 1] set gui_button_bbox_print_ER $bbox $bbox add -text "print" -helptype balloon \ -helptext "Print the ER diagram" \ -relief groove -command gerwin_print_ER # set bbox [ButtonBox ${erframe}.toolbar.tb8 -spacing 0 -padx 1 -pady 1] # set gui_button_bbox_zoom_ER $bbox # $bbox add -text "+" -helptype balloon \ # -helptext "Positive zoom" \ # -relief groove -command [list gui_gcanvas_make_zoom er 1.1] # $bbox add -text "-" -helptype balloon \ # -helptext "Negative zoom" \ # -relief groove -command [list gui_gcanvas_make_zoom er 0.9] # Separator ${erframe}.toolbar.sep3 -orient vertical pack ${erframe}.toolbar.tb2 -side left -anchor w pack ${erframe}.toolbar.sep2 -side left -padx 4 -fill y pack ${erframe}.toolbar.tb3 -side left -anchor w pack ${erframe}.toolbar.sep1 -side left -padx 4 -fill y pack ${erframe}.toolbar.tb7 -side left -anchor w # pack ${erframe}.toolbar.sep3 -side left -padx 4 -fill y # pack ${erframe}.toolbar.tb8 -side left -anchor w gui_create_scrolled_canvas [frame ${erframe}.fcanvas] ;#-bg white set gcanvas ${erframe}.fcanvas.canvas pack ${erframe}.toolbar -side top -fill x pack ${erframe}.fcanvas -side top -fill both -expand true ;# Set the canvas enter and leave bindings bind ${gcanvas} gui_enter_canvas_bind bind ${gcanvas} gui_leave_canvas_bind ;# Set the canvas dimensions bindings bind . gui_expand_canvas_to_right bind . gui_expand_canvas_to_down bind . gui_shrink_canvas_to_left bind . gui_shrink_canvas_to_up ;# Create the editionarea set gerwin_editionarea [${pw} add].editionarea gui_create_edition_area ${gerwin_editionarea} ;# Pack it pack ${gerwin_editionarea} -side bottom -fill x ;# Pack it pack ${erframe} -fill both -expand true pack ${pw} -fill both -expand true ;# Update the notebook size NoteBook::compute_size ${apparea} } ;# ;# gui_app_area_create_TD_page ;# ;# Create the app area TD page proc gui_app_area_create_TD_page {} { global apparea global gcanvas_td ;# Buttons globals global gui_button_bbox_print_TD global gui_button_bbox_gen_TD ;# Create the new page ${apparea} insert end TD -text "Table Diagram" set bbutton_frame [frame [${apparea} getframe TD].toolbar] set bbox [ButtonBox ${bbutton_frame}.tb1 -spacing 0 -padx 1 -pady 1] set gui_button_bbox_gen_TD $bbox $bbox add -text "Update" \ -helptype balloon -helptext "Generate the table diagram" \ -relief groove -command {gen_ER_to_TD} Separator ${bbutton_frame}.sep1 -orient vertical set bbox [ButtonBox ${bbutton_frame}.tb2 -spacing 0 -padx 1 -pady 1] set gui_button_bbox_print_TD $bbox $bbox add -text "print" -helptype balloon \ -helptext "Print the Table diagram" \ -relief groove -command gerwin_print_TD pack ${bbutton_frame}.tb1 -side left -anchor w pack ${bbutton_frame}.sep1 -side left -padx 4 -fill y pack ${bbutton_frame}.tb2 -side left -anchor w set erframe [frame [${apparea} getframe TD].fcanvas] gui_create_scrolled_canvas ${erframe} set gcanvas_td ${erframe}.canvas ;# Set the canvas enter and leave bindings bind ${gcanvas_td} {. configure -cursor fleur} bind ${gcanvas_td} {. configure -cursor ""} ;# Set the bind for marking ${gcanvas_td} bind all {gui_mark_td %x %y} ;# Pack it pack ${bbutton_frame} -fill x pack ${erframe} -fill both -expand true } ;# ;# gui_app_area_create_Output_page ;# ;# Create the app area Output page proc gui_app_area_create_Output_page {} { global apparea global gtext_output global gerwin_output_formats global gerwin_output_active_format global output_pages global output_pages_widget ;# Buttons globals global gui_button_bbox_gen_output ;# Create the new page ${apparea} insert end Output -text "Output" ;# Create the toolbar set bbutton_frame [frame [${apparea} getframe Output].toolbar] set bbox [ButtonBox ${bbutton_frame}.tb1 -spacing 0 -padx 1 -pady 1] set gui_button_bbox_gen_output $bbox $bbox add -text "Create output" \ -helptype balloon -helptext "Generate the selected output format" \ -relief groove -command "gen_TD_to_Output \$gerwin_output_active_format" ;# Replace it with a ComboBox Label ${bbutton_frame}.label -text "output format: " ComboBox ${bbutton_frame}.formats -values $gerwin_output_formats -expand tab \ -editable false \ -modifycmd "set gerwin_output_active_format \[lindex \$gerwin_output_formats \[${bbutton_frame}.formats getvalue\]\]" pack ${bbutton_frame}.label -side left -anchor w pack ${bbutton_frame}.formats -side left pack ${bbutton_frame}.tb1 -side left -anchor w -padx 4 ;# Now, create the notebook with the several output gtexts set outputs [NoteBook [${apparea} getframe Output].nb] set output_pages_widget $outputs ;# Pack it pack ${bbutton_frame} -fill x pack ${outputs} -fill both -expand true ;#pack ${erframe} -fill both -expand true } ;# ;# gui_destroy_output_page FORMAT ;# ;# Destroy the FORMAT output page proc gui_destroy_output_page {format} { global output_pages global output_pages_widget global gtext_output ;# First of all, clean output_pages and gtext_output(FORMAT) set index [lsearch $output_pages $format] set output_pages [lreplace $output_pages $index $index] unset gtext_output($format) ;# Ok, then destroy the widget ${output_pages_widget} delete $format } ;# ;# gui_create_output_page FORMAT ;# ;# Creates a new output page for FORMAT on the output_pages_widget notebook proc gui_create_output_page {format} { global output_pages global output_pages_widget global gtext_output global gerwin_output_active_format ;# First of all, update output_pages lappend output_pages $format ;# Second, create the page into the notebook ${output_pages_widget} insert end $format -text $format ;# Good. Next, create the button bar set toolbar [frame [${output_pages_widget} getframe $format].toolbar] ;# Update button set bbox [ButtonBox ${toolbar}.tb3 -spacing 0 -padx 1 -pady 1] $bbox add -text update \ -helptype balloon -helptext "Update this output from the tables" \ -relief groove \ -command "set ftemp \$gerwin_output_active_format set gerwin_output_active_format $format gen_TD_to_Output $format set gerwin_output_active_format \$ftemp" Separator ${toolbar}.sep3 -orient vertical ;# Save and print buttons set bbox [ButtonBox ${toolbar}.tb1 -spacing 0 -padx 1 -pady 1] $bbox add -text save \ -helptype balloon -helptext "Save this output to a file" \ -relief groove \ -command [list gerwin_save_output_file $format] # $bbox add -text print \ # -helptype balloon -helptext "Print this output to a printer" \ # -relief groove \ # -command [list gerwin_print_output $format] ;# Close page button set bbox [ButtonBox ${toolbar}.tb2 -spacing 0 -padx 1 -pady 1] $bbox add -text close \ -helptype balloon -helptext "Close this output page" \ -relief groove \ -command [list gui_destroy_output_page $format] pack ${toolbar}.tb3 -side left -anchor w pack ${toolbar}.sep3 -side left pack ${toolbar}.tb1 -side left -anchor w pack ${toolbar}.tb2 -side right -anchor w ;# Now create the scrolled text set stext [frame [${output_pages_widget} getframe $format].stext] gui_create_scrolled_text ${stext} ;# Pack it pack ${toolbar} -side top -fill x pack ${stext} -side top -fill both -expand true ;# Finally, raise the page and update gtext_output ${output_pages_widget} raise $format set gtext_output($format) ${stext}.text ;# Put the background $gtext_output($format) configure -bg white ;# Make the text widget not editable $gtext_output($format) configure -state disabled } ;# ;# gui_enter_canvas_bind ;# proc gui_enter_canvas_bind {} { global gerwin_state ;# Change the cursor switch $gerwin_state { "Inserting entity" { . configure -cursor crosshair } "Inserting relation begin" { . configure -cursor left_side } "Inserting relation end" { . configure -cursor right_side } Deleting { . configure -cursor pirate } Moving { . configure -cursor fleur } Editing { . configure -cursor hand1 } default { . configure -cursor "" } } } ;# ;# gui_leave_canvas_bind ;# proc gui_leave_canvas_bind {} { . configure -cursor "" } ;# ;# gui_update_font FONT ;# ;# Updates the application global font proc gui_update_font {newfont} { global gui_font global fontselwidget global gmainframe . configure -cursor watch ;# Update the fonts of all widgets if { $gui_font != $newfont } then { $fontselwidget configure -font $newfont set gui_font $newfont } . configure -cursor "" } ;# ;# gui_create_edition_area WIDGET ;# ;# Creates the edition area proc gui_create_edition_area {widget} { ;# Create the notebook NoteBook ${widget} } ;# ;# gui_create_mainmenu ;# ;# Create the main menu string proc gui_create_mainmenu {} { ;# Prepare the menu set mainmenu { "&Gerwin" {} {} 0 { {separator} {command "&Exit Gerwin" {} "exit the application" {Ctrl e} -command gerwin_quit} } "&Project" {} {} 0 { {command "&New Project" {} "new project" {Ctrl n} -command gerwin_new_project} {command "&Open Project" {} "open a new project" {Ctrl o} -command gerwin_open_project} {command "&Save Project" {} "save the current project" {Ctrl s} -command gerwin_save_project} {command "&Close Project" {} "close the current project" {Ctrl c} -command gerwin_close_project} } } return $mainmenu } ;# ;# gui_create_button_area WIDGET ;# ;# Create the button area widget ;# proc gui_create_button_area {widget} { global gui_button_bbox_project global gerwin_output_formats ;# Project area set bbox [ButtonBox ${widget}.tb1 -spacing 0 -padx 1 -pady 1] set gui_button_bbox_project $bbox $bbox add -text "new" -helptype balloon \ -helptext "New project" \ -relief groove \ -command "gerwin_new_project" $bbox add -text "open" -helptype balloon \ -helptext "Open a project" \ -relief groove \ -command "gerwin_open_project" $bbox add -text "save" -helptype balloon \ -helptext "Save the current project" \ -relief groove \ -command "gerwin_save_project" pack ${widget}.tb1 -side left -anchor w # set bbox [ButtonBox ${widget}.tb5 -spacing 0 -padx 1 -pady 1] # set gui_button_bbox_ssql $bbox # $bbox add -text "save sql" \ # -helptype balloon -helptext "Saves the SQL list" \ # -relief groove -command {gerwin_save_sql} } ;# ;# gui_create_scrolled_text FRAME ARGS ;# ;# Create a scrolled text widget proc gui_create_scrolled_text {widget args} { ;# Create the text widget eval {text ${widget}.text \ -xscrollcommand [list ${widget}.xscroll set] \ -yscrollcommand [list ${widget}.yscroll set] \ -borderwidth 0} $args ;# Create the scroll widgets scrollbar ${widget}.xscroll -orient horizontal \ -command [list ${widget}.text xview] scrollbar ${widget}.yscroll -orient vertical \ -command [list ${widget}.text yview] ;# Pack the widgets grid ${widget}.text ${widget}.yscroll -sticky news grid ${widget}.xscroll -sticky ew grid rowconfigure ${widget} 0 -weight 1 grid columnconfigure ${widget} 0 -weight 1 } ;# ;# gui_shrink_canvas_to_left ;# proc gui_shrink_canvas_to_left {} { global gcanvas set sarea [${gcanvas} cget -scrollregion] ${gcanvas} configure -scrollregion \ [list [lindex $sarea 0] [lindex $sarea 1] \ [expr [lindex $sarea 2] - 100] [lindex $sarea 3]] } ;# ;# gui_expand_canvas_to_right ;# proc gui_expand_canvas_to_right {} { global gcanvas set sarea [${gcanvas} cget -scrollregion] ${gcanvas} configure -scrollregion \ [list [lindex $sarea 0] [lindex $sarea 1] \ [expr [lindex $sarea 2] + 100] [lindex $sarea 3]] } ;# ;# gui_shrink_canvas_to_up ;# proc gui_shrink_canvas_to_up {} { global gcanvas set sarea [${gcanvas} cget -scrollregion] ${gcanvas} configure -scrollregion \ [list [lindex $sarea 0] [lindex $sarea 1] \ [lindex $sarea 2] [expr [lindex $sarea 3] - 100]] } ;# ;# gui_expand_canvas_to_down ;# proc gui_expand_canvas_to_down {} { global gcanvas set sarea [${gcanvas} cget -scrollregion] ${gcanvas} configure -scrollregion \ [list [lindex $sarea 0] [lindex $sarea 1] \ [lindex $sarea 2] [expr [lindex $sarea 3] + 100]] } ;# ;# gui_create_scrolled_canvas FRAME ARGS ;# ;# Create a scrolled canvas widget proc gui_create_scrolled_canvas { widget args } { ;# Create the canvas widget eval {canvas ${widget}.canvas \ -xscrollcommand [list ${widget}.xscroll set] \ -yscrollcommand [list ${widget}.yscroll set] \ -highlightthickness 0 \ -borderwidth 0 -bg white} $args ;# Create the scroll widgets scrollbar ${widget}.xscroll -orient horizontal \ -command [list ${widget}.canvas xview] scrollbar ${widget}.yscroll -orient vertical \ -command [list ${widget}.canvas yview] ;# Pack the widgets (with grid) grid ${widget}.canvas ${widget}.yscroll -sticky news grid ${widget}.xscroll -sticky ew grid rowconfigure ${widget} 0 -weight 1 grid columnconfigure ${widget} 0 -weight 1 } ;# ;# gui_change_state TEXT ;# ;# Change the state to TEXT ;# Now this is a nop proc gui_change_state {text} { } ;# ;# gui_yes_no_cancel TEXT ;# proc gui_yes_no_cancel {text} { global gmainframe MessageDlg ${gmainframe}.notice -title "I am asking you, dude!" -justify left -icon info \ -message $text -type yesnocancel } ;# ;# gui_notice TEXT ;# ;# Notice about something. proc gui_notice {text} { global gmainframe MessageDlg ${gmainframe}.notice -title "Notice" -justify left -icon info \ -message $text -type ok } ;# ;# gui_fatal TEXT ;# ;# Notice a fatal error and exit proc gui_fatal {text} { global gmainframe toplevel ${gmainframe}.fatal -bg red label ${gmainframe}.fatal.label -text "Fatal Error: $text" \ -bg red -fg white button ${gmainframe}.fatal.button -text "Quit Gerwin" \ -command {exit} pack ${gmainframe}.fatal.label -side top pack ${gmainframe}.fatal.button -side top focus ${gmainframe}.fatal } ;# ;# gui_project_opened ;# ;# Enables some buttons and canvas and text backgrounds proc gui_project_opened {} { global gui_button_bbox_project global gui_button_bbox_elements global gui_button_bbox_tools global gui_button_bbox_gen_TD global gui_button_bbox_gen_output global gui_button_bbox_gen_GerwinML global gui_button_bbox_ssql global gui_button_bbox_print_ER global gui_button_bbox_print_TD global gcanvas global gcanvas_td global gtext_sql ;# Enable some buttons # $gui_button_bbox_project itemconfigure 0 -state active ;# New Project # $gui_button_bbox_project itemconfigure 1 -state active ;# Open Project $gui_button_bbox_project itemconfigure 2 -state active ;# Save project # ;#$gui_button_bbox_project itemconfigure 3 -state active ;# Close project # $gui_button_bbox_elements itemconfigure 0 -state active ;# Insert entity # $gui_button_bbox_elements itemconfigure 1 -state active ;# Insert relation # ;#$gui_button_bbox_elements itemconfigure 2 -state active ;# Insert label # $gui_button_bbox_tools itemconfigure 0 -state active ;# Move # $gui_button_bbox_tools itemconfigure 1 -state active ;# Edit properties # $gui_button_bbox_tools itemconfigure 2 -state active ;# Delete # $gui_button_bbox_gen_TD itemconfigure 0 -state active ;# Generate tables # $gui_button_bbox_gen_output itemconfigure 0 -state active ;# Generate Output # ;#$gui_button_bbox_ssql itemconfigure 0 -state active ;# Save SQL # $gui_button_bbox_print_ER itemconfigure 0 -state active ;# Print ER # $gui_button_bbox_print_TD itemconfigure 0 -state active ;# Print TD # ;# Change some backgrounds # ${gcanvas} configure -bg white # ${gcanvas_td} configure -bg white ;# Create the app area pages ;#gui_app_area_create_Domain_page gui_app_area_create_Project_page gui_app_area_create_ER_page gui_app_area_create_TD_page gui_app_area_create_Output_page ;# Launch the bindings gui_launch_bindings ;# Set the editing state gerwin_set_state Editing } ;# ;# gui_no_project_opened ;# ;# Disables some buttons and the color of some objects proc gui_no_project_opened {} { global gui_button_bbox_project global gui_button_bbox_elements global gui_button_bbox_tools global gui_button_bbox_gen_TD global gui_button_bbox_gen_output global gui_button_bbox_gen_GerwinML global gui_button_bbox_ssql global gui_button_bbox_print_ER global gui_button_bbox_print_TD global gcanvas global gcanvas_td global gtext_sql ;# Disable some buttons $gui_button_bbox_project itemconfigure 2 -state disabled ;# Save project ;#$gui_button_bbox_project itemconfigure 3 -state disabled ;# Close project # $gui_button_bbox_elements itemconfigure 0 -state disabled ;# Insert entity # $gui_button_bbox_elements itemconfigure 1 -state disabled ;# Insert relation ;#$gui_button_bbox_elements itemconfigure 2 -state disabled ;# Insert label # $gui_button_bbox_tools itemconfigure 0 -state disabled ;# Move # $gui_button_bbox_tools itemconfigure 1 -state disabled ;# Edit properties # $gui_button_bbox_tools itemconfigure 2 -state disabled ;# Delete # $gui_button_bbox_gen_TD itemconfigure 0 -state disabled ;# Gen TD # $gui_button_bbox_gen_output itemconfigure 0 -state disabled ;# Gen Output # ;#$gui_button_bbox_ssql itemconfigure 0 -state disabled # $gui_button_bbox_print_ER itemconfigure 0 -state disabled ;# Print ER # $gui_button_bbox_print_TD itemconfigure 0 -state disabled ;# Print TD # ;# Change the color of the canvas and text widget to grey # ${gcanvas} configure -bg grey # ${gcanvas_td} configure -bg grey ;#${gtext_sql} configure -bg grey } ;# ;# gui_launch_bindings ;# ;# Launch the bindings of the canvas proc gui_launch_bindings {} { global gcanvas global gmainframe set userframe [${gmainframe} getframe] ;# The button-1 (mark) binding ${gcanvas} bind all {gui_mark %x %y} } ;# ;# gui_drag XPOS YPOS ;# ;# Event to mouse-drag-1 on the canvas proc gui_drag {xpos ypos} { global gerwin_state global gmainframe global gerwin_premov_x global gerwin_premov_y global gerwin_premov_object global gerwin_obj_moving global gerwin_obj_type_moving global gm_entity global gm_relation global gerwin_relation global gcanvas ;# See if we are really moving if {$gerwin_state != "Moving"} then { return } set userframe [${gmainframe} getframe] ;# Map from view coordinates to canvas coordinates set xpos [${gcanvas} canvasx $xpos] set ypos [${gcanvas} canvasy $ypos] ;# Move the current object set dx [expr $xpos - $gerwin_premov_x] set dy [expr $ypos - $gerwin_premov_y] ;# Move the widget ${gcanvas} move $gerwin_premov_object $dx $dy ;# Actualize premov coordinates set gerwin_premov_x $xpos set gerwin_premov_y $ypos ;# Actualize the widget coordinates switch $gerwin_obj_type_moving { "Relation" { set gm_relation($gerwin_obj_moving,xpos) [lindex [${gcanvas} bbox \ $gm_relation($gerwin_obj_moving,grouptag)] 0] set gm_relation($gerwin_obj_moving,ypos) [lindex [${gcanvas} bbox \ $gm_relation($gerwin_obj_moving,grouptag)] 1] ;# Update the links if {$gerwin_relation($gerwin_obj_moving,reflexive)} then { ;# It is a reflexive relation gm_relation_update_links_reflexive $gerwin_obj_moving } else { ;# Non-reflexive relation gm_relation_update_links $gerwin_obj_moving } } "Entity" { set gm_entity($gerwin_obj_moving,xpos) [lindex [${gcanvas} bbox \ $gm_entity($gerwin_obj_moving,grouptag)] 0] set gm_entity($gerwin_obj_moving,ypos) [lindex [${gcanvas} bbox \ $gm_entity($gerwin_obj_moving,grouptag)] 1] ;# Update all the links foreach r [gob_entity_get_relations $gerwin_obj_moving] { if {$gerwin_relation($r,reflexive)} then { ;# Reflexive relation gm_relation_update_links_reflexive $r } else { gm_relation_update_links $r } } } } } ;# ;# gui_drag_td XPOS YPOS ;# ;# Event to mouse-drag-1 on the TD canvas proc gui_drag_td {xpos ypos} { global gmainframe global gerwin_premov_x global gerwin_premov_y global gerwin_premov_object global gerwin_obj_moving global gerwin_obj_type_moving global gm_table global gcanvas_td ;# We are always moving here ;# (for now :P) [jemarch] set userframe [${gmainframe} getframe] ;# Map from view coordinates to canvas coordinates set xpos [${gcanvas_td} canvasx $xpos] set ypos [${gcanvas_td} canvasy $ypos] ;# Move the current object set dx [expr $xpos - $gerwin_premov_x] set dy [expr $ypos - $gerwin_premov_y] ;# Actualize premov coordinates set gerwin_premov_x $xpos set gerwin_premov_y $ypos ;# Move the widget ${gcanvas_td} move $gerwin_premov_object $dx $dy ;# Actualize the coordinates switch $gerwin_obj_type_moving { "Flkey" { ;# Get the name of the two linked tables regsub {(.+)-([^-]+)} $gerwin_obj_moving "\\1" rtable regsub {(.+)-([^-]+)} $gerwin_obj_moving "\\2" table ;# Update the position of the corresponding flkey gm_flkey_set_xpos $rtable $table [lindex [${gcanvas_td} bbox \ "taggroup-Flkey-$rtable-$table"] 0] gm_flkey_set_ypos $rtable $table [lindex [${gcanvas_td} bbox \ "taggroup-Flkey-$rtable-$table"] 1] ;# Update the links of the flkey ;# Delete old links foreach t [gob_table_get_foreign_keys $table] { set rtable [lindex $t 1] ;#${gcanvas_td} delete "taggroup-Flkey-$rtable-$table" ${gcanvas_td} delete "taggroup-Flkey-link-$rtable-$table" } ;# For each foreign key foreach t [gob_table_get_foreign_keys $table] { set nrtable [lindex $t 1] set rattribute [lindex $t 0] if {$nrtable == $rtable} then { lappend rattributes($rtable) $rattribute } } gm_draw_link_td $table $rtable $rattributes($rtable) } "Table" { ;# Actualize the table coordinates set gm_table($gerwin_obj_moving,xpos) [lindex [${gcanvas_td} bbox \ $gm_table($gerwin_obj_moving,grouptag)] 0] set gm_table($gerwin_obj_moving,ypos) [lindex [${gcanvas_td} bbox \ $gm_table($gerwin_obj_moving,grouptag)] 1] ;# Update the table links gm_table_update_links $gerwin_obj_moving } } } ;# ;# gui_mark_td XPOS YPOS ;# ;# Evento to mouse-pointer-1 on the td canvas proc gui_mark_td {xpos ypos} { global gmainframe global gerwin_tables global gerwin_premov_x global gerwin_premov_y global gerwin_premov_object global gerwin_obj_moving global gerwin_obj_type_moving global gcanvas_td set userframe [${gmainframe} getframe] ;# Get the coords onto the widget set xpos [${gcanvas_td} canvasx $xpos] set ypos [${gcanvas_td} canvasy $ypos] ;# Now, figure out what WGOB we want to delete set wgob [${gcanvas_td} find closest $xpos $ypos] ;# Get the taggroup from the WGOB set wgobtags [${gcanvas_td} gettags $wgob] set index [lsearch -glob $wgobtags "taggroup-*"] set taggroup [lindex $wgobtags $index] ;# Get the object name regsub {taggroup-([^-]+)-.+} $taggroup "\\1" gm_type if {$gm_type == "Flkey"} then { regsub {taggroup-[^-]+-(.+)} $taggroup "\\1" gm_name } else { regsub {taggroup-.*-(.+)} $taggroup "\\1" gm_name } set gerwin_obj_type_moving $gm_type set gerwin_obj_moving $gm_name set gerwin_premov_x $xpos set gerwin_premov_y $ypos set gerwin_premov_object $taggroup } ;# ;# gui_mark XPOS YPOS ;# ;# Event to mouse-pointer-1 on the canvas proc gui_mark {xpos ypos} { global gerwin_state global gmainframe global gerwin_entities global gerwin_relations global gerwin_relation global gerwin_premov_x global gerwin_premov_y global gerwin_premov_object global gerwin_entity_seq global gerwin_relation_seq global gerwin_obj_moving global gerwin_obj_type_moving global gui_entity1 global gui_entity2 global gcanvas global gm_entity global earea_pages set userframe [${gmainframe} getframe] ;# Switch over the actual state switch $gerwin_state { "Inserting relation begin" { ;# Get the coords onto the widget set xpos [${gcanvas} canvasx $xpos] set ypos [${gcanvas} canvasy $ypos] ;# Figure out what WGOB is the first entity set wgob [${gcanvas} find closest $xpos $ypos] ;# Get the taggroup tag from the WGOB set wgobtags [${gcanvas} gettags $wgob] set index [lsearch -glob $wgobtags "taggroup-*"] set taggroup [lindex $wgobtags $index] ;# Get the object name and type from the taggroup regsub {taggroup-([^-]+)-.+} $taggroup "\\1" gm_type regsub {taggroup-[^-]+-(.+)} $taggroup "\\1" gm_name ;# Do nothing if this is not an entity if {$gm_type != "Entity"} then { return } ;# Set the first entity, and then switch to "Inserting relation end" state set gui_entity1 $gm_name gerwin_set_state "Inserting relation end" . configure -cursor right_side } "Inserting relation end" { ;# Get the coords onto the widget set xpos [${gcanvas} canvasx $xpos] set ypos [${gcanvas} canvasy $ypos] ;# Figure out what WGOB is the first entity set wgob [${gcanvas} find closest $xpos $ypos] ;# Get the taggroup tag from the WGOB set wgobtags [${gcanvas} gettags $wgob] set index [lsearch -glob $wgobtags "taggroup-*"] set taggroup [lindex $wgobtags $index] ;# Get the object name and type from the taggroup regsub {taggroup-([^-]+)-.+} $taggroup "\\1" gm_type regsub {taggroup-[^-]+-(.+)} $taggroup "\\1" gm_name if {$gm_type != "Entity"} then { ;# See if we are adding an entity to a n-relation if {$gm_type == "Relation"} then { ;# If the relation is reflexive, abort inmediatly if {$gerwin_relation($gm_name,reflexive)} then { gui_notice "You cannot add a new entity to a reflexive relation!" ;# Goto Editing state gerwin_set_state "Editing" . configure -cursor hand1 return } ;# If the entity is already part of the relation, abort inmediatly if {[lsearch -glob [gob_relation_get_entities $gm_name] "$gui_entity1 *"] != -1} then { gui_notice "Sorry, $gui_entity1 already have a link to $gm_name" ;# Goto Editing state gerwin_set_state "Editing" . configure -cursor hand1 return } ;# Add a link to gui_entity1 to the relation ;# Cardinality is always _/N gob_relation_add_entity $gm_name $gui_entity1 1 N ;# Add the relation to the entity's relation list gob_entity_add_relation $gui_entity1 $gm_name ;# Now, all entities have cardinality 1/N ;# The _ is a fake value foreach e [gob_relation_get_entities $gm_name] { set e [lindex $e 0] gob_relation_set_entity_min_card $gm_name $e _ gob_relation_set_entity_max_card $gm_name $e N } ;# Actualize the edition page for the relation ;# But only if it visible if {[lsearch $earea_pages $gm_name] != -1} then { gui_edition_area_delete_page $gm_name gui_edit_relation $gm_name } ;# Update the links in the screen gm_relation_update_links $gm_name ;# Goto Editing state gerwin_set_state "Editing" . configure -cursor hand1 } return } ;# Set the second entity set gui_entity2 $gm_name ;# Create the new relation set rname "relation$gerwin_relation_seq" incr gerwin_relation_seq gob_create_relation $rname {} {} gob_relation_add_entity $rname $gui_entity1 1 1 gob_relation_add_entity $rname $gui_entity2 1 1 ;# Add the relations to the entities if {$gui_entity1 == $gui_entity2} then { ;# Reflexive relation set gerwin_relation($rname,reflexive) 1 gob_entity_add_relation $gui_entity1 $rname } else { ;# Non-reflexive relation gob_entity_add_relation $gui_entity1 $rname gob_entity_add_relation $gui_entity2 $rname } ;# Draw it ;# Find an approximative good starting point if {$gui_entity1 != $gui_entity2} then { ;# Non reflexive relation set bbox1 [$gcanvas bbox taggroup-Entity-${gui_entity1}] set bbox2 [$gcanvas bbox taggroup-Entity-${gui_entity2}] set rp1x [expr \ [lindex $bbox1 0] + \ (([lindex $bbox1 2] - [lindex $bbox1 0]) / 2)] set rp1y [expr \ [lindex $bbox1 1] + \ (([lindex $bbox1 3] - [lindex $bbox1 1]) / 2)] set rp2x [expr \ [lindex $bbox2 0] + \ (([lindex $bbox2 2] - [lindex $bbox2 0]) / 2)] set rp2y [expr \ [lindex $bbox2 1] + \ (([lindex $bbox2 3] - [lindex $bbox2 1]) / 2)] set spx \ [expr ($rp1x + (($rp2x - $rp1x) / 2))] set spy \ [expr ($rp1y + (($rp2y - $rp1y) / 2))] } else { ;# Reflexive relation set spx [expr $gm_entity($gui_entity1,xpos) + 100] set spy [expr $gm_entity($gui_entity1,ypos) - 50] } gm_draw_relation $rname $spx $spy if {$gui_entity1 == $gui_entity2} then { ;# Reflexive relation gm_relation_update_links_reflexive $rname } else { ;# No reflexive relation gm_relation_update_links $rname } ;# Goto Editing state gerwin_set_state "Editing" . configure -cursor hand1 } "Inserting entity" { ;# Get the coords onto the widget set xpos [${gcanvas} canvasx $xpos] set ypos [${gcanvas} canvasy $ypos] ;# Create a new entity, with a sequential name and ;# Without any attribute, and with the key empty. set ename "entity$gerwin_entity_seq" incr gerwin_entity_seq gob_create_entity $ename {} {} {} ;# Draw it gm_draw_entity $ename $xpos $ypos ;# Goto Editing state gerwin_set_state "Editing" . configure -cursor hand1 } "Moving" { ;# Get the coords onto the widget set xpos [${gcanvas} canvasx $xpos] set ypos [${gcanvas} canvasy $ypos] ;# Now, figure out what WGOB we want to delete set wgob [${gcanvas} find closest $xpos $ypos] ;# Get the taggroup tag from the WGOB set wgobtags [${gcanvas} gettags $wgob] set index [lsearch -glob $wgobtags "taggroup-*"] set taggroup [lindex $wgobtags $index] ;# Get the object name and type from the taggroup regsub {taggroup-([^-]+)-.+} $taggroup "\\1" gm_type regsub {taggroup-[^-]+-(.+)} $taggroup "\\1" gm_name set gerwin_obj_moving $gm_name set gerwin_obj_type_moving $gm_type set gerwin_premov_x $xpos set gerwin_premov_y $ypos set gerwin_premov_object $taggroup } "Editing" { ;# Get the coords onto the widget set xpos [${gcanvas} canvasx $xpos] set ypos [${gcanvas} canvasy $ypos] ;# Now, figure out what WGOB we want to delete set wgob [${gcanvas} find closest $xpos $ypos] ;# Get the taggroup tag from the WGOB set wgobtags [${gcanvas} gettags $wgob] set index [lsearch -glob $wgobtags "taggroup-*"] set taggroup [lindex $wgobtags $index] ;# Get the object name and type from the taggroup regsub {taggroup-([^-]+)-.+} $taggroup "\\1" gm_type regsub {taggroup-[^-]+-(.+)} $taggroup "\\1" gm_name ;# Switch over the type switch $gm_type { "Relation" { gui_edit_relation $gm_name } "Entity" { gui_edit_entity $gm_name } } } "Deleting" { ;# Get the coords onto the widget set xpos [${gcanvas} canvasx $xpos] set ypos [${gcanvas} canvasy $ypos] ;# Now, figure out what WGOB we want to delete set wgob [${gcanvas} find closest $xpos $ypos] ;# Get the taggroup tag from the WGOB set wgobtags [${gcanvas} gettags $wgob] set index [lsearch -glob $wgobtags "taggroup-*"] set taggroup [lindex $wgobtags $index] ;# Get the object name and type from the taggroup regsub {taggroup-([^-]+)-.+} $taggroup "\\1" gm_type regsub {taggroup-[^-]+-(.+)} $taggroup "\\1" gm_name ;# Switch over the type switch $gm_type { "Relation" { ;# Delete the relation from the canvas gm_delete_relation $gm_name ;# Delete the relation from all entities that haves that relation registered foreach e [gob_relation_get_entities $gm_name] { gob_entity_delete_relation [lindex $e 0] $gm_name } ;# Delete relation's links ${gcanvas} delete "taggroup-Link-$gm_name" ;# Delete the GOB gob_delete_relation $gm_name ;# Delete the relation page from the editionarea gui_edition_area_delete_page $gm_name } "Entity" { ;# Delete the entity from the canvas gm_delete_entity $gm_name ;# Delete all relations with num_entities equal to two foreach r [gob_entity_get_relations $gm_name] { if {[gob_relation_get_num_entities $r] == 2} then { ;# Delete the relation from the canvas gm_delete_relation $r ;# Delete the relation from all entities that haves that relation registered foreach e [gob_relation_get_entities $r] { gob_entity_delete_relation [lindex $e 0] $r } ;# Delete relation's links ${gcanvas} delete "taggroup-Link-$r" ;# Delete the GOB gob_delete_relation $r ;# Delete the relation page from the editionarea gui_edition_area_delete_page $r } else { ;# Quit the entity from the relation gob_relation_delete_entity $r $gm_name ;# Update the relation links ;# Note that this relation can not be reflexive gm_relation_update_links $r } } ;# Delete the GOB gob_delete_entity $gm_name ;# Delete the entity page from the editionarea gui_edition_area_delete_page $gm_name } } } } } ;# ;# gui_edition_area_delete_page PNAME ;# ;# Deletes the page named PNAME from the edition area proc gui_edition_area_delete_page {pname} { global gmainframe global earea_pages global gerwin_editionarea set userframe [${gmainframe} getframe] ;# Find the page to delete set index [lsearch $earea_pages $pname] if {$index != -1} then { set w [${gerwin_editionarea} getframe $pname] ;#set w [${userframe}.editionarea getframe $pname] ;# Delete the page from the list set earea_pages [lreplace $earea_pages $index $index] ;# Update the notebook ${gerwin_editionarea} delete $pname ;#${userframe}.editionarea delete $pname ;# Destroy the widgets destroy $w } } ;# ;# gui_attribute_is_not_key LISTBOX ENTITY ;# ;# Remove the current LISTBOX selection from the ENTITY key proc gui_attribute_is_not_key {lb entity} { global gm_entity global gerwin_relation set attribute [$lb curselection] if {! [string equal $attribute ""]} then { set attribute [$lb get $attribute] gob_entity_delete_attribute_from_key $entity $attribute set xpos $gm_entity($entity,xpos) set ypos $gm_entity($entity,ypos) gm_delete_entity $entity gm_draw_entity $entity $xpos $ypos foreach r [gob_entity_get_relations $entity] { if {$gerwin_relation($r,reflexive)} then { gm_relation_update_links_reflexive $r } else { gm_relation_update_links $r } } } } ;# ;# gui_attribute_delete_relation LISTBOX RELATION ;# ;# Delete the LISTBOX selected attribute from RELATION proc gui_attribute_delete_relation {lb relation} { global gm_relation global gerwin_relation global gerwin_editionarea set attribute [$lb curselection] if {! [string equal $attribute ""]} then { set attribute [$lb get $attribute] set vattribute $attribute # Support delete or Edit set editframe [${gerwin_editionarea} getframe $relation] set aframe [${editframe}.attributes getframe] ${aframe}.nattribute.faux.ftop.label configure -text $vattribute set dfr [${aframe}.nattribute.faux.fdown.domframe getframe] ${dfr}.label configure -text [gob_relation_get_attribute_domain $relation $vattribute] gob_relation_delete_attribute $relation $attribute set xpos $gm_relation($relation,xpos) set ypos $gm_relation($relation,ypos) gm_delete_relation $relation gm_draw_relation $relation $xpos $ypos gui_edition_area_delete_page $relation gui_edit_relation $relation if {$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation } } } ;# ;# gui_attribute_delete_entity LISTBOX ENTITY ;# ;# Delete the LISTBOX selected attribute from ENTITY proc gui_attribute_delete_entity {lb entity} { global gm_entity global gerwin_relation global gerwin_editionarea set attribute [$lb curselection] if {! [string equal $attribute ""]} then { set vattribute [$lb get $attribute] # Support delete or Edit set editframe [${gerwin_editionarea} getframe $entity] set aframe [${editframe}.attributes getframe] ${aframe}.nattribute.faux.ftop.label configure -text $vattribute set dfr [${aframe}.nattribute.faux.fdown.domframe getframe] ${dfr}.label configure -text [gob_entity_get_attribute_domain $entity $vattribute] set attribute [$lb get $attribute] gob_entity_delete_attribute $entity $attribute set xpos $gm_entity($entity,xpos) set ypos $gm_entity($entity,ypos) gm_delete_entity $entity gm_draw_entity $entity $xpos $ypos gui_edition_area_delete_page $entity gui_edit_entity $entity foreach r [gob_entity_get_relations $entity] { if {$gerwin_relation($r,reflexive)} then { gm_relation_update_links_reflexive $r } else { gm_relation_update_links $r } } } } ;# ;# gui_attribute_is_key LISTBOX ENTITY ;# ;# Add the attribute selected in LISTBOX as a new key on ENTITY proc gui_attribute_is_key {lb entity} { global gm_entity global gerwin_relation set attribute [$lb curselection] if {! [string equal $attribute ""]} then { set attribute [$lb get $attribute] ;# We exit if the attribute is already a key if {[gob_entity_is_key $entity $attribute]} then { return } gob_entity_add_attribute_to_key $entity $attribute set xpos $gm_entity($entity,xpos) set ypos $gm_entity($entity,ypos) gm_delete_entity $entity gm_draw_entity $entity $xpos $ypos foreach r [gob_entity_get_relations $entity] { if {$gerwin_relation($r,reflexive)} then { gm_relation_update_links_reflexive $r } else { gm_relation_update_links $r } } } } ;# ;# gui_edit_relation_add_attribute RELATION ;# ;# Add a new attribute with ANAME and ADOMAIN to RELATION ;# ;# ANAME and ADOMAIN cannot be emtpy. ;# All blanks in ANAME and ADOMAIN are transformed to "-" characters. proc gui_edit_relation_add_attribute {relation} { global gm_relation global gerwin_relation set aname $gm_relation($relation,nattribute) set adomain $gm_relation($relation,ndomain) ;# First of all, make sure both ANAME and ADOMAIN are not empty if {($aname == "")} then { gui_notice "Please fill the Name field if you want to add an attribute to the relation." return } if {($adomain == "")} then { gui_notice "Please fill the Domain field if you want to add an attribute to the relation." return } ;# Replace all blanks with scores set aname [string map {{ } -} $aname] set adomain [string map {{ } -} $adomain] ;# Add the attribute to the gob gob_relation_add_attribute $relation $aname $adomain set gm_relation($relation,ndomain) {} set gm_relation($relation,nattribute) {} set xpos $gm_relation($relation,xpos) set ypos $gm_relation($relation,ypos) gm_delete_relation $relation gm_draw_relation $relation $xpos $ypos if {$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation } gui_edition_area_delete_page $relation gui_edit_relation $relation } ;# ;# gui_edit_entity_add_attribute ENTITY ;# ;# Add a new attribute with ANAME and ADOMAIN to ENTITY ;# ;# ANAME and ADOMAIN cannot be emtpy. ;# All blanks in ANAME and ADOMAIN are transformed to "-" characters. proc gui_edit_entity_add_attribute {entity} { global gm_entity global gerwin_relation set aname $gm_entity($entity,nattribute) set adomain $gm_entity($entity,ndomain) ;# First of all, make sure both ANAME and ADOMAIN are not empty if {($aname == "")} then { gui_notice "Please fill the Name field if you want to add an attribute to the entity." return } if {($adomain == "")} then { gui_notice "Please fill the Domain field if you want to add an attribute to the entity." return } ;# Replace all blanks with scores set aname [string map {{ } -} $aname] set adomain [string map {{ } -} $adomain] ;# Add the attribute to the gob gob_entity_add_attribute $entity $aname $adomain set gm_entity($entity,ndomain) {} set gm_entity($entity,nattribute) {} set xpos $gm_entity($entity,xpos) set ypos $gm_entity($entity,ypos) gm_delete_entity $entity gm_draw_entity $entity $xpos $ypos foreach r [gob_entity_get_relations $entity] { if {$gerwin_relation($r,reflexive)} then { gm_relation_update_links_reflexive $r } else { gm_relation_update_links $r } } gui_edition_area_delete_page $entity gui_edit_entity $entity } ;# ;# gui_edit_relation_change_name RELATION ;# ;# Changes the name of RELATION to gm_relation(RELATION,nname) proc gui_edit_relation_change_name {relation} { global gcanvas global gm_relation global earea_pages global gerwin_relation ;# See if the new name is empty if {$gm_relation($relation,nname) == ""} then { gui_notice "The name of the relation cannot be empty!" return } ;# Change spaces for underscores set gm_relation($relation,nname) [string map {{ } _} $gm_relation($relation,nname)] if {([gob_entity_exist $gm_relation($relation,nname)] || [gob_relation_exist $gm_relation($relation,nname)])} then { gui_notice "The name of any relation or entity must be unique in all the model!" return } ;# Change the name of the gob gob_relation_change_name $relation $gm_relation($relation,nname) set nname $gm_relation($relation,nname) gui_edition_area_delete_page $relation gm_relation_change_name $relation $nname set gm_relation($relation,nname) {} gui_edit_relation $nname set xpos $gm_relation($nname,xpos) set ypos $gm_relation($nname,ypos) gm_delete_relation $nname ${gcanvas} delete taggroup-Link-$relation gm_draw_relation $nname $xpos $ypos if {$gerwin_relation($nname,reflexive)} then { gm_relation_update_links_reflexive $nname } else { gm_relation_update_links $nname } } ;# ;# gui_edit_entity_change_name ENTITY ;# ;# Changes the name of ENTITY to gm_entity(ENTITY,nname) proc gui_edit_entity_change_name {entity} { global gm_entity global earea_pages global gerwin_relation ;# See if the new name is empty if {$gm_entity($entity,nname) == ""} then { gui_notice "The name of the entity cannot be empty!" return } ;# Change spaces for underscores set gm_entity($entity,nname) [string map {{ } _} $gm_entity($entity,nname)] if {([gob_entity_exist $gm_entity($entity,nname)]) || ([gob_relation_exist $gm_entity($entity,nname)])} then { gui_notice "The name of any entity or relation must be unique in all the model!" return } ;# Change the name of the gob gob_entity_change_name $entity $gm_entity($entity,nname) set nname $gm_entity($entity,nname) gui_edition_area_delete_page $entity ;# Change the name in all relation edition areas foreach r [gob_entity_get_relations $nname] { if {[lsearch $earea_pages $r] != -1} then { gui_edition_area_delete_page $r gui_edit_relation $r } } gui_edit_entity $nname set xpos $gm_entity($entity,xpos) set ypos $gm_entity($entity,ypos) gm_entity_change_name $entity $nname gm_delete_entity $nname gm_draw_entity $nname $xpos $ypos foreach r [gob_entity_get_relations $nname] { ;# TODO: change to simply gm_relation_update_links if {$gerwin_relation($r,reflexive)} then { gm_relation_update_links_reflexive $r } else { gm_relation_update_links $r } } } ;# ;# gui_edit_entity ENTITY ;# ;# Edit all aspects of a given entity, in a page on the ;# editionarea proc gui_edit_entity {entity} { global gmainframe global gerwin_entity global gm_entity global gm_relation global gerwin_relation global earea_pages global gerwin_editionarea set userframe [${gmainframe} getframe] ;# See if the entity already have a page in the edition area set index [lsearch $earea_pages $entity] if {$index != -1} then { ;# Make the page visible ${gerwin_editionarea} raise [lindex $earea_pages $index] ;#${userframe}.editionarea raise [lindex $earea_pages $index] return } ;# Create a new page for this entity lappend earea_pages $entity ${gerwin_editionarea} insert end $entity -text $entity ;#${userframe}.editionarea insert end $entity -text $entity ;# Make the entries into the frame set editframe [${gerwin_editionarea} getframe $entity] ;#set editframe [${userframe}.editionarea getframe $entity] ;##### PROPERTIES FRAME TitleFrame ${editframe}.properties -side center -text "Entity Properties" set pframe [${editframe}.properties getframe] ;# ENTITY NAME frame ${pframe}.nameline LabelEntry ${pframe}.nameline.label -label "Name: " -labelwidth 6 \ -text $entity -textvariable gm_entity($entity,nname) \ -helptext "Name of the entity" button ${pframe}.nameline.button -text "change" -relief groove \ -command [list gui_edit_entity_change_name $entity] frame ${pframe}.typeline LabelEntry ${pframe}.typeline.label -label "Type:" -labelwidth 6 \ -textvariable gm_entity($entity,ntype) \ -helptext "Type of the entity" button ${pframe}.typeline.button -text "change" -relief groove \ -command "gob_entity_change_type $entity \$gm_entity($entity,ntype); \ set ttype \$gm_entity($entity,ntype) ; \ gui_edition_area_delete_page $entity ; \ gm_entity_change_type $entity \$gm_entity($entity,ntype); \ gui_edit_entity $entity ; \ set xpos \$gm_entity($entity,xpos); \ set ypos \$gm_entity($entity,ypos); \ gm_delete_entity $entity; \ gm_draw_entity $entity \$xpos \$ypos ; " \ -state disabled ;# pack it pack ${pframe}.nameline.label -side left pack ${pframe}.nameline.button -side left pack ${pframe}.typeline.label -side left pack ${pframe}.typeline.button -side left pack ${pframe}.nameline -side top pack ${pframe}.typeline -side top pack ${pframe} -side left -anchor nw ;#### ATTRIBUTES FRAME TitleFrame ${editframe}.attributes -side center -text "Attributes" set aframe [${editframe}.attributes getframe] frame ${aframe}.nattribute label ${aframe}.nattribute.label -text "New Attribute" frame ${aframe}.nattribute.faux frame ${aframe}.nattribute.faux.ftop frame ${aframe}.nattribute.faux.fdown LabelEntry ${aframe}.nattribute.faux.ftop.label -label "Name:" -labelwidth 7 \ -labelanchor w -textvariable gm_entity($entity,nattribute) \ -helptext "name for the new attribute" # LabelEntry ${aframe}.nattribute.faux.fdown.label -label "Domain:" -labelwidth 7 \ # -labelanchor w -textvariable gm_entity($entity,ndomain) \ # -helptext "domain for the new attribute" LabelFrame ${aframe}.nattribute.faux.fdown.domframe -text "Domain:" \ -side left set dfr [${aframe}.nattribute.faux.fdown.domframe getframe] ComboBox $dfr.label -editable true \ -textvariable gm_entity($entity,ndomain) \ -helptext "domain for the new attribute" \ -width 18 \ -values {varchar(8) varchar(16) varchar(32) int bigint text date} pack $dfr.label -side top -anchor e Button ${aframe}.nattribute.button -text "Add" -relief groove \ -command [list gui_edit_entity_add_attribute $entity] Separator ${aframe}.sep1 -orient vertical frame ${aframe}.attributes frame ${aframe}.attributes.frame scrollbar ${aframe}.attributes.frame.scrollbar \ -command [list ${aframe}.attributes.frame.lbox yview] set lb [listbox ${aframe}.attributes.frame.lbox \ -yscrollcommand [list ${aframe}.attributes.frame.scrollbar set]] ;# Insert the listbox elements foreach a [gob_entity_get_attributes $entity] { set aname [lindex $a 0] ;# Make the embedded window $lb insert end $aname } ;# make the bbox set bbox [ButtonBox ${aframe}.bbox -spacing 0 -padx 1 -pady 0 \ -orient vertical] ${bbox} add -text "Is key" -command [list gui_attribute_is_key $lb $entity] -relief groove ${bbox} add -text "Is not key" -command [list gui_attribute_is_not_key $lb $entity] -relief groove ${bbox} add -text "Del/Edit" -command [list gui_attribute_delete_entity $lb $entity] -relief groove pack ${aframe}.nattribute.label -side top pack ${aframe}.nattribute.faux.ftop.label -side top -anchor w pack ${aframe}.nattribute.faux.ftop -side top pack ${aframe}.nattribute.faux.fdown.domframe -side top -anchor w pack ${aframe}.nattribute.faux.fdown -side top pack ${aframe}.nattribute.faux -side left pack ${aframe}.nattribute.button -side right pack ${aframe}.nattribute -side left pack ${aframe}.sep1 -fill y -padx 8 -side left pack ${aframe}.attributes.frame.scrollbar -side right -fill y pack ${aframe}.attributes.frame.lbox -side left pack ${aframe}.attributes.frame pack ${aframe}.attributes -side left pack ${aframe}.bbox -side right button ${editframe}.quit -text "Close page" -relief groove \ -command "destroy ${editframe} ; \ gui_edition_area_delete_page $entity" ;# Pack the frames pack ${editframe}.properties -side left -fill both -padx 10 pack ${editframe}.attributes -side left -fill both -padx 10 pack ${editframe}.quit -side right pack ${editframe} ;# Make the page visible ${gerwin_editionarea} raise $entity ;# Scale the notebook NoteBook::compute_size ${gerwin_editionarea} } ;# ;# gui_edit_relation ;# ;# Edit all aspects of a given relation, in a page on the ;# editionarea proc gui_edit_relation {relation} { global gmainframe global gerwin_relation global gm_relation global gcanvas global earea_pages global gerwin_editionarea set userframe [${gmainframe} getframe] ;# See if the relation already have a page in the edition area set index [lsearch $earea_pages $relation] if {$index != -1} then { ;# Make the page visible ${gerwin_editionarea} raise [lindex $earea_pages $index] ;#${userframe}.editionarea raise [lindex $earea_pages $index] return } ;# Create a new page for this relation lappend earea_pages $relation ${gerwin_editionarea} insert end $relation -text $relation ;#${userframe}.editionarea insert end $relation -text $relation ;# Make the entries into the frame set editframe [${gerwin_editionarea} getframe $relation] ;#set editframe [${userframe}.editionarea getframe $relation] ;##### PROPERTIES FRAME TitleFrame ${editframe}.properties -side center -text "Relation Properties" set pframe [${editframe}.properties getframe] ;# RELATION NAME frame ${pframe}.nameline LabelEntry ${pframe}.nameline.label -label "Name: " -labelwidth 6 \ -text $relation -textvariable gm_relation($relation,nname) \ -helptext "Name of the relation" button ${pframe}.nameline.button -text "change" -relief groove \ -command [list gui_edit_relation_change_name $relation] ;# pack it pack ${pframe}.nameline.label -side left pack ${pframe}.nameline.button -side left pack ${pframe}.nameline -side top ;# RELATION ENTITIES and cardinality (entities 0 and 1 only) frame ${pframe}.cards if {[gob_relation_get_num_entities $relation] > 2} then { ;# Show a short label ;#label ${pframe}.cards.label -text "All entitities cardinality X/N" ;#pack ${pframe}.cards.label } else { ;# Binary relation: show cardinality frame ${pframe}.cards.entity1 set entities [gob_relation_get_entities $relation] set entity1_name [lindex [lindex $entities 0] 0] set entity1_mincard [lindex [lindex [lindex $entities 0] 1] 0] set entity1_maxcard [lindex [lindex [lindex $entities 0] 1] 1] set entity2_name [lindex [lindex $entities 1] 0] set entity2_mincard [lindex [lindex [lindex $entities 1] 1] 0] set entity2_maxcard [lindex [lindex [lindex $entities 1] 1] 1] Label ${pframe}.cards.entity1.ename -text $entity1_name ;# Set up the variables set gerwin_relation($relation,e1mincard) $entity1_mincard set gerwin_relation($relation,e1maxcard) $entity1_maxcard ;# Minimal card radiobutton ${pframe}.cards.entity1.rbmin0 -text "0" \ -variable gerwin_relation($relation,e1mincard) -value 0 \ -command "gob_relation_set_entity_min_card $relation $entity1_name \$gerwin_relation($relation,e1mincard) ; \ set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" radiobutton ${pframe}.cards.entity1.rbmin1 -text "1" \ -variable gerwin_relation($relation,e1mincard) -value 1 \ -command "gob_relation_set_entity_min_card $relation $entity1_name \$gerwin_relation($relation,e1mincard) ; \ set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" ;# Separator label ${pframe}.cards.entity1.sep -text "/" ;# Maximal card radiobutton ${pframe}.cards.entity1.rbmax1 -text "1" \ -variable gerwin_relation($relation,e1maxcard) -value 1 \ -command "gob_relation_set_entity_max_card $relation $entity1_name \$gerwin_relation($relation,e1maxcard) ; \ set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" radiobutton ${pframe}.cards.entity1.rbmaxN -text "N" \ -variable gerwin_relation($relation,e1maxcard) -value N \ -command "gob_relation_set_entity_max_card $relation $entity1_name \$gerwin_relation($relation,e1maxcard) ; \ set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" ;# Set gui_e1mincard and gui_e1maxcard as appropiate set qui_e1mincard [gob_relation_get_entity_min_card $relation $entity1_name] set gui_e1maxcard [gob_relation_get_entity_max_card $relation $entity1_name] pack ${pframe}.cards.entity1.ename -side top pack ${pframe}.cards.entity1.rbmin0 -side left pack ${pframe}.cards.entity1.rbmin1 -side left pack ${pframe}.cards.entity1.sep -side left pack ${pframe}.cards.entity1.rbmax1 -side left pack ${pframe}.cards.entity1.rbmaxN -side left pack ${pframe}.cards.entity1 -side left frame ${pframe}.cards.entity2 ;# Set up the variables set gerwin_relation($relation,e2mincard) $entity2_mincard set gerwin_relation($relation,e2maxcard) $entity2_maxcard Label ${pframe}.cards.entity2.ename -text $entity2_name ;# Minimal card radiobutton ${pframe}.cards.entity2.rbmin0 -text "0" \ -variable gerwin_relation($relation,e2mincard) -value 0 \ -command " set entities \[gob_relation_get_entities $relation\] set e1 \[lindex \$entities 0\] set e2 \[lindex \$entities 1\] set e2name \[lindex \$e2 0\] set e2cards \[lindex \$e2 1\] set gerwin_relation($relation,entities) \[list \$e1 \[list \$e2name \[list \$gerwin_relation($relation,e2mincard) \[lindex \$e2cards 1\]\]\]\] set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" radiobutton ${pframe}.cards.entity2.rbmin1 -text "1" \ -variable gerwin_relation($relation,e2mincard) -value 1 \ -command " set entities \[gob_relation_get_entities $relation\] set e1 \[lindex \$entities 0\] set e2 \[lindex \$entities 1\] set e2name \[lindex \$e2 0\] set e2cards \[lindex \$e2 1\] set gerwin_relation($relation,entities) \[list \$e1 \[list \$e2name \[list \$gerwin_relation($relation,e2mincard) \[lindex \$e2cards 1\]\]\]\] set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" ;# Separator label ${pframe}.cards.entity2.sep -text "/" ;# Maximal card radiobutton ${pframe}.cards.entity2.rbmax1 -text "1" \ -variable gerwin_relation($relation,e2maxcard) -value 1 \ -command " set entities \[gob_relation_get_entities $relation\] set e1 \[lindex \$entities 0\] set e2 \[lindex \$entities 1\] set e2name \[lindex \$e2 0\] set e2cards \[lindex \$e2 1\] set gerwin_relation($relation,entities) \[list \$e1 \[list \$e2name \[list \[lindex \$e2cards 0\] \$gerwin_relation($relation,e2maxcard) \]\]\] set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" radiobutton ${pframe}.cards.entity2.rbmaxN -text "N" \ -variable gerwin_relation($relation,e2maxcard) -value N \ -command " set entities \[gob_relation_get_entities $relation\] set e1 \[lindex \$entities 0\] set e2 \[lindex \$entities 1\] set e2name \[lindex \$e2 0\] set e2cards \[lindex \$e2 1\] set gerwin_relation($relation,entities) \[list \$e1 \[list \$e2name \[list \[lindex \$e2cards 0\] \$gerwin_relation($relation,e2maxcard) \]\]\] set xpos \$gm_relation($relation,xpos); \ set ypos \$gm_relation($relation,ypos); \ gm_delete_relation $relation ; \ gm_draw_relation $relation \$xpos \$ypos ; \ if {\$gerwin_relation($relation,reflexive)} then { gm_relation_update_links_reflexive $relation } else { gm_relation_update_links $relation }" ;# Set gui_e2maxcard as appropiate set gui_e2maxcard [gob_relation_get_entity_card $relation $entity2_name] pack ${pframe}.cards.entity2.ename -side top pack ${pframe}.cards.entity2.rbmin0 -side left pack ${pframe}.cards.entity2.rbmin1 -side left pack ${pframe}.cards.entity2.sep -side left pack ${pframe}.cards.entity2.rbmax1 -side left pack ${pframe}.cards.entity2.rbmaxN -side left Separator ${pframe}.cards.sep2 -orient vertical pack ${pframe}.cards.sep2 -fill y -padx 4 -side left pack ${pframe}.cards.entity2 -side right pack ${pframe}.cards -side left pack ${pframe}.cards -side top } pack ${pframe} -side left -anchor w ;#### ATTRIBUTES FRAME TitleFrame ${editframe}.attributes -side center -text "Attributes" set aframe [${editframe}.attributes getframe] frame ${aframe}.nattribute label ${aframe}.nattribute.label -text "New Attribute" frame ${aframe}.nattribute.faux frame ${aframe}.nattribute.faux.ftop frame ${aframe}.nattribute.faux.fdown LabelEntry ${aframe}.nattribute.faux.ftop.label -label "Name:" -labelwidth 7 \ -labelanchor w -textvariable gm_relation($relation,nattribute) \ -helptext "name for the new attribute" # LabelEntry ${aframe}.nattribute.faux.fdown.label -label "Domain:" -labelwidth 7 \ # -labelanchor w -textvariable gm_relation($relation,ndomain) \ # -helptext "domain for the new attribute" LabelFrame ${aframe}.nattribute.faux.fdown.domframe -text "Domain:" \ -side left set dfr [${aframe}.nattribute.faux.fdown.domframe getframe] ComboBox $dfr.label -editable true \ -textvariable gm_relation($relation,ndomain) \ -helptext "domain for the new attribute" \ -width 18 \ -values {varchar(8) varchar(16) varchar(32) int bigint text date} pack $dfr.label -side top -anchor e Button ${aframe}.nattribute.button -text "Add" -relief groove \ -command [list gui_edit_relation_add_attribute $relation] Separator ${aframe}.sep1 -orient vertical frame ${aframe}.attributes frame ${aframe}.attributes.frame scrollbar ${aframe}.attributes.frame.scrollbar \ -command [list ${aframe}.attributes.frame.lbox yview] set lb [listbox ${aframe}.attributes.frame.lbox \ -yscrollcommand [list ${aframe}.attributes.frame.scrollbar set]] ;# Insert the listbox elements foreach a [gob_relation_get_attributes $relation] { set aname [lindex $a 0] ;# Make the embedded window $lb insert end $aname } ;# make the bbox set bbox [ButtonBox ${aframe}.bbox -spacing 0 -padx 1 -pady 0 \ -orient vertical] ${bbox} add -text "Del/Edit" -command [list gui_attribute_delete_relation $lb $relation] -relief groove pack ${aframe}.nattribute.label -side top pack ${aframe}.nattribute.faux.ftop.label -side top -anchor w pack ${aframe}.nattribute.faux.ftop -side top pack ${aframe}.nattribute.faux.fdown.domframe -side top -anchor w pack ${aframe}.nattribute.faux.fdown -side top pack ${aframe}.nattribute.faux -side left pack ${aframe}.nattribute.button -side right pack ${aframe}.nattribute -side left pack ${aframe}.sep1 -fill y -padx 8 -side left pack ${aframe}.attributes.frame.scrollbar -side right -fill y pack ${aframe}.attributes.frame.lbox -side left pack ${aframe}.attributes.frame pack ${aframe}.attributes -side left pack ${aframe}.bbox -side right button ${editframe}.quit -text "Close page" -relief groove \ -command "destroy ${editframe} ; \ gui_edition_area_delete_page $relation" ;# Pack the frames pack ${editframe}.properties -side left -fill both -padx 10 pack ${editframe}.attributes -side left -fill both -padx 10 pack ${editframe}.quit -side right pack ${editframe} ;# Make the page visible ${gerwin_editionarea} raise $relation ;#${userframe}.editionarea raise $relation ;# Scale the notebook NoteBook::compute_size ${gerwin_editionarea} } ;# ;# gui_select_file_to_save_sql ;# ;# Select a file to save the generated SQL proc gui_select_file_to_save_sql {} { set filetypes {{"SQL File" {.sql}}} set f [tk_getSaveFile -initialdir "." \ -filetypes $filetypes -title "Select a SQL file"] ;# Switch over the result switch $f { "" { ;# Do nothing return } default { ;# Put the .sql suffix if it is not done if {! [string match "*.sql" $f] } then { append f ".sql" } return $f } } } ;# ;# gui_select_file_to_save ;# ;# Select a file to save the project proc gui_select_file_to_save {} { set filetypes {{"Gerwin Project" {.ger}}} set f [tk_getSaveFile -initialdir "." \ -filetypes $filetypes -title "Select a project file"] ;# Switch over the result switch $f { "" { ;# Do nothing return } default { ;# Put the .ger suffix if it is not done if {! [string match "*.ger" $f] } then { append f ".ger" } return $f } } } ;# ;# gui_edit_project ;# ;# Edit the actual Project parameters ;# Another edit widget can be put at the right of that. proc gui_edit_project {} { global gerwin_cproject_name global gerwin_cproject_file global gerwin_editionarea global earea_pages lappend earea_pages Project ${gerwin_editionarea} insert end Project -text Project ${gerwin_editionarea} raise Project set widget [${gerwin_editionarea} getframe Project] TitleFrame ${widget}.editframe -side center -text "Project Properties" set editwidget [${widget}.editframe getframe] ;# Project name frame ${editwidget}.nameline LabelEntry ${editwidget}.nameline.label -label "Project Name:" -labelwidth 16 \ -textvariable gerwin_cproject_name \ -helptext "Name of the current project" -width 50 ;# Project file frame ${editwidget}.fileline LabelEntry ${editwidget}.fileline.label -label "Project File:" -labelwidth 16 \ -textvariable gerwin_cproject_file \ -helptext "Storage file of the current project" -editable false \ -width 50 Button ${editwidget}.fileline.button -text "select file" \ -helptext "Select a file to store the project in" \ -command "set tempfile \[gui_select_file_to_save\] ; \ if {\$tempfile != {}} then { set gerwin_cproject_file \$tempfile gerwin_save_project_file } " \ -relief groove ;# Project author frame ${editwidget}.authorline LabelEntry ${editwidget}.authorline.label -label "Project Author:" -labelwidth 16 \ -textvariable gerwin_cproject_author \ -helptext "Author of the current project" -width 50 pack ${editwidget}.nameline.label -side left -anchor w pack ${editwidget}.nameline -side top -anchor w pack ${editwidget}.fileline.label -side left -anchor w pack ${editwidget}.fileline.button -side left pack ${editwidget}.fileline -side top -anchor w pack ${editwidget}.authorline.label -side left -anchor w pack ${editwidget}.authorline -side top -anchor w pack ${editwidget} -side top -fill both -expand true pack ${widget}.editframe -side top ;#-fill both -expand true ;# Scale the notebook NoteBook::compute_size ${gerwin_editionarea} } ;# ;# gui_get_free_oct OBJ TYPE CUAD ;# ;# Get a free oct on CUAD for OBJ-TYPE proc gui_get_free_oct {obj type cuad} { global gerwin_entity switch $cuad { 1 { ;# oct for obj must be o2 or o1 if {[gui_oct_is_busy $obj $type 1]} then { return 2 } else { return 1 } } 2 { ;# oct for obj must be o3 or o4 if {[gui_oct_is_busy $obj $type 3]} then { return 4 } else { return 3 } } 3 { ;# oct for object 1 must be o5 or o6 if {[gui_oct_is_busy $obj $type 5]} then { return 6 } else { return 5 } } 4 { ;# oct for object 1 must be o7 or o8 if {[gui_oct_is_busy $obj $type 8]} then { return 7 } else { return 8 } } } } ;# ;# gui_oct_is_busy OBJ TYPE OCT ;# ;# See if OCT is busy for OBJ-TYPE proc gui_oct_is_busy {obj type oct} { global gerwin_entity switch $type { "Entity" { ;# Get the oct array from the entity set octarray $gerwin_entity($obj,octs) if {[lindex $octarray [expr $oct - 1]] != ""} then { ;# oct busy return 1 } else { return 0 } } } } ;# ;# gui_get_link_point_from_oct {obj type oct} ;# proc gui_get_link_point_from_oct {obj type oct} { global gerwin_entity global gcanvas switch $type { "Entity" { ;# Get the bbox of the entity set bbox [${gcanvas} bbox taggroup-$type-$obj] set x1 [lindex $bbox 0] set y1 [lindex $bbox 1] set x2 [lindex $bbox 2] set y2 [lindex $bbox 3] ;# Calculate the link point based on the oct switch $oct { 1 { return [list $x2 [expr ($y1 + (($y2 - $y1) / 4))]] } 2 { return [list [expr ($x1 + ((($x2 - $x1) / 4) * 3))] $y1] } 3 { return [list [expr ($x1 + (($x2 - $x1) / 4))] $y1] } 4 { return [list $x1 [expr ($y1 + (($y2 - $y1) / 4))]] } 5 { return [list $x1 [expr ($y1 + ((($y2 - $y1) /4) * 3))]] } 6 { return [list [expr ($x1 + (($x2 - $x1) / 4))] $y2] } 7 { return [list [expr ($x1 + ((($x2 - $x1) / 4) * 3))]] } 8 { return [list $x2 [expr ($y1 + ((($y2 - $y1) / 4) * 3))]] } } } } } ;# ;# gui_add_link_to_oct TYPE1 OBJ1 TYPE2 OBJ2 OCT ;# ;# Add a link to OBJ2 to OBJ1's OCT proc gui_add_link_to_oct {type1 obj1 type2 obj2 oct} { global gerwin_entity global gerwin_links ;# Add the new link to gerwin_links lappend gerwin_links [list $type1 $obj1 $type2 $obj2] lappend gerwin_links [list $type2 $obj2 $type1 $obj1] switch $type1 { Entity { set temp [lindex $gerwin_entity($obj1,octs) [expr $oct - 1]] lappend temp [list $type2 $obj2] set gerwin_entity($obj1,octs) \ [lreplace $gerwin_entity($obj1,octs) [expr $oct - 1] [expr $oct - 1] $temp] } } } ;# ;# gui_redraw_oct TYPE OBJ OCT ;# ;# Redraw all links on the OBJ oct named OCT proc gui_redraw_oct {type obj oct} { global gerwin_entity switch $type { Entity { set oct_content [lindex $gerwin_entity($obj,octs) [expr $oct - 1]] ;# Get the internal pad set nlinks [llength $oct_content] set ipad } } } ;# ;# gui_link {TYPE1 OBJ1} {TYPE2 OBJ2} ;# ;# Makes and draw a link between OBJ1 and OBJ2 proc gui_link {elem1 elem2} { global gerwin_entity global gm_entity global gcanvas set type1 [lindex $elem1 0] set type2 [lindex $elem2 0] set object1 [lindex $elem1 1] set object2 [lindex $elem2 1] ;# Get bboxes set bbox1 [${gcanvas} bbox "taggroup-$type1-$object1"] set bbox2 [${gcanvas} bbox "taggroup-$type2-$object2"] ;# Obtain the cuads set refpoint1x [lindex $bbox1 2] set refpoint1y [lindex $bbox1 3] set refpoint2x [lindex $bbox2 2] set refpoint2y [lindex $bbox2 3] set cuad1 [gui_get_cuad $refpoint1x $refpoint1y \ $refpoint2x $refpoint2y] switch $cuad1 { 1 { set cuad2 3 } 2 { set cuad2 4 } 3 { set cuad2 1 } 4 { set cuad2 2 } } ;# Depending of the cuad, we must find an oct link point for both ;# objects. set oct1 [gui_get_free_oct $object1 $type1 $cuad1] ;# We get oct2 depending of oct1 switch $oct1 { 8 { set oct2 3} 7 { set oct2 4} 6 { set oct2 1} 5 { set oct2 2} 4 { set oct2 7} 3 { set oct2 8} 2 { set oct2 5} 1 { set oct2 6} } ;# Add the new link to the links of both objects octs gui_add_link_to_oct $type1 $obj1 $type2 $obj2 $oct1 gui_add_link_to_oct $type2 $obj2 $type1 $obj1 $oct2 ;# Redraw the octs links for both objects ;#gui_redraw_oct $type1 $obj1 $oct1 ;#gui_redraw_oct $type2 $obj2 $oct2 ;# Get the link points set lpoint1 [gui_get_link_point_from_oct $object1 $type1 $oct1] set lp1x [lindex $lpoint1 0] set lp1y [lindex $lpoint1 1] set lpoint2 [gui_get_link_point_from_oct $object2 $type2 $oct2] set lp2x [lindex $lpoint2 0] set lp2y [lindex $lpoint2 1] ;# Get the link's intermediate point ;# It depend of the cuad switch $cuad1 { 1 { set intpx $lp2x set intpy $lp1y } 2 { set intpx $lp1x set intpy $lp2y } 3 { set intpx $lp2x set intpy $lp1y } 4 { set intpx $lp2x set intpy $lp1y } } ;# make the link ${gcanvas} create line $lp1x $lp1y \ $intpx $intpy \ $lp2x $lp2y \ -tag $type1-$object1-$type2-$object2 } ;# ;# gui_link_delete type1 object1 type2 object2 ;# ;# Deletes the link proc gui_link_delete {type1 obj1 type2 obj2} { global gcanvas ${gcanvas} delete $type1-$obj1-$type2-$obj2 } ferret-0.6.orig/src/mysql.tcl0000644000175000017500000001262107754172245014702 0ustar fikefike;# mysql.tcl -- Gerwin ;# ;# Mysql SQL generation routine ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 15:08:57 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;# Register the format lappend gerwin_output_formats mysql ;# Set the color scheme for this output format set output_colors(mysql) { {CREATE blue} {TABLE blue} {ALTER blue} {ADD blue} {KEY blue} {FOREIGN blue} {REFERENCES blue} {PRIMARY blue} {{NOT NULL} darkgreen} {{\(} blue} {{\)} blue} {{,} orange} {{;} orange} {{--.*$} red} {{\".*?\"} orange} } ;# Set the type scheme for this output format set gerwin_output_format_types(mysql) { {{DYNAMIC_STRING(%d)} {VARCHAR(%d)}} {{FIXED_STRING(%d)} {CHAR(%d)}} {INTEGER INTEGER} {FLOAT FLOAT} {NATURAL INTEGER} {CHARACTER {CHAR(1)}} } ;# The generation routine proc gen_TD_to_format_mysql {} { global gerwin_cproject_name global gerwin_cproject_author global gerwin_cproject_file global gerwin_output_active_format global gerwin_tables global gerwin_table ;# Generate some comments omit_line "-- Automatically generated by Gerwin" omit_line "--" omit_line "-- Project $gerwin_cproject_name" omit_line "-- From file: $gerwin_cproject_file" omit_line "-- By: $gerwin_cproject_author" omit_line "--" omit_line "-- Using output format: $gerwin_output_active_format" ;# Ok, generate the SQL ;# Iterate on the tables foreach t $gerwin_tables { set table_name $t ;# Some blank space before each table omit_line "" omit_line "" omit_line "" omit_line "CREATE TABLE $t (" ;# Iterate on the table attributes set nattributes [gob_table_get_nattributes $t] set i 0 foreach a [gob_table_get_attributes $t] { incr i ;# See if the name contain any # ;# If it is the case, then this is a repeated foreign key ;# and the name in gob_table_get_foreign_keys is without the #! if {[regexp \% $a]} then { ;# Convert the % to an underscore set nname [string map "% _" $a] } else { set nname $a } ;# Write the attribute name and the attribute domain append line " $nname [gob_table_get_attribute_domain $t $a]" ;# Write NULL or NOT NULL if {! [gob_table_get_attribute_null $t $a]} then { ;# The attribute is not anullable append line " NOT NULL" } if {$i != $nattributes} then { ;# End of the column line append line "," } ;# Ok, omit the line omit_line $line set line {} } ;# End of the table omit_line ");" omit_line "" omit_line "" ;# Emit the primary key for $t set pkey "ALTER TABLE $t ADD PRIMARY KEY (" set nattributes [llength [gob_table_get_key $t]] set i 0 foreach a [gob_table_get_key $t] { incr i ;# See if the name contain any # ;# If it is the case, then this is a repeated foreign key ;# and the name in gob_table_get_foreign_keys is without the #! if {[regexp \% $a]} then { ;# Convert the # to an underscore set nname [string map "% _" $a] } else { set nname $a } if {$i == $nattributes} then { append pkey "${nname}\);" } else { append pkey "${nname}," } } omit_line $pkey } omit_line "" ;# Generate foreign keys on the tables foreach t $gerwin_tables { omit_line "" omit_line "" ;# Emit foreign keys for $t set rtables {} foreach fkd [gob_table_get_foreign_keys $t] { set rtable [lindex $fkd 1] if {[lsearch $rtables $rtable] == -1} then { lappend rtables $rtable } } ;# Ok, now we have all the rtables that $t references into $rtables foreach rtable $rtables { set lattrs {} set rattrs {} set fkline "ALTER TABLE $t ADD FOREIGN KEY" ;# Emit the foreign keys for this rtable foreach a [gob_table_get_attributes $t] { ;# Get the remote name for the attribute regsub {.+%([^%]+)} $a "\\1" nname set nname [string map "% _" $nname] if {[gob_table_is_foreign_key $t $a]} then { ;# Get the foreign key for the attribute set art [gob_table_get_foreign_key_rtable $t $a] if {$art == $rtable} then { set a [string map "% _" $a] ;# Begin foreign_key_attribute lappend lattrs $a lappend rattrs $nname } } } append fkline " \(" set i 0 foreach la $lattrs { incr i if {$i == [llength $lattrs]} then { append fkline $la } else { append fkline "$la," } } append fkline "\) REFERENCES $rtable \(" set i 0 foreach ra $rattrs { incr i if {$i == [llength $rattrs]} then { append fkline $ra } else { append fkline "$ra," } } append fkline "\);" ;# Ok, emit the line omit_line $fkline } } } ferret-0.6.orig/src/postgresql.tcl0000644000175000017500000001265707754172245015751 0ustar fikefike;# postgresql.tcl -- Gerwin ;# ;# PostgreSQL SQL generation routine ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 15:06:08 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;# Register the output format lappend gerwin_output_formats postgresql ;# Set the color scheme for this output format set output_colors(postgresql) { {CREATE blue} {TABLE blue} {ALTER blue} {ADD blue} {KEY blue} {FOREIGN blue} {REFERENCES blue} {PRIMARY blue} {{NOT NULL} darkgreen} {{\(} blue} {{\)} blue} {{,} orange} {{;} orange} {{--.*$} red} {{\".*?\"} orange} } ;# Set the type scheme for this output format set gerwin_output_format_types(postgresql) { {{DYNAMIC_STRING(%d)} {VARCHAR(%d)}} {{FIXED_STRING(%d)} {CHAR(%d)}} {INTEGER INTEGER} {FLOAT FLOAT} {NATURAL INTEGER} {CHARACTER {CHAR(1)}} } ;# The generation routine proc gen_TD_to_format_postgresql {} { global gerwin_cproject_name global gerwin_cproject_author global gerwin_cproject_file global gerwin_output_active_format global gerwin_tables global gerwin_table ;# Generate some comments omit_line "-- Automatically generated by Gerwin" omit_line "--" omit_line "-- Project $gerwin_cproject_name" omit_line "-- From file: $gerwin_cproject_file" omit_line "-- By: $gerwin_cproject_author" omit_line "--" omit_line "-- Using SQL dialect: $gerwin_output_active_format" ;# Ok, generate the SQL ;# Iterate on the tables foreach t $gerwin_tables { set table_name $t ;# Some blank space before each table omit_line "" omit_line "" omit_line "" omit_line "CREATE TABLE $t (" ;# Iterate on the table attributes set nattributes [gob_table_get_nattributes $t] set i 0 foreach a [gob_table_get_attributes $t] { incr i ;# See if the name contain any # ;# If it is the case, then this is a repeated foreign key ;# and the name in gob_table_get_foreign_keys is without the #! if {[regexp \% $a]} then { ;# Convert the # to an underscore set nname [string map {% _} $a] } else { set nname $a } ;# Write the attribute name and the attribute domain append line " $nname [gob_table_get_attribute_domain $t $a]" ;# Write NULL or NOT NULL if {! [gob_table_get_attribute_null $t $a]} then { ;# The attribute is not anullable append line " NOT NULL" } if {$i != $nattributes} then { ;# End of the column line append line "," } ;# Ok, omit the line omit_line $line set line {} } ;# End of the table omit_line ");" omit_line "" omit_line "" ;# Emit the primary key for $t set pkey "ALTER TABLE $t ADD PRIMARY KEY (" set nattributes [llength [gob_table_get_key $t]] set i 0 foreach a [gob_table_get_key $t] { incr i ;# See if the name contain any % ;# If it is the case, then this is a repeated foreign key ;# and the name in gob_table_get_foreign_keys is without the #! if {[regexp \% $a]} then { ;# Convert the % to an underscore set nname [string map {% _} $a] } else { set nname $a } if {$i == $nattributes} then { append pkey "${nname}\);" } else { append pkey "${nname}," } } omit_line $pkey } ;# Generate foreign keys on the tables foreach t $gerwin_tables { omit_line "" omit_line "" ;# Emit foreign keys for $t set rtables {} foreach fkd [gob_table_get_foreign_keys $t] { set rtable [lindex $fkd 1] if {[lsearch $rtables $rtable] == -1} then { lappend rtables $rtable } } ;# Ok, now we have all the rtables that $t references into $rtables foreach rtable $rtables { set lattrs {} set rattrs {} set fkline "ALTER TABLE $t ADD FOREIGN KEY" ;# Emit the foreign keys for this rtable foreach a [gob_table_get_attributes $t] { ;# Get the remote name for the attribute regsub {.+%([^%]+)} $a "\\1" nname set nname [string map "% _" $nname] if {[gob_table_is_foreign_key $t $a]} then { ;# Get the foreign key for the attribute set art [gob_table_get_foreign_key_rtable $t $a] if {$art == $rtable} then { set a [string map "% _" $a] ;# Begin foreign_key_attribute lappend lattrs $a lappend rattrs $nname } } } append fkline " \(" set i 0 foreach la $lattrs { incr i if {$i == [llength $lattrs]} then { append fkline $la } else { append fkline "$la," } } append fkline "\) REFERENCES $rtable \(" set i 0 foreach ra $rattrs { incr i if {$i == [llength $rattrs]} then { append fkline $ra } else { append fkline "$ra," } } append fkline "\);" ;# Ok, emit the line omit_line $fkline omit_line "" } } } ferret-0.6.orig/src/sql92.tcl0000644000175000017500000001266707754172246014522 0ustar fikefike;# sql92l.tcl -- Gerwin ;# ;# PostgreSQL SQL generation routine ;# ;# Copyright (C) Jose E. Marchesi ;# ;# Time-stamp: "2003-11-11 15:05:28 jemarch" ;# This program is free software; you can redistribute it and/or ;# modify it under the terms of the GNU General Public License as ;# published by the Free Software Foundation; either version 2 of ;# the License, or (at your option) any later version. ;# This program is distributed in the hope that it will be useful, ;# but WITHOUT ANY WARRANTY; without even the implied warranty of ;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;# GNU General Public License for more details. ;# You should have received a copy of the GNU General Public ;# License along with this program; if not, write to the Free ;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ;# MA 02111-1307 USA ;# Register the format lappend gerwin_output_formats sql92 ;# Set the color scheme for this output format set output_colors(sql92) { {CREATE blue} {TABLE blue} {ALTER blue} {ADD blue} {KEY blue} {FOREIGN blue} {REFERENCES blue} {PRIMARY blue} {{NOT NULL} darkgreen} {{\(} blue} {{\)} blue} {{,} orange} {{;} orange} {{--.*$} red} {{\".*?\"} orange} } ;# Set the type scheme for this output format set gerwin_output_format_types(sql92) { {{DYNAMIC_STRING(%d)} {VARCHAR(%d)}} {{FIXED_STRING(%d)} {CHAR(%d)}} {INTEGER INTEGER} {FLOAT FLOAT} {NATURAL INTEGER} {CHARACTER {CHAR(1)}} } ;# The generation routine proc gen_TD_to_format_sql92 {} { global gerwin_cproject_name global gerwin_cproject_author global gerwin_cproject_file global gerwin_output_active_format global gerwin_tables global gerwin_table ;# Generate some comments omit_line "-- Automatically generated by Gerwin" omit_line "--" omit_line "-- Project $gerwin_cproject_name" omit_line "-- From file: $gerwin_cproject_file" omit_line "-- By: $gerwin_cproject_author" omit_line "--" omit_line "-- Using output format: $gerwin_output_active_format" ;# Ok, generate the SQL ;# Iterate on the tables foreach t $gerwin_tables { set table_name $t ;# Some blank space before each table omit_line "" omit_line "" omit_line "" omit_line "CREATE TABLE $t (" ;# Iterate on the table attributes set nattributes [gob_table_get_nattributes $t] set i 0 foreach a [gob_table_get_attributes $t] { incr i ;# See if the name contain any # ;# If it is the case, then this is a repeated foreign key ;# and the name in gob_table_get_foreign_keys is without the #! if {[regexp \% $a]} then { ;# Convert the # to an underscore set nname [string map "% _" $a] } else { set nname $a } ;# Write the attribute name and the attribute domain append line " $nname [gob_table_get_attribute_domain $t $a]" ;# Write NULL or NOT NULL if {! [gob_table_get_attribute_null $t $a]} then { ;# The attribute is not anullable append line " NOT NULL" } if {$i != $nattributes} then { ;# End of the column line append line "," } ;# Ok, omit the line omit_line $line set line {} } ;# End of the table omit_line ");" omit_line "" omit_line "" ;# Emit the primary key for $t set pkey "ALTER TABLE $t ADD PRIMARY KEY (" set nattributes [llength [gob_table_get_key $t]] set i 0 foreach a [gob_table_get_key $t] { incr i ;# See if the name contain any # ;# If it is the case, then this is a repeated foreign key ;# and the name in gob_table_get_foreign_keys is without the #! if {[regexp \% $a]} then { ;# Convert the # to an underscore set nname [string map "% _" $a] } else { set nname $a } if {$i == $nattributes} then { append pkey "${nname}\);" } else { append pkey "${nname}," } } omit_line $pkey } omit_line "" omit_line "" ;# Generate foreign keys on the tables foreach t $gerwin_tables { omit_line "" omit_line "" ;# Emit foreign keys for $t set rtables {} foreach fkd [gob_table_get_foreign_keys $t] { set rtable [lindex $fkd 1] if {[lsearch $rtables $rtable] == -1} then { lappend rtables $rtable } } ;# Ok, now we have all the rtables that $t references into $rtables foreach rtable $rtables { set lattrs {} set rattrs {} set fkline "ALTER TABLE $t ADD FOREIGN KEY" ;# Emit the foreign keys for this rtable foreach a [gob_table_get_attributes $t] { ;# Get the remote name for the attribute regsub {.+%([^%]+)} $a "\\1" nname set nname [string map "% _" $nname] if {[gob_table_is_foreign_key $t $a]} then { ;# Get the foreign key for the attribute set art [gob_table_get_foreign_key_rtable $t $a] if {$art == $rtable} then { set a [string map "% _" $a] ;# Begin foreign_key_attribute lappend lattrs $a lappend rattrs $nname } } } append fkline " \(" set i 0 foreach la $lattrs { incr i if {$i == [llength $lattrs]} then { append fkline $la } else { append fkline "$la," } } append fkline "\) REFERENCES $rtable \(" set i 0 foreach ra $rattrs { incr i if {$i == [llength $rattrs]} then { append fkline $ra } else { append fkline "$ra," } } append fkline "\);" ;# Ok, emit the line omit_line $fkline omit_line "" } } } ferret-0.6.orig/widgets/0000755000175000017500000000000010400740551013665 5ustar fikefikeferret-0.6.orig/widgets/icons/0000755000175000017500000000000010244441702015002 5ustar fikefikeferret-0.6.orig/widgets/icons/icons.tcl0000644000175000017500000002120307741225415016630 0ustar fikefike#=======================================================================# # SCRIPT : icons.tcl # # PURPOSE: Create icon images from contents of icon library file. # # AUTHOR : Adrian Davis # # VERSION: 1.2 # #-----------------------------------------------------------------------# # NAME # # icons # # SYNOPSIS # # icons mode ?arg arg ...? # # DESCRIPTION # # icons create ?option value ...? ?iconlist? # # icons delete ?iconlist? # # icons query ?option value ...? ?iconlist? # # OPTIONS # # -file # # -group # # -items # #=======================================================================# package require Tk 8.0 package provide icons 1.0 #=======================================================================# # Export the public interface. # #=======================================================================# namespace eval ::icons:: { namespace export icons } #=======================================================================# # PROC : ::icons::icons # # PURPOSE: Exported command. # #=======================================================================# proc ::icons::icons {args} { # Check for a simple error. if {[llength $args] < 2} { error "ERROR: Wrong number of Args" } # Set defaults for options. set file tkIcons set groupList {} set iconList {} set items ngts set mode [lindex $args 0] # If there are an even number of arguments there cannot be # a set of option/value pairs. In this case assume the last # argument is an "iconlist". if {[expr {[llength $args] % 2}] == 0} { set iconList [lindex [lrange $args end end] 0] set lastArg [expr {[llength $args] - 2}] } else { set lastArg [expr {[llength $args] - 1}] } # Read/validate option/value pairs. foreach {option value} [lrange $args 1 $lastArg] { switch -- $option { -file {set file $value} -group {set groupList $value} -items {set items $value} default {error "ERROR: Invalid option ($option)"} } } # Check for file. If file does not exist in specified path # check if the file exists relative to the "library" path. if {! [file exists $file]} { if {[file exists [file join [info library] $file]]} { set file [file join [info library] $file] } else { if {[string compare $mode delete] != 0} { error "ERROR: Invalid file ($file)" } } } # Call appropriate procedure according to specified mode. switch -- $mode { create {create $file $groupList $iconList} delete {delete $iconList} query {query $file $groupList $items $iconList} default {error "ERROR: Invalid mode ($mode)"} } } #=======================================================================# # PROC : ::icons::create # # PURPOSE: Create specified icons. # #=======================================================================# proc ::icons::create {file groupList iconList} { set iconCreate {} set iconLibrary [open $file r] set iconMatchCount 0 # If no groups have been specified it is possible to # exit this procedure when all specified icons have # been created. Set flag and initialise counter. if {[llength $groupList] == 0} { set iconListCount [llength $iconList] set iconOnly 1 } else { set iconListCount 0 set iconOnly 0 } # Read the contents of the icon library file. while {[gets $iconLibrary iconInfoRecord] >= 0} { set iconInfo [split $iconInfoRecord :] set iconItem(n) [lindex $iconInfo 0] set iconItem(g) [lindex $iconInfo 1] set iconItem(d) [lindex $iconInfo 4] set createMatch 0 # If the icon name -or- one of the icon groups # match, set "match" flag. if {[lsearch $iconList $iconItem(n)] > -1} { set createMatch 1 incr iconMatchCount } else { foreach group $groupList { if {[lsearch $iconItem(g) $group] > -1} { set createMatch 1 } } } # If "match" flag set, create image for icon and append name # to list of icons created. if $createMatch { image create photo ::icon::$iconItem(n) -data $iconItem(d) lappend iconCreate $iconItem(n) } unset iconItem # If no groups have been specified, exit procedure # if all specified icons have been created. if $iconOnly { if {$iconListCount == $iconMatchCount} { close $iconLibrary return $iconCreate } } } close $iconLibrary return $iconCreate } #=======================================================================# # PROC : ::icons::delete # # PURPOSE: Delete specified icons. # #=======================================================================# proc ::icons::delete {iconList} { # Delete image for each of the specified icons. foreach icon $iconList { image delete ::icon::$icon } } #=======================================================================# # PROC : ::icons::query # # PURPOSE: Procedure to return specified contents of icon library file. # #=======================================================================# proc ::icons::query {file groupList items iconList} { set iconLibrary [open $file r] set iconMatchCount 0 set iconQuery {} # If no groups have been specified it is possible to # exit this procedure when all specified icons have # been found. Set flag and initialise counter. if {[llength $groupList] == 0} { set iconListCount [llength $iconList] set iconOnly 1 } else { set iconListCount 0 set iconOnly 0 } # Read the contents of the icon library file. while {[gets $iconLibrary iconInfoRecord] >= 0} { set iconInfo [split $iconInfoRecord :] set iconItem(n) [lindex $iconInfo 0] set iconItem(g) [lindex $iconInfo 1] set iconItem(t) [lindex $iconInfo 2] set iconItem(s) [lindex $iconInfo 3] set iconItem(d) [lindex $iconInfo 4] set iconItems {} set queryMatch 0 # If the icon name -or- one of the icon groups # match, set "match" flag. if {[lsearch $iconList $iconItem(n)] > -1} { set queryMatch 1 incr iconMatchCount } else { foreach group $groupList { if {[lsearch $iconItem(g) $group] > -1} { set queryMatch 1 } } } # If match flag set, append each of the specified # items to the items list, then append completed # items list to the result list. if $queryMatch { foreach item [split $items {}] { lappend iconItems $iconItem($item) } lappend iconQuery $iconItems } unset iconItem # If no groups have been specified, exit procedure # if all specified icons have been found. if $iconOnly { if {$iconListCount == $iconMatchCount} { close $iconLibrary return $iconQuery } } } close $iconLibrary return $iconQuery } #=======================================================================# # End of Script: icons.tcl # #=======================================================================# ferret-0.6.orig/widgets/icons/pkgIndex.tcl0000644000175000017500000000010307741225415017262 0ustar fikefikepackage ifneeded icons 1.0 [list source [file join $dir icons.tcl]]ferret-0.6.orig/widgets/icons/tkIcons0000644000175000017500000035114707741225416016364 0ustar fikefikeactattach16:act act16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBPz+/AQCBAAAACH5BAEAAAAALAAAAAAQABAAAAI2hAOCxg2h0nJHyEshi9HpxU1GOCLdZoKpQ15nibUoprKp9lh2oucUxsBRXsJh4Hjs/QTMpr8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actbookmark16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy+vERGRFRWVDQ2NKSmpAQCBKyurMTGxISChJyanHR2dIyKjGxubHRydGRmZIyOjFxeXHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICACwWieY1CibCCsrBkMb0zchSEcNYskCtqBBzshFkOGQFk0IRqOxqPBODRHCMhCQKteRc9FI/KQWGOIyFYgkDC+gPR4snCcfRGKOIKIgSMQE31+f4OEYCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actbookmarknew16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy6vERGRFRWVDQyNKSipAQCBMTGxKyurISChJSSlJyanHR2dIyKjPz+xISGhPz+BGxubMTCBHx+fPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVfICACwWieY1CibCCsrBkMb0zchTEcNYsIiYHiwIOdEAvigdFQGE0Ix4NBbSAgsWjk+jBIAlcUYrJASChnSXZSoUDelKfoKpFALJA61ueGI2IAZmhogGFmCGGAgXsifiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== actcheck16:act act16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBMT+xATCBASCBARCBAQCBEQCBAAAACH5BAEAAAAALAAAAAAQABAAAAM2CLrc/itAF8RkdVyVye4FpzUgJwijORCGUhDDOZbLG6Nd2xjwibIQ2y80sRGIl4IBuWk6Af4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actcross16:act act16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/PwCBMQCBEQCBIQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMuCLrc/hCGFyYLQjQsquLDQ2ScEEJjZkYfyQKlJa2j7AQnMM7NfucLze1FLD78CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actexit16:act act16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBDQyNHR2dCH5BAEAAAAALAAAAAAQABAAAAI4hI+pFrHb3nEg1iWiDiINCwYDko0V9XUTda6I1TIsUMpGinyzbB6ZeGuoEr+GUDL4CXqSphPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== acthelp16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQ6XAQCBCyCvARSjAQ+ZGSm1ARCbEyWzESOxIy63ARalAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ/EEgQqhUz00GEJx2WFUY3BZw5HYh4cu6mSkEy06B72LHkiYFST0NRLIaa4I0oQyZhTKInSq2eAlaaMAuYEv0RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actitemadd16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBARCZPz+/Mzq9BTC3ITC1HSyzGSivAw+XBSStIS6zHy2zAQCDFyatAQOHFSStEyOtAQSJBSq1DR2nCxunCRmlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICCOQTmeaCAMRIC+AVu47xkTBl2Ld16XQNYBQTQBVIOkMHFQJBeMI4tAbSSu2IRDSnhAvFfI97sFRM6RwOMacbjLKckVvgvIJ5EdSU7J648VgXQ7Dmd/hyJ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actitemdelete16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBARCZPz+/Mzq9BTC3AQCDAQOHFSStAQSJAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQwEMhJq704681n+GAISoEwnGg6EAUQrEQsz4ThEkeu77kNIAagMEj0dY7IpHI58UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actlock16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJEQ+FExGHCQiDBwaDGxiLHxyNHRuPIR+TIyGZJSSfFxaRFxWJGRiLJyaXNzWpNTOnMzGnLy2hJSKTGReLKyqjPTu1NzarMS+jLSyfKyibJySXIyGVCQeDLSytPT29Ozu7OTi5NTS1KyurJSSjGxqVFxaXLS2tKSebOzuzLSufJSOXExGLGRiTExONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwGCgGhkhkQDBoEpLKQoBACAyOUID1qTVwoQGvMPxNFgVjAxp6QCQUicSCwVgkG44HJCKRRCYUCAxIFRYXhxgZGhYbHINEHR4fGCAhIiMkFSVKJicoKSoFKwMsLZtDLison6GjLA92qCueoAUvpC2xQhWqrLYDErmEMDEXlDIwMxAHukI0NS01EzY2NAmPAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actredo16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxOHBxSHBRGHKzCtNzu3MTSzBQ2FLzSxIzCjCSKFCyeHDzCLAxGHAwuFDSCNBxKLES+NHSmfBQ6FBxWJAQaDAQWFAw+HDSyLJzOnISyjMTexAQOBAwmDAw+FMzizAQODDymNKzWrAQKDAwaDEy6TFTGTFSyXDyKTAQCBAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ2QIBwSCwaj0hAICBICgcDQsEgaB4PiIRiW0AEiE3sdsFgcK2CBsCheEAcjgYjoigwJRM2pUK0XDAKGRobDRwKHUcegAsfExUdIEcVCgshImojfEUkCiUmJygHACkqHEQpqKkpogAgK5FOQywtprFDKRwptrZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actreload16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCRaJBxWJBxOHBRGBCxeLLTatCSKFCymJBQ6BAwmBNzu3AQCBAQOBCRSJKzWrGy+ZDy+NBxSHFSmTBxWHLTWtCyaHCSSFCx6PETKNBQ+FBwaHCRKJMTixLy6vExOTKyqrFxaXDQyNDw+PBQSFHx6fCwuLJyenDQ2NISChLSytJSSlFxeXAwODCQmJBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIBQGBAMBALCcCksGA4IQkJBUDIDC6gVwGhshY5HlMn9DiCRL1MyYE8iiapaSKlALBdMRiPckDkdeXt9HgxkGhWDXB4fH4ZMGnxcICEiI45kQiQkDCUmJZskmUIiJyiPQgyoQwwpH35LqqgMKiEjq5obqh8rLCMtowAkLqovuH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actrun16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/ISChKSipMTCxLS2tLy+vMzOzMTGxNTS1AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARlEMgJQqDYyiDGrR8oWJxnCcQXDMU4GEYqFN4UEHB+FEhtv7EBIYEohkjBkwJBqggEMB+ncHhaBsDUZmbAXq67EecQ02x2CMWzkAs504gCO3qcDZjkl11FMJVIN0cqHSpuGYYSfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== actstop16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Gw6NGQuLHQ6NGQmJFweHFQaFPTm5PTa3PTW1Oy+vOS6tNSinKReVDQWFPz+/Nx6fNyCfNyGhNR+dMxybMRiXLxGRIwWFNx2dNx+fNx2bMxuZLQWFBwWFPTu7Pzy9NRqZNRuZMRSVLwmJGwWFNR2dMQiHPTKxMxmXMQyLMxmZNx6dMxiXMRSRMRaVKxybMxaVEQWFMQuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaaQIAQEBAMCAWDYcgkHhAJxYLRcDQBggckIplQKpaLdRh4YDIaSWa94Vw6woAHgv6AMKGPaMQhwQMJJRkfhHmEJhdvRCcgGSCEkCgpbnAECiorGYYfLCItlAAFCygQj5AfbYlwBQwVE5AukG6KBi8tMC0fLi0pHxyzcAAxFxwmMny/wEwOxMm/qlcdJCSJ1H5XQh3a28HY3kx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actundo16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxSHBxOHMTSzNzu3KzCtBRGHCSKFIzCjLzSxBQ2FAxGHDzCLCyeHBQ+FHSmfAwuFBxKLDSCNMzizISyjJzOnDSyLAw+FAQSDAQeDBxWJAwmDAQOBKzWrDymNAQaDAQODAwaDDyKTFSyXFTGTEy6TAQCBAQKDAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ1QIBwSCwaj0hiQCBICpcDQsFgGAaIguhhi0gohIsrQEDYMhiNrRfgeAQC5fMCAolIDhD2hFI5WC4YRBkaBxsOE2l/RxsHHA4dHmkfRyAbIQ4iIyQlB5NFGCAACiakpSZEJyinTgAcKSesACorgU4mJ6uxR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actunlock16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJExGHEQ+FCQiDBwaDBweDGxiLHxyNHRuPIR+RIyGZJSSfFxaRGxmLJyaXNzWpNTOnMzGnMS+jJSKTGReLKyqjPTu1NzarLSufKyibJySXIyGVGxiNFxaXLSytPT29Ozu7OTi5NTS1KyurGxqVCQeDJSSjLS2tNTW1KSmpGRiLKSebOzuzJSOXExONExGLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQIBwOAwYA8SkMCAYOAnKYiFAIAQGyOgVCggYuEovVxztMpdnwAGRSCgUCwOjIeQ6HpCIZDKRUNYMRBUWF4UYGRoWGxyBRR0eHxgaICEiIyR0QyUmJygpKgUrAxMsLUQlKyieoKIuEAunK52fBS8DLiywQySpnjC1Mbi6QjIzNBeSIBY1EQfDQgosLAEUNjY3Co1DfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== appbook16:app app16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBDyKhDSChGSinFSWlEySjCx+fHSqrGSipESOjCR6dKTGxISytIy6vFSalBxydAQeHHyurAxubARmZCR+fBx2dDyKjPz+/MzKzLTS1IyOjAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOZGmKQXCWqTCoa0oUxnDAZIrsSaEMCxwgwGggHI3E47eA4AKRogQxcy0mFFhgEW3MCoOKBZsdUrhFxSUMyT7P3bAlhcnk4BoHvb4RBuABGHwpJn+BGX1CLAGJKzmKjpF+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 appbookopen16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExCNGSenHRmVCwqJPTq1GxeTHRqXPz+/DwyJPTq3Ny+lOzexPzy5HRuVFSWlNzClPTexIR2ZOzevPz29AxqbPz6/IR+ZDyKjPTy5IyCZPz27ESOjJySfDSGhPTm1PTizJSKdDSChNzWxMS2nIR6ZKyijNzOrOzWtIx+bLSifNTGrMy6lIx+ZCRWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQEAAQCwWBYJiYEAoGAFIw0E5QCScAIVikUgQqNargtFwdB9KSDhxiEjMiUlgHlB3E48IpdKdLCxzEAQJFxUTblwJGH9zGQgVGhUbbhxdG4wBHQQaCwaTb10emB8EBiAhInp8CSKYIw8kDRSfDiUmJ4xCIxMoKSoRJRMrJyy5uhMtLisTLCQkC8bHGBMj1daARgEjLyN03kPZc09FfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== appboxes16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMT+xAT+BASCBATCBMT+/AT+/ASChATCxPz+xPz+BISCBMTCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEEgZwrwYBCFqvhs3DNYXjChRlWBRjIRqGN4UuEUczMZxsDeXykdEsDQVVSLhQxhBCkVlmXA+KVHFYhFYOoHbMGN6pTQaW8YYiQmcG+q16a0+Zipw+4e9B/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= appbox16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+xISCBMTCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANECKoR6ys2IVqokF08yMTA1gwkYX5WQK5ma4VceTYPxXnBWdtY6+0834/Bowgzm6APWRQcH4TiMhPK2WYRiZWW7XK7/gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== appbrowser16:app app16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxONCROfCRKfKx6LNy+bNTOpGSS1DRupAwyXBRSnPTSjPTqvOzqzMzSvHSSlKy6ZDxutAxCpBQ2XBxepLTKvPzqzPzy5OTShLS2dLSqRFR2jBRerBQ+jOTixOzetNS2XHx6XDR2tCRexBwyTDyKzOTavPzq1OzKdCx23BRKtCQ6VCQmHFSa7IyirOzSnGSGpIR+bFSO1DyK7DR+5CRixBw2VDQuHFye7IS27NzGXISuhEyS5DR25BRWxBQ+lBQyXCQqPCxSfGyu7GyerKy2ZFR+rERqfCRmxBROtBQ+fBwuTBwmNDSW9JyabLyqRIx+TExSXBQ6bAQCBBQ6ZBxapDR+zBxq3LyaLJySRHxqPGxeNBxGbCRmrHRyRERONDRKNDQ2JCQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhgABAQIDh4MBBAUGBwgDCYcKCwwNDg8QERIThRQVFhcNGBkaGxwdoYMDHhcXHxggISIjEiSvJSYXJwsoISkpIyorLIIDLS4WLzAxMjM0NSo2N8o4OS46OzwzPSk+P0BBgkI8Q0NERUZHCEhJSktMgwk4Qy1NTk9QUVJLphCiUsWKlStYsmjZQiJgIS4KuijQ4iXAFxYCDVFJwGUFmDBhMjYSw0KMyEYoBfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 appcalc16:app app16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBISChPz+/AQCBCH5BAEAAAAALAAAAAAQABAAAAI4hI9pwe0Ogpi00hHF2LzzzFlTsIHD45SSx6oCeW4wjK2tl83y7t64pIsJaxrfh2bEAJIlhRPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== appclock16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAALy+vAQCBPwCBMQCBIQCBISChPz+/MTCxCH5BAAAAAAALAAAAAAQABAAAANbCLHcrSLKOZcYmDSCsR1aUABAsXDDJwJGa5SBFwgaWxbCG3CWaBwG3C8Y67FawpYiNQscg65fsVkYuoAmJs1pBR522lQB6ILJLqHRwQQOZzYdZnw+dzruDIA/AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 appdate16:app app16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBPzerPyqXMRaBIQCBISChPz+/KSipMTCxPz+BMTCBPwCBPz+xPzCxMQCBISCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVxICCOQGCeJjkGwkC8RFEEavkax2G8dB0QuRyhhzoBg8MSYsncJXKJZIDZHCoWP1ogGIwGrtnSgUFmHLyNRHhrdpjRamnO/SYkromHdnxwnwkKVxByZW8DgQsQM2JcfwZXO0MBCZSVBgMuLzJaRZ0pfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== apppencil16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/IQCBMQCBPzCxAQCBPz+/MTCxISChDQyNKSipEQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARDEMhJZRBD1H2z3lMnjKCFjUJQimOgcmcbELCXzjXq0hV785WCQYcDFQjDXeloMByKG6YTAdwIDAlqSZJSVFeKLcUfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 appsheet16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBAT+/Pz+/KSipPz+BAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANFCBDc7iqIKUW98WkWpx1DAIphR41ouWya+YVpoBAaCKtMoRfsyue8WGC3YxBii5+RtiEWmASFdDVs6GRTKfCa7UK6AH8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= apptool16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBISChGRmZMTCxKSipLS2tHx6fPz+/OTm5FxaXOzu7DQyNMzOzAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMhAq7wYBDECKVSGBcbRfcEYauSZXgFCrEEXgDCSeIEyzKSXZoBYVCoJVIqBGByKu0Cy8QHxmgNngWCkGgqsGWFseu6oMApoXHAWhWnKrv0UqeYDe0YO10/6fhJ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 apptools16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExKTERCRAQCBOzu7Nze3MzKzLy+vCxqZBQ2NJyanKyqrGRiZDRydKza3FRWVPT29LSytDw6PMTm5EySjCxaXGRaJFSanCRSVGxqbPTmvMSqVJTW1GSurHS6vOzq7KSipISChFRKHJSGNPz23GxKFBQ6PKyurCwqLMyufJx2RAQGBJSWlEwyDIRiLNy+lLSKVDwmDJRuNOTOrLyabGRCFDx2dKSCVOzWtHzCxOTGnNSyhAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQIBwCAgIBAOiUiggFAyHASKxDAwUC8Zg0HAglA9IZPGQABoTSqJCFTIOEIsFgHBcEhhHUpKJFCwaGxYYHB0VEx4IEh8gIQwiIyQbJRMcHokmEicfDygAkCkqJQgIGG0rLElCLS4vMCWqQwMCQg0UMTIzNDVLQjaIGDE3ODQlS785CEkxKjowvEOHybG4O6JDCdNKuDUxRAmxRDHeveUAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== appuser16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MTCxISChMT+/ATCxASChFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMg5gw00yyDGIAR1YUDggeFWFIZhnSBZrsZxdIOFEGTA2oeBAHeyuGwvzxBlYdUOLROMFzDQntJPrNoqAKUBaqnV+k57ZORruykHDj2LqIzUVKp1u0iuB/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= appusers16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxISChAT+BMRaBPyqXARCBPz+/FxaXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARLEIRJa5Ui673nsGAgeKE1Bl9AUEXbiqTlFlZaGUZoszm4BzhDAVf5BYbAXI+TAR6CS2ZGSZSEiIIqYIsSIEaJ7GRrlY7J1lKA7I8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= appwp16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSinJyOfPz27Pzy7AwKDExOTJyWlERCRKSelPz69LyyrKymnPz+/MS2fDQyJAQCBOTazLSiXOzivMS2jKSSVOzmxPz25NzSpPTu5KyebOzixNTGjOTWpMSydMSybCwqFGReVKyaXNzSnGxeNJSCVMS2nPz23MSuZIR+bJyShLyqnOTOtGxiXIR6XOTSvIx6RMSubIyCdKSalMS6pOTWxMzKvKSabJyKTOzezHxuPGRmZKyurMTCvPTq3AAAACH5BAEAAAAALAAAAAAQABAAAAajQIBwCAgIiEhiYEA4FgwHRDKhIBAWz4OhgGQ0FAPHA7qFEBONb0Qy0ULeQ2+aUrFcMI+3GYBOZzQbHB0eHyAhIQByDREiEwMjFRIkJQImAgJ+jScjHigkKSorLC0AKg2NFSMoki4qCy+IQgITKDAxkjIzNDWkQxQoJaskMgk2Eb1DNzgoOCoHDDY5yEIwJToAOzw9ET7TQiREAhkZ3kmy5QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 cal1day16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANOCLrMEUDIOUS9AFLLhx8LIRZjKYZmMRCkaChFLHty/AIiS3y6q+QtT49wq8VotRtQJGwRf6Zmrlj7DJLQXsupTJmeEIN4TB5nII20wp8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= cal5days16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANMCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiIdMmcec7jy53q81qP9OO5VMAj8RXTFWzOZW95HDLdEEM4LA4nIE0zgp/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 cal7days16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANPCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiwcp0fucsj873qvGMv5Jw2FIACUsW4WakGW1O046I05qmGYBhTC6TM5CGWuFPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 calappointment16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxPz+BISCBISChKSipAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARbEMhJaQhA6D1E/wDGeeRgDhOhFoTBEi+REgdrIHScSEVvAD9Xr7cDqGSGpFEnQSqTv2NxCFQOiU1VEAiTZmstHFg1vQKuw+LxxfYaV/AuOQRI2O/4ewhT6Uv8EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 calbell16:cal cal16 16:photo:16 16:R0lGODlhDwAOAIIAAPwCBISCBPz+BIQCBMTCxISChPz+/AQCBCH5BAEAAAAALAAAAAAPAA4AAAM+CLrR+zCIAWsgLVRGRBhOVQiG94WPVAbHaZHYAWqRYLbge88RsbInGuBCEhRYrZYm4xk4nYdoKzKIbiKHawIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== callist16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/KSipPzerMRaBEQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARDEMhJaQhA6D1E/wDGeeRgDhOhruyatjBRSIRxxOsMEAdC0BUZDcfSEYvDo3Bn++2Cxt7RqFxWhZiCdsvdhjCVsMQfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 calmonth16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANSCLrMEUDIOUS9AFLLhx8LIRZjKYbiRxLFIBpK0Q6z7MkwkJIe8b0KEeuWchFysuStVsjtfMbeMQitWpG25YfmNK1WU53XNIUYzug0OgNpuBX+BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 caltoday16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxKSipPyCBMRaBPyqXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARTEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyIQhFfiBIAfuFzaAioBIJBCummRYPCaDPh3vhwsOZdihNfa8Ub/AJXemFZPPNBvGwG672yFMZS7xRwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== caltodo16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBAT+BAQC/AQCjPz+/MTCxPzCxKSipPwCBMQCBIQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARaEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyMYhFXiuFwZiA6qZYbbqJX5BIw2RAPxwAAWCyWMCCsiXFGEEErKz6LQZfOqiTR1YJiGq1rFyyHmo2+/1EKbCl/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= connecting16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZbihUiz60FPnfaA0iBpBVGdHEYWxToEoSHBRHHM9AgSEQRcj+AYkYAJxIPKQFUJiOdTJQFIDU6dYzKKFhTCM+E5g4mXaDAyrlogEG+DGTecA7wsP8EcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= connectno16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBAQCBERCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARPEMhJq704axBEHoPUEdhQGMNYFuwxkKInDYjBniEnwMCQIIebSzXx/WwsFK+YMABZikWuYlrUCtZpEYv4WRPaHhb064YB41kCfJFSQBh/BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 connectyes16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/KSipDQyNMTCxMTGxISChFxaXMzGzAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZxCjgsAtDtUlCOA1gJQ4kl/IDatAoF7xxkS6GgEBr6jAobCyBX42SQBxMOx6A8MhiGASR8YDgrYsNEeJ0zaEGZY7uoH2oB6nOUwtbdLaVOeTUwo/8UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= devcdmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tOzOvNTqvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/LzKvMTCxDQyNASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAa0QIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTBqUiuUCVmAeiYzmsKlwOt/AAKFIFAIIFx4WHyAhUwIDIgsZFyMkFxchJSYmiBkSBBoIJJwIGgOhiCYFJSEnFyQjFwNZewABISAfFiYnCAEmCREIrwAIFhwVGwcaBAkPGApsQsAVFA0GBQMRbxBTKM0ODQwTEq192ClDgROkBHvYKuNJUu5CKCorX1RDKCkpUn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= devcdunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tNzmvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/MTCxLy6vDQyNOTm5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAapQIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTLqUigWsuDwSmMxBQ9lwvoEBQpEoBBAWHRseHyBTAgMhCxgWIiMWFiASJCSHEgQSGQgjmwglGKCHBQUSICYWIyIWAwshIVMBIB8eFSQmCAEFCREIekIIFRsUGgcZEgkPFydrvxUUDg0GBSEREGJfv9AMEySsJxDYQ4DcEhh64UpS6lTs7QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 devdiskmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKROzSrOzKpOTGnLSafLySZKxuLMSOVPTWvPzixLSehNyibOzOrGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTOpHxOJKyKXFw+HKSipISChMTCxFxaXIRiPNSWXExOTOS2hLR+PLRyLPTWtMyOTASCBARCBPz+/DTSJIyKjIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwrA3HQ7scQAqFAcEQOUi0zAkFUSFYLghMBloUCDQNGxwdHhwHekcfICEhICIfIxkLJBABJUYCICABIhAOBiYnKJaXmH4CGSkYCCqkSAEfTKenrkOwsrQll0IrS7G5uwArLLaxLbXCLsTFLyDBKy4wZEVHvCwsRn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= devdiskunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKRPTWtOzKpOTGnLSafLySZKxuLMSOVOzOrPzm1LSehNyibGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTWvHxOJKyKXFw+HPTOpKSipISChMTCxFxaXIRiPHxaNLRyLNSWXExOTPzixOS2hLR+PMyOTPz+/IyKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwGgiD46FdDiCFwoDQAEe0TMkEQSFULIcLBloUCDIaDRscHRsNHhhHHyAhISAiHyMkJSYQASdGAiAgASIQKA0pKguXmJl+AiQGFwgrpUgBH0yoqK9DsbO1J5hbsrq8SrgstlJFHy0gwMVFR1J+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 devfloppymount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVrICCOQBCQKBkIw5mqLFG47zoQ+FwbN57TosDhgPD5dMEEIqE04kwlBWKBUEiNVYFpyqAyGEUCgqEtERiNNMLhQKzLQYJg7n7Y4aMAwbCUPvAQeWNgfzQQETAIhSMQEogwgBITQEGGEREmfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== devfloppyunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVCH5BAEAAAAALAAAAAAQABAAAARcEMgJQqCYBjFu1hxReN82EOhYGieaklJwHIjrqnGCJLqNWhUFYoFQCG1FgWXIIDIYNQKCoawQGI0swuFAbKsxgmDsfZjBkwDBsNM90Jot9A3DbBD0Dwiur9QnfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== devnetwork16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBISChPz+/Nza3ARaZESanCyKlARudARGTLy+vNzq7ARmbMTCxARufAROVMzOzKSipARyfOzq7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVmICAGZFmKQiACweCSBImq41AYB5IodLq2hwWO0ejRWDac48Gb/QKNqNRoqspmrVcAUuIJBANS8sBIFCORUgooPEh4J8B67NgdsVBp9C5XWfl9LRMTCyReX19hARNojWlWLH+AAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= devpc16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBISChHx+fPz+/AQCBAQC/AT+/AQCxAQChAT+BLy+vAR+BAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARYEIAgqK1YzsG754QUDERpmkEpkkXrtoK6EcVgHIibhnNx564Yb0TDvQq7FQ34EiqPOhnREqhWSUPsyZSQAbbg7GcMEgwUiYVivTa1R+y4XEGoWO/4AMAfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 devscanner16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MT+/ASChARCRATCxMTCxFxaXKSipDQyNAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEMgJgqWBVivEldkUdKSXhVjZfenommglDERh3Tc4E4ZRHAGgkEPr9X6H5AHBERSMRyWzkug8jQXFEhWoOo8dRYxqLXSmGjIJnVaz29Q3fAP3RwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== devscreen16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXFRSVPz+/PT29OTm5OTi5DQyNDw+PERGRExKTHx+fISChIyKjHRydFxeXDQ2NCQmJBQSFAQCBERCRMTGxHR2dGRiZExOTDw6PCQiJAwODCwuLFRWVOzu7BweHAwKDCwqLHx6fBQWFGxqbGRmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAanQIBwSCwKAwKkMslEAgSDqDRKqBYKhkNgcDggEorkMrDQchkNhuOhgEQkk0l5S2lUGpYLJqPZTAwMHB0DCmhqAW0Rfh5zAxgOkBcCFAcfIBMECxwBBAEPFw8dChkhcBMDDAcdnQqtFKSWcQMimx4dGRkQBxGxsg6bBQEawx8jl3GnJFoFHRNXVVNRJYIFDAsL1tgiDiQXFx0HABwcXeQH5OjkRutEfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== devspeaker16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXAT+/DQyNATCxMTCxPz+/AQCBKSipASChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEMgJQqCXziDG2JoUEENhZBkmHIWJVptAmqcIW/Js1MiF56TBzkckAAcHoa9nMRKeA4TyJk0knsHhTeK5khBaH2VwLYVh40TJhQ6RzeIQV32Quz8hfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editcopy16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAFxaXPwCBNze3GxubERCRPz+/Pz29Pzy5OTe3LS2tAQCBPTq3PTizLyulKyqrOzexLymhLy+vPTy9OzWvLyifMTCxHRydOzSrLyihPz6/OTKpLyabOzu7OTm5MS2nMSqjKSipDQyNJyenLSytOTi5NTS1JyanNTW1JSWlLy6vKyurAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAaUQIBwCAgYj0eAYLkcEJBIZWFaGBie0ICUOnBiowKq4YBIKIbJcGG8YDQUDoHTKGU/HhBFpHrVIiQHbQ8TFAoVBRZeSoEIgxcYhhkSAmZKghcXGht6EhwdDmcRHh4NHxgbmwkcCwIgZwqwsbAhCR0CCiIKWQAOCQkjJAolJrpQShK2wicoxVEJKSMqDiAizLuysiF+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 editcut16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAQABAAAAIwhI9pwaHrGFRBNDdPlYB3bWHQ1YXPtYln+iCpmqCDp6El7Ylsp6ssR1uYSKuW0V8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= editdelete16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPT29GxubMzOzDQyNIyKjHRydERCROTi3IyKhPz29Ox6bPzCxPzy7PTm3NS6rIQCBMxCNPTq3PTi1PTezMyynPTm1PTaxOzWvMyulOzGrMymhPTq5OzOtNTKxNTOzNTCtNS+rMSehAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhSEQkFgrBAcr1URiPhKAsDD3QB8RhA3FM0IlLHnyUTVBMSFBUWfl0XGBMTGBcZGodmcQWKjpAbHIgIBY2LHRoempOdjooTGx8giIOPFYofISJ+DyMXI6AfFySyfiUmJSUnKBYcICIpfgELzM3OZX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= edit16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaVMR+RPzKjNze3AQCBMR6RPzGjPyODPz+/MzOzPyKDPyKBPz29OTWzPyGDPyGBOx6BOza1OR2BKROBNSOXKRKBBwOBOzu7PTWxPzizOySZPyCDFxaXOy2lNRyRMxmJCQOBPTm1OzStPTKrMR+XIRWLFxGNCQSBDQyNIRSNDQuJERGRLyqlNzSvIx6ZKRuVEw6LLSyrLymhKSShBwaFFROTJyWjMS+vNzW1OTazNzKrHRqXOzezOTOpPTq3OzWvOTStLyedMS+rLy2pMSynMSulAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgAAAAYSFhoQCA4IBBI2OjgUGBwiLBAmXlpcKkgsMlZcJBA0JDpIPEBGVjwkSBgOnExSfmBIVBxAMExYXswkYGRobHLq8gh2PHhoeHyAWIYKzIiMkJSYnKCnQg5YNHtQqKywtK9qMBC4vMDEBMjIz2dCMDTQ1Njc4OToz5PEEOzw3ZPToMcLHO23HfogQ0QMIkCA+hPBbhAPHECJFjMyYIUQIvEUpUqwQOXKkSEF+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editpaste16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQiFHRqNIx+LFxSBDw6PKSaRPz+/NTOjKyiZDw+POTe3AQCBIR2HPT23Ly2dIR2FMTCxLS2tCQmJKSipExGLHx+fHR2dJyenJyanJSSlERCRGRmZNTW1ERGRNze3GxubBweHMzOzJSWlIyOjHRydPz29MzKzIyKjPTq3Ly2rLy+vISGhPzy5LymhISChPTizOzWvKyurPTexOzSrDQyNHx6fCwuLGxqbOzKpMSabAQGBMS2nLyulMSidAAAACH5BAEAAAAALAAAAAAQABAAAAa7QIBQGBAMCMMkoMAsGA6IBKFZECoWDEbDgXgYIIRIRDJZMigUMKHCrlgul7KCgcloNJu8fsMpFzoZgRoeHx0fHwsgGyEACiIjIxokhAeVByUmG0snkpIbC5YHF4obBREkJCgon5YmKQsqDAUrqiwsrAcmLSkpLrISLC/CrCYOKTAxvgUywhYvGx+6xzM0vjUSNhdvn7zIMdUMNxw4IByKH8fINDk6DABZWTsbYzw9Li4+7UoAHvD+4X6CAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 editshred16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbGxubMzOzPz69DQyNIyKjERCRPz29PT29OTi3IyKhPz27PTu5PTy5Pz6/Pzy7PTq3OzexLyqlPTm1PTizOzavLyqjOzWvOzaxLyifOzizOTOpAQCBOzezAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhWEQkFYYHkeqkMxKFBFpq9jgdkEGlPqwrJhCIY2N8FFRYUFxcYGX9dgRKEGhiHiYEOhBcbGBwdiQEOARcBGwEeAZllAgEUnQEfoQEgmp4hrCKtrwEYsrRlTiMBJAG8syN/IyMAxMXHSH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= edittrash16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipFxaXPz+/MTCxISChDQyNCH5BAEAAAAALAAAAAAQABAAAANQCKrRsZA5EYZ7K5BdugkdlQVCsRHdoGLMRwqw8UWvIKvGwTICQdmGgY7W+92GEJKPdNwBlMYgMlNkSp3QgOxKXAKFWE0UHHlObI3yyFH2JwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== fileclose16:file file16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCQiJBwaHAQCBDQyNDw6PFxaXFRSVERGRCwqLAwODGRiZHx6fPz+/GxqbAwKDCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVaICCOZGmeqBgEwjCkRGEcSKK4JrEcBrMgAdeLVDg0GguGsYEbBQyGYyN6FDoPDIf0+LCKBIgetQERDgGDBGIpNY8GioAU0m6KXFw883w3+/l9f4AkfimGIn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= filedocument16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJSWjPz+/Ozq7GxqbJyanPT29HRydMzOzDQyNIyKjERCROTi3Pz69PTy7Pzy7PTu5Ozm3LyqlJyWlJSSjJSOhOzi1LyulPz27PTq3PTm1OzezLyqjIyKhJSKfOzaxPz29OzizLyidIyGdIyCdOTOpLymhOzavOTStMTCtMS+rMS6pMSynMSulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQIAQECgajcNkQMBkDgKEQFK4LFgLhkMBIVUKroWEYlEgMLxbBKLQUBwc52HgAQ4LBo049atWQyIPA3pEdFcQEhMUFYNVagQWFxgZGoxfYRsTHB0eH5UJCJAYICEinUoPIxIcHCQkIiIllQYEGCEhJicoKYwPmiQeKisrKLFKLCwtLi8wHyUlMYwM0tPUDH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= filefind16:file file16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBCQmJDw+PBQSFAQCBMza3NTm5MTW1HyChOT29Ozq7MTq7Kze5Kzm7Oz6/NTy9Iza5GzGzKzS1Nzy9Nz29Kzq9HTGzHTK1Lza3AwKDLzu9JTi7HTW5GTCzITO1Mzq7Hza5FTK1ESyvHzKzKzW3DQyNDyqtDw6PIzW5HzGzAT+/Dw+RKyurNTOzMTGxMS+tJSGdATCxHRydLSqpLymnLSijBweHERCRNze3Pz69PTy9Oze1OTSxOTGrMSqlLy+vPTu5OzSvMymjNTGvNS+tMy2pMyunMSefAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCAAECA4OIiAIEBQYHBAKJgwIICQoLDA0IkZIECQ4PCxARCwSSAxITFA8VEBYXGBmJAQYLGhUbHB0eH7KIGRIMEBAgISIjJKaIJQQLFxERIialkieUGigpKRoIBCqJKyyLBwvJAioEyoICLS4v6QQwMQQyLuqLli8zNDU2BCf1lN3AkUPHDh49fAQAAEnGD1MCCALZEaSHkIUMBQS8wWMIkSJGhBzBmFEGgRsBUqpMiSgdAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 filenew16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPz6/GxubNTKxDQyNIyKhHRydERCROTi3PT29Pz29Pzy7PTq3My2pPzu5PTi1NS+rPTq5PTezMyynPTm1Pz69OzWvMyqjPTu5PTm3OzOtOzGrMSehNTCtNS+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ/QAAgQCwWhUhhQMBkDgKEQFIpKFgLhgMiOl1eC4iEYrtIer+MxsFRRgYe3wLkMWC0qXE5/T6sfiMSExR8Z1YRFRMWF4RwYIcYFhkahH6AGBuRk2YCCBwSFZgdHR6UgB8gkR0hpJsSGCAZoiEiI4QKtyQlFBQeHrVmC8HCw21+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileopen16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBOSmZPzSnPzChPzGhPyuZEwyHExOTFROTFxaVFRSTMSGTPT29Ozu7Nze3NTS1MzKzMTGxLy6vLS2tLSytDQyNOTm5OTi5Ly+vKyqrKSmpIyOjLR+RNTW1MzOzJyenGxqZBweHKSinJSWlExKTMTCxKyurGxubBQSFAwKDJyanERCRERGRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQIBwGCgGhkhkEWA8HpNPojFJFU6ryitTiw0IBgRBkxsYFAiGtDodDZwPCERCEV8sEk0CI9FoOB4BEBESExQVFgEEBw8PFxcYEBIZGhscCEwdCxAPGA8eHxkUGyAhIkwHEREQqxEZExUjJCVWCBAZJhEmGRUnoygpQioZGxsnxsQrHByzQiJxz3EsLSwWpkJ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileprint16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFRKNAQCBPz+/MTCxExKLPTq5Pz29Pz6/OzezPT29PTu7PTy7NzClOzm1PTu5LSabJyanPTm3FxaXOzCjOTKrOzi1OzaxOTSvJyenGRmZLyyTKSipDQyNERCROTi5Hx+fMzKzJSSlIyOjISChLS2tAT+BDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQIBwKAwIBMTkMDAYEApIpVBgOCAOg4RRGlAoEAuGIdGITgWOq4LxcCQgZkEkIHksHgYJOR6ZQCgVFhYJFxgTBVMZihoCfxUYDWUbUBGKGREcjBoQEB2TAB4CAx+Vl5WMhyACHiEhH6IfIiMktCQgE0cZJQStr6O2t6EARxO6vK6iEx4dZsMCxbsmBB4nzUTEutVSSUdmfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filesave16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBFRSVMTCxKyurPz+/JSWlFRWVJyenKSipJSSlOzu7ISChISGhIyOjHR2dJyanIyKjHx6fMzOzGRiZAQGBFxeXGRmZHRydGxqbAwODOTm5ExOTERGRExKTHx+fGxubNza3Dw+PDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaAQIAQECgOj0jBgFAoBpBHpaFAbRqRh0F1a30ClAhuNZHwZhViqgFhJizSjIZXQCAoHOKHYw5xRBiAElQTFAoVQgINFBYXGBkZFxYHGRqIDBQbmRwdHgKeH2YgHpmkIR0HAhFeTqSZIhwCFIdIrBsjAgcPXlBERZ4Gu7xCRZVDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLARqnAQ+ZHR2dKyqrNTOzHx2fCQiJMTi9NTu9HzC3AxmnAQ+XPTm7Dy67DymzITC3IzG5AxypHRydKymrMzOzOzu7BweHByy9AyGtFyy1IzG3NTu/ARupFRSVByazBR6rAyGvFyuzJTK3MTm9BR+tAxWhHS61MTi7Pz+/IymvCxulBRelAx2rHS63Pz6/PTy9PTu9Nza3ISitBRupFSixNTS1CxqnDQyNMzGzOTi5MTCxMTGxGxubGxqbLy2vLSutGRiZLy6vLSytKyurDQuNFxaXKSipDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQYHCImDBgkKCwwNBQIBBw4Bhw8QERITFJYEFQUFnoIPFhcYoRkaFBscHR4Ggh8gIRciEiMQJBkltCa6JyUoKSkXKhIrLCQYuQAPLS4TEyUhKb0qLzDVAjEFMjMuNBMoNcw21QY3ODkFOjs82RM1PfDzFRU3fOggcM7Fj2pAgggRokOHDx9DhhAZUqQaISBGhjwMEvEIkiIHEgUAkgSJkiNLmFSMJChAEydPGBSBwvJQgAc0/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folderhtml16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBERGRBQWFMzKzOzq7CwqLDw6NARqnAQ+XHR2dKyqrOTm5ExKTERCRHRydMTi7NTu9HS+1KSmpBweHDy67DyixHS61ITG3AxypByu7DxinBw+ZERmdIySjITC3ARypExOTDRurIR2RPTSdJyulEyGvBw+bFSyzJTK3LzKvPzivOTixNTChLSybGyCfCRSnBQqRASGtFyuzDw+PCRShPzy5OzerOTShKyaTEx6pCxerGRufBR+rOTezPTShNy6bER+1BxCfBQuRAxelFSixBw2VISq3GySrPTWlHyanIyitFSO3IymtCRujAxWhCRqlCQ6XGyWvNS2bFyGvDxuvCRSpLy+vMS+vGxqbFyO1GSi3EyO1FRaVCQuPLS2tDxyzKyWNFxaNCQyPGxubCxajERSVExKNJyenAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfZgACCAAECg4eIAAMEBQICBomDBwgJCgsEDA0BDg8BhwYQERKUDxOYDAyeghQVFhehGBmVlwwOqxobHB0eH6EfIAkPIYIiIyQlJhsnKBcpvrYiKissLS4vMDEyFjOvNAA1LDY3ODk6Oyc8PTIyFzQ1Jj42P0A6QTtCQ0REIEUORkdIkihZwsSekBhNnDyBciCKiSNSplDRUcWKkRhXCGDJYgiGli1cpuTocsILjytfFmRpACAGRTBhRogZgzHlAjKGWnIoY+bMgRgBDHRBo/LAIZoxuhwKatRPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folderlocked16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQSFMzKzOTm5CwuLERCRARqnAQ+XHR2dKSmpOzm5GxqbCQiJMTi7NTu9HS+1HRydOTm1Ozq7Dy67DyixHS61ITC3AxypERGRBweHByu7ASGtFyy1DSOtDRmfExOTBSazBR+rCwqLAxWhAxelByGtDSaxAwODHy+1Dw+PPT29IyqvCxujOzu7NTW1Nza3ExGJJyebKyqfMTCpFRSPOTi5DQqHOTezDw2NMTGxKyqhMTGrGxmXDQ2NMTCxMTGpHx6bHx2bBQWFIyOXDQuDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQICBomDBwgJCgsEDAKFDQGHDg8QEZQSlxMUDJ2CDhUWF6AYGZWXFBqCGxwdFh4XGK8fIAohtiIIIx25EZwBDREHgiQjJSYmGScoKSoRKQ8rggIsDC0uJS4oGygoAyjdAAcsLxQUMDEyMzQ1EzapBy8MDDc36tFwgONFjlQ6dgCEEZBHDx8+ctRIRehHAyAwZASZIGRIEBoUBwUwIGMCiwFEaBQJichIjo9FZLBsacRIAB0A/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= foldernew16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBPz+hPz+BOSmZPzSnPzChFxaXMTCBPyuZPz+xPzGhEwyHExOTPz+/MSGTFROTPT29OTm5KyurDQyNNza3Ozq5Nze3LR+RLy+vJyenMzKzNTS1Ly6vJSWlFRSTMzOzMTGxLS2tKSmpGxubBQSFAwKDKSinJyanIyOjCQiJERCRERGRBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQIBwSCwaj8ikcokMCIqBaEDoBAQG1meAUDAQpIcBQoy1dg2JdBqhECgQ1IWB0WgcBIOBwIHXBwwPEBEREhIBbG4IExR/DBUVFhIXV2NjDVYYDY8SFU4ZVxpVAQwbGxynGxkdTh6XVh8gGSGzGSITIxokJUImGSMTwLcnKCkprgAqDSt1zCssKxQtQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folderopen16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOzi1Ozq7ERCRCwqLPz+/PT29Ozu7OTm5FRSVHRydIR+fISCfMTCvAQ6XARqnJSKfIx6XPz6/MzKxJTa9Mzq9JzO5PTy7OzizJSOhIyCdOTi5Dy65FTC7HS2zMzm7OTSvNTCnIRyVNza3Dw+PASq5BSGrFyqzMyyjMzOzAR+zBRejBxqnBx+rHRmTPTy9IyqvDRylFxaXNze3DRujAQ2VLSyrDQ2NNTW1NTS1AQ6VJyenGxqbMTGxLy6vGRiZKyurKyqrKSmpDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCAAECg4eIAAMEBQYCB4mHAQgJCgsLDAEGDQGIkw4PBQkJBYwQnRESEREIoRMUE6IVChYGERcYGaoRGhsbHBQdHgu2HyAhGSK6qxsjJCUmJwARKCkpKsjKqislLNIRLS4vLykw2MkRMRAGhDIJMzTiLzDXETUQ0gAGCgU2HjM35N3AkYMdAB0EbCjcwcPCDBguevjIR0jHDwgWLACBECRIBB8GJekQMiRIjhxEIlBMFOBADR9FIhiJ5OnAEQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mailforward16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRydHxubHxmZGxiXHRmZFxOTFxGPFxKTPwCBLymlMy+pOze3PTq3PTu5Pzy7LSmnOTaxOzm5LyqlNzOtPz69Pz27MzCtLyqrPT27IRubPzuzNTGvNTCxLSelPz25Bw+ZFxKPPzy1Pz65LyupBxKdCxWfPTm1Pz23LyinBxGbGzO5DRafBxWfBxajCymxHTS5BxSdBxKbFTK3EzG1CSGvCyKvCSSxCSavGTO5GRaVPzqzFzK5EzG3BSCtAwiPGxaVPTivPzy3NzKpBxObCRefBxqlPTmzJR2bKyahAwyRPzmvOTOpKyObNS+nPz21AQOFKyOfPzuxAQCBGRORLSadPzyzLymjMy2lOzetDwuJFRCPEw6NEQ6LEQyLEQ6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAAfhgAABAgIDBAQFBgcIBwmOCQIKCwwNDg8OEBESjY8CDBMUFRYVFxgZDJyOGhsPChwVHR4fFSAhjwkaIiMOJBQQDRUVJSa3GicoHw4pEA8SGSorLI8tLtQu19gqLzDECTEyMzQ14zY1Njc3ODkqCTo7MjIxNCs5PD03PjctPwlAQUIihhBpQbCIihtG+CUocASFkAhIkogQ8kFJwkcFlogIkoRJEydPnkBR6GiAxiQLgiiIIkXElFQJqESoMsRKkAhXqkhhApNKFSxZggTJ4nHIEJhaDhzYwoVLFy1avHyB6ScQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mailget16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAxKdBRSfCyGvFSm1BxKfCSWzCyWzBRCXCRKfBwuRAQGDDw6PHy23Cym1CSSxByCxBxunBQSFKyurMTCxExihNza3NTW1JSSlMzKzFxaXLS2tNze3KSipCQmJGxmbNTS1KSepLy2vISGhJSWlHx+fERGRPz6/IyKjDw+POzq7JyenMzOzKSmpCwuLDQyNIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQIBwGBAIAsOkUjAgFJRQQMHgjC4PBIEVgAh4D4aEYrGAMhINxwPyiCgYSsmEUmk82grLRZJkYCgXaAEKFxYZcEISGhsZFxwFeY0WHR5CDB8dGCAXG5shGxQicBIMpSMUGxgTGSQlpQwSJicnEwwdI7gdKAwTsykpKiobr8QMKxeHDBcsGRvOzxsT0i0uL9HSHdkT2ZkoMJXF4a8AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mail16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxaVOTe1Oze3OTWxOTWvNzStNzKpEQ6LOTezPz+/Pzy7Pz69Pz27Pz25Pz21PzuzPzuxEQyLLyinLSmnPz67Pz23LSafKyObDwuJMzCtLSelPzy1My6nLymjNTCxLyqnPzq1LyihKyOfOzavOzetEQ6NPTq3NzOtLymnNTGxJR2bOTOpPTivNTGvLymlKSShKyahEw+NOTe3PTm1Pzu1Pzy3FRCPPz65LSadFxGPOzm3PzqzPTmzPzmvEw6NCH5BAEAAAAALAAAAAAQABAAAAaqQIBwSCwaj8ikMhloOp/QpmAgqAoIhELBUDgcEIGEYrFgNBoLx+IBiRwkgQnFoWAwKhWLhX3BZAILGhsCDXgODhwdGB5vgAofICBlDiEiIx4kJSYBJ2UoEykqHSMrLC0nLWAnFS4UCycvMAcEMR0RLTIBMwaSahw0NTYtFwclNwEdLws4eoc2DxwQOR06ASk7PBAhIRE9Pj0tLSUY1T8I5gjn6Qgy7D8SfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mailreplyall16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBLymlMy6pOTa1PTq3PTu5Pz27Dw+POzi3PTm1OTWvPz25FRSVERCRLympPzuzPTu7NTGvFxaXKSmpPzu1Pz65Hx6fHxqZPzq1Pz23HR2dBw+ZHx+fISChJSWlDQmJHRydCxWfBxGbJyenExKTHRiXPzqzPzy3CQmJDRafGTO5ExOTERKTGxWVCRSfHTS5CymxBxajBxWfPTmvPzy1CyixCSaxCySxDSaxDSWxDSSvDyaxGS21PTmzPz21AwiPBRejCSavByGtCSezEzG3FzK5FzG3GzO5FTK3CQ2bPTixBxqlCRefBxSdBxSfBx2nCQ+dHxmXPzmvLSafAwmRAwyRPzyzDw6POzavNzKpAQOFPzuxBwWTBw2ZGRORLyWdMy2lOzetPTivAQCBKyObOTOpAweNBwWVEQyLEw2LEQ2LDwuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAf4gAABAgMEBQUGBwgJCguOCwEMDQ4PEBESDA4TjY8DFAwVERYXGBkRm4+QGhsMHB0eGB8bDpyOARogEBceIRgXv8COIiMkGB4lJSYnIcwoKb/DGyoXKywtKS4pHinMLzAxJDIzNDUtNjcv6B0hLzgfMh85OjstPDw99zwd7T4/LTVAgggZQqSIECNHevSAgSSJkiVMmjh5AiWKlClAiFARUeVHFSVWmLS40gNLlh5agGzh0kWDlwZfrIDREKaCAjEqrFA5MMYLmTAxlJTxYoZMozNozqRRs4ZNmy5s3LwhA0dBnDNn5MxBoAABnTp17IitowDrmQV+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mailreply16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTEw+NFxKTFxGPPwCBLymnMy6pOTa1PTm1Pzy7LymlOzi3HxqZOTWvPz69Pz25My+tLympFRGRHxuZPzu1LymjNTGvNTCxBw+ZPz23PzuzPz65PTu5NzOtCxWfBxKbPzq1DRafGTO5BxGbPzy9HTS5CymxBxajHRiXPzqzCyixCSaxCySxDSaxDSSvGS21GxWVAwmRBRejCSavByGtCSezEzG3FzK5FzG3CQ2bPzuxAwiPBxqlBxKdCRefBxWfBxSdBxSfBx2nCQ+dPzy1CRqlAwyRDQmJPTmvPTixLSafOTOpAQOFPz21BwWTBw2ZPzmvNS6nPTivAQCBAweNBwWVNzKpPzyzLyihGRORLyWdMy2lOzetKyObEQyLEw6NEw2LDwuJEQ2LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfqgAABAgMEBQUGBwgJCguOCwEMDQ4PEJYRDhKNjxMPDBQVFhAXGBUSGY8LGhsQHB0VHh8gFQ6bjgEhIiMMJCUmFbS2CwMnG6IoKSorI7WpEycWFiUsLSou1yXXji8wFiopMTIzNDUz4zbZNxsbODk6Ozw9Pj8pPzEzQDdB60JDOkRFjBw5giRJDCWdlmxwIIRJExAWKDRyMgTIiydLoESRImQKlSUSF1SxUoXAlSBRsGSJoCVICIlbqlThcoBClC5eYFD4EiVIFwUyqywAE0ZMlqNjpJDpIkUBl0dlFChAYOZMmTJoyqQR5icQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mailsend16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBHxqZLyqlMy6pOze3PTq3PTu5Pz27Pzy7LyinOTaxOzi3Ozq3LymlOTOtPz69Pzy5My+tLympPzqzNTGvLSelPzy3BxGbBQ6VPzuzPz65LyupNzOtPz+/GzO5BRejPzq1Pz23LymjHTS5CyixCSavBxqlPz25LymnGTO5CymxCSaxByGtHRiXPzy1CySxCSezGxWVPzuxKyOhMy6nDSaxEzG3PTivNzKpKyOfPzu1FzK5PTmzJR2ZLyihLSWfKyObOzmzPzmvDyaxOzavLSafGRORMy2lOzetDwuJEw6NEw2LEQyLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfUgAABAgMEBQUGBwgJCguOCwwNDg8QERITFBUWjY8DFxgZGhsaHB0aD5yODB4TGB+kICEaIiOPCwEkJRcmJyYPKCIpKrWqKywTmC0SIi4vMDHEDCsyMg8zEyI0NTY3z7U4Hhs5Mx+0IyI6OyPrIzw9Gys+PxIy2EBBxAs8Qjk5Q0RFWFxAZySfgSMsilRAkiRECHQ08hHgJ0TJkCU/mECU2ISEkowUlpAQ4QTfowNPoAzJIeRJCyjm8kVRIkWIzSkXhwxJtYAKgp9VrFi5QoWKFZ5+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== nav1downarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PUZi0zmTtypflV0VdRJbm6fgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= nav1leftarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAP///wAAACH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxqdwoNGTmgvy9px/IEWBWRkKZ2oWrKu4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== nav1rightarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxCtwoNHTmpvy3rxnnwQh1mUI52o6rCu6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== nav1uparrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PWwhxzmetzFpxnnxfRJbmufgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= nav2downarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+pq+EPXYpxUckoO3AjbF3dJwahllXe6AFgC8d+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nav2leftarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pyxf5VohmSlsxmpjTzAHeN5ak6UHpqKRi2GpwvH3Q3eT64RcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== nav2rightarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pq5HOAjQyVnqfhHue7oAaKH5kiW0AmnLqaHomkj02g+e6XwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== nav2uparrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIghI+pyxfR0HsRzNnuXVqn3mVQZWFRyIDjp65Ga5Ly4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== navback16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRSdBRObCQ2TBxObISevAQCBNzu/BRGZPz6/FzC3Pz+/HTS5ByyzJze7Mzq9ITC3AQWLAyWvBSavFyuxAwaLAwSHBRafBSOrDzW5AyixCS61ETW3CzG1AQeLAweLAxefBSStEze7CSWtCyatBSCnBRWfAwmPBRWdByixAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZiQIBwSCwah4HjUTBQFgkFg3MoKBykU0QhoUAIAuAksbpgNByPxQMSGVsVDYlkIqdUiJYLJqORbDgcHRseRR8gISIaEyMkGCVYRBEmeyAnlgaQkSgpmU4RAZ1OKqFOpFNGfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== navdown16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObCRKZBxCXAwyTKTK3Ozy/NTm9GSivAQWHNzu/FzC3IzO5CySrAQOHAyuzETS3CSWtAyOtETa5Aw2VLze7ByWtBy61BSavAxWdBRCXAwqPAQCBDR+nKTe7FS+1Eze7ByixBRmjPz+/AyexAyixAQKFBRqjAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZeQIBwSCwaj0hAYCkYEJLKguGASEADigWj4bgaHpBINykwSCYRa5HCFFQsF0xGo9lwhpSOwfORYC4gISJ3RAQdIyQYJSAlImNrh4uNJkl5CoKUUBQnjlB4KJ6hokN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 navforward16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAwyTBRObAw2VDR+nCRKZOzy/KTe7Pz+/KTK3Nzu/Lze7FS+1AyexAyuzBSavAyOtBSmzOTy/BRqjNTm9IzO5ETS3ETa5By61AyixByixBRmjAQGDBxCXGSivCySrCSWtBTC3AQOHAQWHAxWdEze7AQKFBRCXAwqPAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZjQIBwSCwahYGjUjBQGgWEpHNYMBCaT4G2UDggos+EwmBYMBpf6VBgYDgeEMgjIpmoAQVKxXLBPDIXGhscRB0eHyAgDSGBGyJFASMiIiMkJYImUwAnmJqbjp4AKCmhAKSlTn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= navhome16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDw6PBQWFCQiJAQCBFxeXMTCxJyanDwyLDQqLFRSVLSytJSSlISChCQmJERGRFRWVGxubKSmpJyenGRmZLy+vOzq7OTi5Ly6vGRiZPTy9Pz6/OTm5ExOTPT29BwaHNza3NS6tJRqRGQqBNy6pIyKjDwGBPTe1JSWlDQyNOTGrNRiBGwmBIRaLNymdLxWBHxGFNySXCwqLKyqrNR6LKxGBNTS1NTW1Jw+BEweDDQ2NAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaoQIBwCAgIiEjAgAAoGA6I5DBBUBgWjIZDqnwYGgVIoTGQQgyRiGRCgZCR1nTFcsFkHm9hBp2paDYbHAsZHW9eERkYGh4eGx4ag3gfSgMTIBshIiMkGyAlCCZTEpciJyQjGxcoKUQBEhcbIiorLB4XEltDrhcaLS4vtbcJra8bMDHAGrcyrTMXHjA0NSypEsO6EzY3IzU4OdoTzK0BCAkDMgkIOjJlAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= navup16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObAwSHBRSdISevBRWfAweLNzu/BSOrAQWLPz6/FzC3DzW5BxObHTS5ByyzAyixEze7BSStBRWdAyWvByixAQSHCQ2TAQCBBRGZJze7CS61BSavAxefMzq9ETW3CSWtAwmPPz+/CzG1ITC3FyuxBSCnAQeLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZfQIBwSCwaj8hhQJAkDggFQxMQIBwQhUSyqlgwsFpjg6BwPCARySSstC4eFAqEURlYhoMLBpPRUDYcHXt7RgUeFB8gIU0BIoiKjAcUIwiLSQUkJRsmGIwJJwmEU6OkfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== playeject16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+py+0R3IFQUtruXVqn3kkWyIARR4rqKvoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= playend16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+py8Eb3ENRggrxjRnrVIWcIoYd91FaenysMU6wTNeLXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== playpause16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+py+1vgoxzyUCxrZd18ClfmIyVyJ1lqkHuC0N+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 playstart16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pyxudwlNyguqkqRZh3h0gl43hpoElqlHt9UKw7NG27BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== playstop16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+1vgpySUWpvXXqrHmSaeJEYhKYq6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textblock16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py40Bo5SOzRvrwlgrfnkJOIkPaaaJXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textbold16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIihI+py70BowPQ1HZpwNv212Vg9IGHmIjoWa4ey5DSRNd+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 textbottom16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIVhI+py+0Po5y0hYtzrkB7zH0fN/kFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= textcenter16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsnRkqtDnhu1zHfFSpjaY4PavgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= textitalic16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+0BgztwUmmjBXX3jE0auHHhM5Yq4xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textleft16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsgRoqr3Vnt102fFSJjUC6nlPoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= textmiddle16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIXhI+py+0PT5i01pisphjt3UmfFZYm5hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textmove16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsg2kfZvblXbwTg10WlA4rjyvgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= textright16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+pm+EPIZstSrqsDhhv1ylfFE5jiYwX6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textsortdec16:text text16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BPwCBAQCBAQC/FxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM5CBDM+uKp8KiMsmaAs82dtnGeCHnNp4TjNQ4jq8CbDNOroIe3ROyEx2A4vOgkOBzgFxQ6Xa0owJ8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= textsortinc16:text text16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BAQC/AQCBPwCBFxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM4CAqxLm61CGBs81FMrQxgpnhKJlaXFJHUGg0w7DrDUmvtPQo8qyuEHoHW6hEVv+DQFvuhWtCFPwEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== text16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIlhI8Jwe2/AmpTynqPTXSqrnBM+I0kdmpmGmUp+K4nPMvhYx9+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 texttop16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIWhI9pwe2uYnq0yQtqxbz7D4biSIZ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 textunder16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pu+FxXoOIKpds1oBH7hlYxYxRCaIZ01lhJbHy9tTv7BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewchoose16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMzCLrcGlAs6UAYgwLdLtEcI4ygQo7VVp2oupGpG4vmaUVTemX523qlFcw0a4RqNlkx5k8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= viewdetailed16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMmCLrc/i1IAVkYg1Z1iRYUKCqitp1oikqBWV3ZOnhkWNagqu+qnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewicon16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrcG1AwGOQbw6qANeCEB3pCSZpO6pgowJZqLKuUGE0dnuEhf8IL1kz1shSHDX8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= viewmag-16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ+QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7Kmpl0CtLGLvbW2Zn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= viewmag16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ8QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7GLArS5Q7O1tmZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 viewmag+16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6cAsLECrqeys7WxpqZdtK9Ct8C0fsHAZn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= viewmulticolumn16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrc/ixI0WSgKoyBl+beQFACpo1AqXbKCr1wLAMWS08hGG3dSZqin4sxnBmPD38CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= viewtext16:view view16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIchI+py40BTQSwuovp3DXkv1ia1IHmIXLiyWJ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 viewtree16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBDQyNPz+/PzerAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAMuCLHcri4yGISlj4kxcANgNRBQCIbL6U1Su7bB62rXvGydG25kqpwfIGxILBr9CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actattach22:act act22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBMTCxPz+/DQyNKSipAQCBISChFxaXDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARrEMgJgqA4zzus/gLhFd5HCcZAXqsphYPUdhcYFNRcZnvdtpnDqPTbUWgAJKBYwzBlw+bRo3xmkNWoBgm0OrVLn3GC9RgCk8DhUw7c0rHPr4CDu5SYQNyEt7uSY3p/UAKFhYKDSQOLiwgFdhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== actbookmark22:act act22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBCQmJCwqLMTGxAQCBBwaHMTCxLSytERGRFRWVLy+vKyqrKSmpHR2dJSSlJyanISGhGxubIyOjKyurGxqbFxeXGRmZHx+fKSipLy6vGRiZLS2tFRSVHRydJSWlHx6fCH5BAEAAAAALAAAAAAWABYAAAWWICCOZGmewamaQrq+wUC8azHINGocOI38iIRAceDNaISFYklkGHOEhoNBfUAOhuOLEJE8HoPiRKFdESiQBqViuTDIUAsEcyAeGJmyiqC5RCwJGg0YcEh9D0V3Dxt6JwQVDRYVHBUdi40mjw0PTgwQHgeYJQQJfxUXFxAOoTkFpQ0fsRSimQkWEQ0VtI62HLt7vjl7JQYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actbookmarknew22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCwqLCQiJCQmJMTGxAQCBLy+vLSytERGRFRWVKyurKyqrLS2tKSmpHR2dJSWlKSipISGhGxubIyOjGxqbIyKjFxaXGRmZHx+fPz+NGRiZPz+ZPz+HMTCBKSiHPz+jFxeXPz+XPz+tPz+zPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAamQIBwSCwaj4Gj0hgQLJ+AAaEAVQoI06pRYDhkoYgwIhEgKBTfZ2FhaBsYDS8VWnA8Go0FJIKeqyUTDw8EDHBpSwUUFQ4UFhcYDQYFfkoFFxEQDG8KEAUZlEeWGBIakw4FG1STiBoYBRwdBR4fHgUdHKBEBSCnIR8iIyIfIblFu6ceIyQjtcXGCbLKzAUKzrq+wMLEVa+xs7W31kOTk6nkWuOf6Ea5QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actexit22:act act22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBHR2dDQyNCH5BAEAAAAALAAAAAAWABYAAAJOhI+py90RnIMyRUOxhDfzJkACdoXBuEDDkQFDi5go0MrKx16kns80b7qdELCgBYaEGWwL5nG1ePFiKp9A6kuYRNuho8vxVrrZivmMRtMLACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= acthelp22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBCQuNBwiJAwiLAwaJAwSHAwSFIy+3ERynCw2PCQuPAwmPCxOZCxWdJzG3FSazBwmNAQKDAQGBDRmhBQyTDxujDR2rIy21AwWJDyGxCxmjAwmNDRihAQOFDxmhCxunBQWFAwaLCRahDR6rESGvDQ2PCRWdDRunDSGvCRSdAwWHCwuLDSOzHSmxDyKxBxCZBwqNHSu1DyOzAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAahQIBwCAgIBAPCoGAgOoeBAyKhWCwYDUf0CX1AIhLiJEGpBLiAAaRxdgYsl7Ybk8igBZoN5xmAdDxoanp8HyANISF8EBsiXBMjJBolBEQmGHFoRScbKHIKDykqK5lFAZRCnyknTaROLA8tq61OChgtKqyzQgEYEJi6UC4vI3LAASkbMBPARAEBdszR0sACEaPSMTIQM8W6KzNl3bo0NOJDdEEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== actlock22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHRudFxaXExGTERCRAwGDGxubPz+/Pz2/Ozm7Nza3NTS1KympFRSVHR2dNTO1JSSlKyqrKSipDQyNMTGxDw+PLSutKymrMTCxAQCBHRqLBQODJyanDQuFFxSJFRSJFRGJERCHExCHISChHxyLEQ6HGRaJExKHLSmbLy2fOzitPz23KSiZHxuNHxyNJSOTNTOnMTCjLSudKSaXJSKRJyOTOTetNzWpHxuPOTi5MzKzLS2tFxWXOzq7Ly6vOTe5Ix+RLSqdNzSpLyydKyqbKyiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBAgMEBQKEjI0GBwgJCgsMDY2XjwkOAgQBDxCLl4QNCaGCBBGWooINCAqqrBKgqwATFKaDFRYVtBMXsIMNGBm0GRADjQIJxKIaGxwdHh8gISIhGyMZzIwkGholJiYfJiAfJyEZISDbg90oKCkqKwcHKyooLC0f7IIuLzD2YMSQgW8GDRri+AFoUMOGvRsxUhSsQQPHvmQSchyQtEAHhh0WJHDQcJERjwsKDvRI0BGDjwgicXhQyCOjSgUKPO6AObIkIQESfmxk6REDT4s0bfaYpDNkT4VAha5s+TLmzEYtatwIOHAiDZIKNQAJYk9IjCFEisyoocFEB4UACtBpm0t3LiF4gQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== actredo22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3Pz+/JTWbHy+VHTCTMTivPT69BxGDESuJDyiHESiHEymJIzKZAQCBFS2LFzKNGzWPDRqHCxqDFSqLHy2XESCHAwaBAQOBBQqBDyWJHyqZDyKFGSiVESeJBQ6BAwSBGTGPFyWPFSSLEyOLESGJBQiDAwiBBQmDCRGFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaoQIBwSCwaj8hkMcBkKpcBwYAwEDif0YLhwEUkFItFMkAwMBoOR+PxgHwjRDggamhIJpQ8ZbKGKOQLcgEFdhUWEYgRF3sNfhELBHALAhgZFhobRBwREhQdEAIEHpIKHwsaSJwUDQgQIJINARxKESESDQ0dgCIjSpAkDAwPco+ZSJAlJicnKHIAIrNHidOIQxunT0kpCyrZSCss0d5Fj6jjRonn6uvs2QZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actreload22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBCRSFCRSHBw+DBxCFCQ6FBwyDBQWBBxGFCxyLGTChMzqzLzmvHzKjDyOTER+RERyNDSqXNzy3LzivFS+fCyCPBQmBCQiBBxKFBQqDOTy3LTitES2dDR+PCxuJOT25KTarCx+PESSTCxKHDSeVCyKRNT21ESWVDSGPBQyDAQCBBQSFDRuLDSyZDySTGzChCRiJKSmpExKTDS2ZGzGhLy+vGxqbISChDSKRMzKzGxubDQ2NIyOjCQiJCwqLBQWFCwuLKSipERCRERGRHR2dAwKDDw6PFRWVIyKjCQmJFRSVBwaHKyurAQGBExOTBweHFxeXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf9gACCg4IBAgMEBQYHhI2ECAkKCwwNDg8QBAOOhAQREhMUFQgWBxcHGBmbggkaGxwPB4yDB6SbBJIKHQaqtY0eHyAhsqrDgx4aCiKpqoQHAyMjJBMKJaSxzAAHIRsmJgonKA0LHSmDKiuOBywRLSQuLyEwwyoxMuiN6iUzNBXy5jU2bsgoJugABBz95uXQsUMGD3vpPPgTpKIGwx4+HMr4kW4YkCA2hAzxAQSIECI+imBTwVIFESNHerRUgc0cEiFHkjiiyYzeDiVLdvLcySSkkKGEWiZVweSGkIHMmvQosoQlkaZOjvhosvKJjIAxoOAsgpRZkQNLnvSoqspAIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 actrun22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAwKDAwKBCQiHNze3AQCBBwWFDw6NPTy9PTy/Dw2NKyytOTi3LS2tMTKzMzOxLy+tLy+vBQODNze5NTS1JyalIyCbIx6VIRyVISGfJyelOTq7EQ+NMTGxKyurGxeRLyKPOSmROSuVOy2XOSiTLzCzNTOzDw+NCwqLHxuVOy6bPzGfOSuXNTW1LSyrMSWRNymTOSmTKSCTPTGjPzSnPzWnMyaVBQSDMTCxPz+/KyahNSeRHxeLJRyTPzmtPzarOy6fJyajNza1Ly6vLyulFRCJPzirPTOlMS2pNTSzMTCvJyenBQWFNzKtPz6vPzyvPzqtOzGlOTe1AwGBFxWTLy6tPTm1PzSpPzutPz2xPTSnOTSxOy2dPzapPzerOzm5IR+dPzu5Pzu1PzqxPzy5Pz+9GRiXGxuZKympHR2bOTm5Pz6/MzSzBwaFJSSjCQmHPz2/AwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeEAQKIjIIDBAQDjYMFBoMHCAkKgwYFhwULDAUKCg0ODxCkBQgRnoUSExMUDxUWFxgZGpAbFIuGHB0eHyAhIiMkIB8lJieIKCUpJCTGIyorLCktKIUDpC4YLzAxIjIyMzQ1NhgdpJI3ODktJTowOyM8Ejc9Pj9AQUIEclAocCMIBQhDiOwgoaKIoCI+jBxBkkSJkCWemIyq0GSHCBVHihRx8gRKFCmpKhGaQqWKFYZXsGR5kkXLFgRUXBUqkCGCFS5AjnTx0sXKlyA6CRVgAAHMAilhxIwhU6ZFkBY5kgKYUoXBAzMKzixZ4AJNGgVm1KxhM0WpmQpUMtooaOPGxAM3Nw60oYLGjNYCbzYJOgAnRzNBJ95oPYQCgpJtkwzFoULlRuRPiy9fNhAIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actstop22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAASC/CQKDBwKDCwODNyKjPzq7My+vIxiXAQCBOSOjPz6/OSelNySjNyGhMR+fLRaTGQ2LPz+/Nx+dNR2bNRybMxuZMxeXMxiZLQSFJQaHFwqJNyKhOSCfNyCfNR6dMxmXMxWVMRORLQODOR+fOSSjNR2dMQ2LJQWFMRWTLwWDNSCfMxeVLwaFKQODNR+fNx+fMxiXKQSDOSWlMRSTMxaVMQ6NMxORMQyJOTS1MxqXLwWFLRORMxKPMQaHMxKTLQWFCH5BAEAAAAALAAAAAAWABYAAAb2QIBwSCwajwGBcikIHIsDQmFKNRwQT2EgoVgsGOCG4wHBIgmRhWRCqVQsF0xGYyYGNgoGh9PpeCQfICEic3UAAWgLIxwRJBsbHSUREyYYJ3RDAQULexGejhueESgpl3WaCxsqJKKsChEUKywtmFoFDC4vCayikzCyMbWHt38NCTKiHhUfMyzBdQIFKsodob0VNDWzwppuKxMRrx6iNjcitNA4bh+iEzkwojc66JkOOxcf7G35PBE9KS1MEUGgIQOIFfk++KjRw9wJgUUIZvhRoyLDFCliQDQisUWLGCJOeNx4hKCGkyhPGnqCoKVLl1liypyZxUAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actundo22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3PT69MTivHy+VJTWbIzKZEymJESmFESiHDyiHESqLAQCBFzKNGzWPFS2LNTmzCxqDDRqHPz+/KTGnBQqBAQOBAwaBESCHHy2XBxGDOzy7HTCTEyyJDSqFHzWTAwSBBQ6BIy+dESKJFySPFSSNAwiBCRGFBQmDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMsBkKotMwYAwEDiXgYLhwD0gCFZiQKxNKBYMRqPh+D6G16y5AYnYIxBJAyF4AwITTAUJdBESD4gPFBV6Fn6ABBcJDIYPGEQZGhQbHAIdfx4JHw2VSBodGwWfAR4LDSALfkgYAQurBiAhICKfSSMkvQElGyYnGyi9Rxkdj4nOskUYyU9FpxnURikdGtjRKivdRKfQ2Inh5+jpRwZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= actunlock22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBGxqbFxaXExOTEQ+RAQCBPz+/PTy9Ozq7Nza3NTS1KSipFRSVOTi5Hx2fJSSlKyqrJyenJyWnDw6PMzKzKyurDQyNFxWXMTCxJyanHRuLHxuLGReJFxSLFROJFxWJExCHERCHBQODISChHxyLHRqNIRyNHRmLLSqbKyiZLy6fOTarPz67Pzy3OzitKymZFxSJJySTNTSnPTy3NzSpMTChLSydKyqbKSaXJySVIyGRGReLPz23NTOnMzCjHxuPLy2vKSmpOTe5LS2tLSutHxuNHRuPMS+xFxWLIR+RDw2HFRKJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SDAQIDBAUChY2EAQYHCAkKCwyOjZANDgIEAQoPjJiDAg2iggQQp5gMBwmrDBESl6MTFKuoFQSjABYRF40CGAW8BRm7hQwNxBobHB0eHx4gISIjBdiEAhYFJBslHOHSHh4hBSHlxIUmJygpKissBiwtLi8pGjDqhBoxMjMuaNSwcSMFjhw6dnjYRyrGCh4ueviw4Q5HDB0/PjAUJCBCAwMIGiiggAEIBFk/FgYLIgRkggQkhxAJkqGExkYMFnxsIGRkSQgLHhRRWUjAggQgG8AsSWRBBiP6VrYMOfKIyaBDNwLo+HHSUplOSyDRqiEHjRkretRQkcLgxayNF0wksQGQxsSKMTIq0QpgCba/gAE7IhMIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= appbook22:app app22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBDyGhCyCfFSWlESOjDyKjDSGhCx+fGSinGSenFyanEySjHSqpHSqrGympEySlBx2dISytHyyrCR6dKTGxHyurHSurHyytGSipCR6fARmZFSalEyWlBRubAxubBRydDyKhDSChLSytPz+/MzKzIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbFQIBwSCwaj8ikMhBQIpmCQdM5ZBIKhgNiugwkFAsCI7pNMhuOxkNBgBgEiAi3GkBLJpJHYgEpaClyREwVFhcSEhgOGQoMfgMaERtcARQBFRMYExZ6HB0FUYAekkIBHxqWFmlrC1haESAfG6MBGx+VFRgKYH0hInGRklO0ppYXCwwMWQiQHkwjgrWnFRdYZHIBJCTP0LaWGAcDW9jZ2nMAw9IWTOQkJSZMRsOV49nu8E+19PbmR7TY+1TovONH5V7Ag0QMBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== appbookopen22:app app22 22:photo:22 22:R0lGODlhFgAWAIYAAAQCBAQ2NPwCBHSurIS2tBx2dBweHPz+/Ozm1GxiTGyqpPz6/Pz69GSqpOzaxPzy5HxuVLSmlOTazPz27PT29NzClPTexHxuXLSmjAxqbFSinPTy9KyehNy+lPTy5Pz29HxyXNzWxKSahOzexPzy7IR2ZOTWtESenPTy7KSWfIyCbKyijAQGBDyalPTu3KSSdDSOjJyOdCSGhPzu3OzizJSGdPTq1PTq3JySdMy6lAyKhOzWtOzi1OTOrJyKbMS2nJySfMS+rAwCBNzOrNTCpNzKpJSGZKyafLSifLyylIx+ZHx6ZDSChAQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAWABYAAAf/gAABAoSFhoeHAAMAiI2IAAQFjI6EAAaJkQeTjwAICYkKBQcLm5WdBwyfhgChB66bp64HCQC1lQ2irqQCAA4PowsLEBESE4wAuLIHFAAVFr+uDBcYxRm1GrmuGxwdFh4Mrh8gGCET1gDYyhsiFSMkDAsMDCUYJhvnJ9kHKCnODwwfPlBQsULCPRYAWogK9sHFiwoOPEyQh0JFPXO1YBSYwBEFghjdHkwQOYGgwQwIZRR44GHGDBogabhAsYEEihrUMAIoUMCEDRs3HODIYQHFA6MPcJA7KICFjgw7eIzo4cOfiwc/gKwIUm2SkKdDdlDt4AABDaU/iIRwwbTSUyJFOow4S3Hkx9oNDDZgXPU0h1wcSIgEGUw4ibVET5WoWMKksePHpdxmyKADAEIWly9HJtQkQJMmlAgZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== apppencil22:app app22 22:photo:22 22:R0lGODlhFgAWAIMAAASC/IQCBPwCBPyChMQCBPzCxAQCBPz+/MzKzISChKyqrDQyNEQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARYEMhJ6wxiEMtpIAWxddwXiqRlikSQeiAbuC+wirNR322gv7zcLobzDU+9XypoBBKTR1lz+RTWDgip8nUwZK1XLyIx5XoVicX2RUAo1DVKi7GOBxjxfNwQAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 apptool22:app app22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBISChFxaXNze3NTS1Ly6vKSipNTO1Ly2vNza3Pz+/MzOzOTe5DQyNOzu7MTCxGRmZMTGxPTy9Ozm7Hx6fPTu9MzGzGxmbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAW1ICCOZGmeaEoGbBsI6joMRGEcbQwESDIrtVtAF1gwDLNaAmfKiVgLBJKgwB1KxQZrBHU0FAXmavFoQLYiB6TxFXMj5AZBwnJI2I3wcNWALyYEcgoKXxRhOHs7XxEVCwsWFgoUDRYUFwwQB25ZCxiNjo6GkwUXN2NsCxEYqhUHoQ0MEglYRQQXErcHrI55FycuB2YSmoyOBTEtB2sXuhU6XAENC2a6z9AKCwq+1tAN3E2J3ySkIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 connecting22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxOTi5AQGBNze3Ly6vISChNza3FxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAAR4EMhJqwzY6omD+MNGdR8YilNZnug0qGzrqrL1lnV1fyJBVB6VQEMoGH4ADGwQkxQPBwMiKGA2J8VEAnq0tgiKg5aL/C7C2gTjKCM0zowDQ8tuNQznNL7cKzjOUQsNfER+gguIg19+Pm6ChBZFDmWNi5M5FIyYFHQRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= connectno22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBERCBAQCBPz+/MTCxOTi5Nze3OTm5Ly6vNza3ISChFxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAARiEMhJq7046827/+AVCKE0Dh9BAGdaGISAToFGFMcBU+11I4hDYseSZQiKwwKoI/QwBIYiuFDCZseGdIlYEjUNg1SpY6w2N4cUIW6cjwW1lsFwo+MqgtZuw0/ydw5vH34lBhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== connectyes22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBKyirPz+/KymrOTi5KSipMzCzNza3OTe5Ozi7MzGzPTq9OTm5ISChMS+xFxaXNze3GReZIyCjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWLICCOZGmeaBkAQpoGg7C6JizTQT7CxPwOwFWgYPChYIXkIHC4uQKGAiKRKCyNpxxUUVViVYNFLkqtLo+DAkMMLXQPXwAy2WCTF4544FGtKuwPDhB6DnxuUmyCcXIQhV1uYoMuEAcOBxEKCHg6TzGFCJUSizuejROKOAM9OY2SnUU7nD89NCcDsLUnIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 devscreen22:dev dev22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBAQCBPTy9PTu9Ozq7OTi5Nze3OTe5Nza3NzW3NTS1MzOzMzKzMzGzMTCxMTGxOzm7AwGDBQOFBQSFCQeHCwmLCwuLDQyNDw6PERCRFROVEQ+RDQ2NLy+vKSipISChGxqbExKTOzu7OTm5Pz+/GRiZMS+xLy6vBQWFLy2vCwiHFQ+NMSmfNSyhIxmTDwuLJx+bLS2tCwmHMyyhMyqfPTqpPzyvLSWbLSWfPzitIx+ZDw2PAwKDCQiJGxWRPTmrPTerMyuhPzqtPz63PTWnPz6zNy+nIRiVDQuLKyWbOTanPz21NS2jNS6lDQqJHRaTPzmrPTSnPzyxOTClPz2xNSuhPTqxPzuvOzSpAQGDOTKnMy2jOzSrPTu1NzKnOzOnBwWHJRuXLSWdPTatPzqvNzClCwmJOzSnOTOnPTuxOzKlOzerOzarOzitJR6ZNTO1IxmXPTWrNSyjPzOjPTSpLSehHRqZOzirOTCjPS+fPzGhOy6bOzKhGROPMy2lPz+1PzmtKRyRHRiNNTCdPz+zNzCjEQ2NKySdDQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGBARIqXMhQIUIBAwYQIFCggIEDCBIoULBgAYMGDgIIDEBAwMSKBRBk3NjxAciQIwdACBBBwgQKFSxcwJBBwwYMHBx0EAmA5EwPH0CEsCChoYgOQ0cSGCHhA4kSS5syJGDiBNEAFVGUKKEBAwWFFM6SNJHi64gDFEKE4FBBggoKK1i0cPECxokYXw0gsECYggQZM2jAqGHjBo4cOtqOxLhDAg8ePXz8ABJEyBAWRIoYOfJipEoMCZEkuaFkSAslS5jUGJKkSRAnRREo0JDwCZQoTKQAmUKlihQrVa5gKZ1lI+oAK7QM2cJlSZMuU4Z4+TJEx0iNOwKAggkjZkyOFmS8kClzpcUQLRRGbjRD4MgZNEzSqKG+ZgobI2248dUbDDDwABzcxSEHEFpgEcUcdMRRhx1fFejAAx0cgcYdSxiBRx566LEHH0d8QFRRNC3Uhx985CHEH0MAEkhCBxWkgiCDFEFIEYUYUmONMhyCRxVH/PgjBYioYJAdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editcopy22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFPz+/DQyNISChDw6PMzKzMTGxERGRIyKjFxaXMTCvKSmpHR2dPz6/Pz29PTq3MS2rPz69MTCxFxWVHx6dJyWjNzSzPz27Pzy7Pzu5PTm3NTKvIR+fJyGfHxuZHxqXNTCtPTq5PTi1PTezNS+rExOTFRORMyylPTaxOzWxOzSvNze3NTOxMy2nMyulMyqjAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbYQIBwSCwahYGkUnk0BgTQ6IAQaBKfUWhBYKhaAU+CgXAQIAyChLeJzSIQhcH6GFaM0QtGY5kstqEODw8QEQELAhJTc08KBBMEFBUWDRcBE1pca20SGBkaEBscAY5maFRIAgoLHRQRHh8gIQFlZnByqA8ZGSIQIyQjJQEmYgJ5p2ACrK4gJx4gKIZZAgdeAQ4ZI9kjKSor0AwEjeAs1S0cHAslLi4vMDDRWeRIfEsxMeET4ATyVoYLC5fizXEiAR84BeMG+pEm8EsAFhAjSlR4hR6fLxiF0AkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= editcut22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBAwCBPz+/OTi5JyanOzq7DQyNGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARbEMhJq704gxBE0Bf3cZo4kRJqBQNRfBucyudgvJS6VaxLzyMa6/bLiWA9HOg4VIIkL5vzuRkcpkvRIIAorphJLzBW84WEuRZWp6uaT7J2Sh1Hit3OY/ZO7WvsEQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 editdelete22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAASC/FRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanPz+/Ozu7BQSFCwqLDw+POTi5PTu7MzKxIR+fCQmJPz6/Oze1NTGvPz69Pzy7Pz29LyyrPy+vPyupPTm1BQWFIQCBPwCBMS6rPzSzNTOxPTi1NS+rPTezNzOxPTizOzWxMy2pOzaxMy2nPTaxOzOtMyynOzSvMyqjPx+fOzGpMSihPTq3OzKrOTCpNzKxNTCtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf8gACCAQIDBAUGBwgJCgsLgpCRAAwNlZYODxALEY+SkAMNEqKjEw0UD5yegqCjrRMVEqidkgWhraMWF7GptLa3EgEWFRSOnhW+vxgZEBqzkBvItxwdHryRCNGjHyAhHSLOgtgSI60c2yQjJd+eJqEnKK0hJCgnJSngAO0SF+8qEvL0VrBogW+BLX4oVKgIyMIFQU8KfDV4R+8FDBcxZBREthAFiRIsOsygsVEUh4Un3pGoUcPGjZInK65QicPlxg8oX5RwqNJGjo0hdJwQ6EIkjRM6dvDYCKIHSBc1Ztjw4eOH0oIrsgIJEqSFDBo0cuTgsdSTo7No0xYTZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= edit22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBISGhISChHx+fHx6fHR2dGxqbGxubGRmZGRiZFxeXFxaXFRSVIxSLPyuXMzKzMzKxMTCtExOTPzqrPz+/NTS1MS+tOSaVPyWNPz6/IxeNPzavPyKBNTW1PyCBPyGBJxmNPzOpLx6PNRqBMSCRNySTPyCDPSGBMxiBKROBHRydPSylOyydMxmBJxKBAwODPS2lPTq3OyabJxGBPTy5PTGrOyOXPR+DPz69PzmzPzevNxuPORqLMReFPzy7MyCXKxiNIRKHBQWFNTOxPzixJRaPFxONHRqVPz27PTy7PzStCwqJDQyLJSGdIx6ZPz29PTu5HRmTLSKbMSGZHROPFxKPJSKfJyShKyehMyuhDQmHEQuJJyOfLSijMSynMS6pLSefDQyNHx2bKSahLyqhLymhOzi1FRGNIR+bNzKtOTOtOTKrOTKpLyedAQCBFRWVPTq5NzOvLyunLSmlNTCrOTOrNzGrLyidMS+rLyynKyijLymjLyqjAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAAAAQECAwQFBQYHBggJCgsLDAwADQ6CAQ8QD5ydEJ+gERKWE4ICDxSpqhWqqhYNFxMYphCtqaytGRoXGxgcggSoth25u70eH8APFR0VzMzNziAXIRjIvwAFwq3EqSLUGB/iI4LathS4JCXVJh8nKCmCKrXDFCss1eIfLS4v8ssdmgWsAGNDDBnt3s3wJ+jAtlUhaNSwccNEi4WCBBl4SAHHihw6ZOzg0QNjRgAG6KXK4CNEjBU/gDQI8kLISQAIADobAoMIzCINjLw4YvNkAno4kCRRUuNHESNLmDRxUjSjAlRPfECJImUKlSpMrFzBIqWqoKtJaWSJomULAy5XXrp4+QKGYcYFoCBEWRImi5gmY7CQyVLGriAGD2jEMHMmCxc0Xb6kUbOGTRs3N988gLM4jpw5Y+iwqcOGjZ07mE8yiGABz5c8c/Ts4cOnDJkybS7fdMO7t+/fvDMaCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editpaste22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQWFDw6FHRuFGRaBFxSBAQCBAQKBCQiBIx6HPz6/NTOfKyiXDQuFOTm5Pz+/Ozu7PTq5Pz63PTyxNTOjKSeRExGLMTGxMzKzNTS1NTW1Dw2NKSmpKyqrKSipJyanNzWlLy6ZLSuVIx6FISChIyKhJSSlCQiJLS2tDw6NDQyNCQiFCQmHBQSDGRiZHRydGxubHx6dGxqbFxeXGRmZFxaXCwuLOzq7KyurHx+fDwmFEQuFCweFCQWDBQODBwaHBweHKSinJSWlOTi5JyepHR2dDw6PBQSFNze3ERGRIyKjIyOjISGhPz29Pzy7MS2rMzOzFRWVHx2dHxybDQiFPz27Pzu5PTq3PTm1NTCtJyGdHxuZHxqXPzq3PTaxNS6pFxWVFRKRNS2nPTi1PTStNSulNzOxNSynMymhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwABAgMEBYSLggaOjgcICQoLDA2Pj4MGDg8QEZ4FDxITFBUWFxcYGRobjQ8cHR4fCQ8gCyEiFSMWJCUkJieNEB4dKB4pKissK8wrLS4vMDHBAAYQHx8dFx0fJDIzNDU0M+IyHzaNNyg43Ng5Ojs7Ojw9Pj9AMkCNDiZB/h9CSOx4QLCgihItqBkYgqIDESElitAYWJCgkQcXjjRCgi1Ihw4BB5LAQOLCgyQYHihpUU3DBw5ElpAgAYNixSRJjKjQaECDCRPZPDB5IbIGSQwKLnh4wbInLA4kmJB4oaPiAwVNnER40hRK1BIAaVatUZJEFCkmpmjgCeWDCalFe4q4oFKwSRUrEa5gycLzwq8lUnPQ4PEgSpYcUZ5o2cIlS1O/JHLEDdfjQZMIVrpgweLFy5e+M6WSmBGlxYMYYBRzCaOFi5imHWBIfOEiShLTVjaP6eyFTBmN1TA5OvLDjJksWb58OVMGDRqWjAYdmU79SIvpjqJr104nEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 editshred22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBFRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanOze1Pz+/Ozu7BQSFCwqLDw+POTi5MzKxPTu7LyyrIR+fCQmJPz6/Pz69Pzy7Pz29OzaxPTu5PTq3PTm3My6pPzu5PTq5NS+rPTm1PTi1PTezOzWxPz27MyynOzSvMyulOzOtOzKrMymhOzGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbpQIAwIBgMCAXDAZFQLBbCqJTRqFobjgdkEYFKowPJZEyeUBqVR/crHDTKZYplovZKCW84+YKZZNZSBXl6EwEEBhVPXxZihGMaGRscdkIdg4QeEnVfCH2OHyAhIhuUAAiXZSEhIyQlJqWnjiEnKCWupRWoYyEgJK0SKaUKjam0JCorLMFfC6iqx8giLa/MGAsT1wsuCyULKwssC9RSzdkfCyALKuALLQsvpeXYIQso3gsiCzALMfENC+dGcMNHUAY/f+jq3ctncMYCGggFrsvHcEGNh/EyPFmg8cmrJxAVkVO0EUDJklHoBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== edittrash22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBERGRExOTDQyNISChBQSFCQiJCwuLPT29Nze3GxqbDw6PGxubHR2dJyanLSytJSWlJSSlOzq7Pz6/Nza3Ly6vFRWVBQWFIyKjMTCxHx6fIyOjLS2tOTi5PTy9OTm5Hx+fNTW1KyurKSmpJyenExKTMzKzKSipFxeXCwqLMzOzKyqrMTGxLy+vHRydBwaHNTS1DQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb8QIBwSCwaj8KAMoA8LgUDQsFwQByay4RiwWg4GA9IRGk0SCYJSsUCsVwwGQ1EsmESD5xOp+L5gDwhBRIZDhcDdkMGDgEiIxAkJQ8Ok5MmAohDAQ1xJxUlKCUlEg0pKpiZJRoLCxmtCw1eURhOcR4rbQ8cGRwLAwgGtBYTDywtGRKjvQTARgEZLhMcKC0OrQMvAirMRc7CHCTU1g2+20TO0NIn1RwDCya/wdHT1Rnt5LToKOq79trx0tR02YPX7Jm8fRxMOIhSLhOJE/LCJSTlr5kFEBQsWDiR4UGGBgsuHDg1BEYAfTE6oEBR4AIBAiS5yWBAAAGBAyaPGAgCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= fileclose22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBERGRERCRDw6PCwqLExOTFRWVHRydGxqbGRiZCQiJISChIyKjHx6fDQyNBwaHJSWlKSipBQWFJyanPz+/JSSlCQmJAwKDCwuLBweHBQSFGxubExKTISGhDQ2NFxeXFRSVDw+PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbZQIBwSCwaj8jkMSAYDAgEJbFgOBwQCUOAoJAaFgvGonHIBhyP5BcSgUAYDWxggD4WFmx3e3HQngkSRgYMEBMUFG4MCId0BGlEAQeEhocVDYcUdBYKF0QCB3gRlJgUAQEYBBkaRAMbDZMMpAYcT46rQwMJrgsdC6QcfwoPnUMOBgkIV6SHHg6bw0QEAQYfBpggBZjPGsRD0gEchxwCIR6HChnQRQ8DIU4DTR4Em+ncRw8O+fmoXPXdRg+gQLFgIYM/KRIkoDP4QMKFf0o0aBAh4qGUixgzCrETBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 filefind22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQSFJyanLS6vLzCxISChNTe3OTu9Oz6/Nzy9Nzy/NTy/OT2/Nzi5Mzu9Lzq9KTe7LTq9PT+/Pz+/Nz2/Mzu/Kzm9Jza5HzK1LTi9PTu9IzW5ITO3FxaXNT2/KTi7Iza7GzC1LzW3FRSVMzO1MTq7HTS3Fy6zFS2vKzm7Lze5MTGzHzS5FTG1Ey2xEyyvJze7JzW3ITa5FTK3EymrGS+zFxWXKymrMzi7ESirEyqvLSyrKze7MzOzMTCxKSepAz+/NzW3MzKzBwWHLzS3ERCRAzi3KyurNze3MzGzLy2vLSutCQiJAyytHRydOTe5MTGxLy6tLyqpKyelJSCdOze3NS+tLyupLSmnKSOhCwuLPzy9Pzu7Oze1OzazOTOvMyihOTi5PTm3Pzi1PTazPTWxOzOtNSunDQyNPzy7Pzu5OzKrNzSzNzGvNS6rMyynMymjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwGFhYOIiYQBAgMEAwKHiokBBQYHCAkKCwwFAZOEBQ0IDAsODxARCZ6gAAEGEhMSFBUWFxgZCJ+TjBoMEpkRERscGBGRih0BBAgeFBQOER8gISEfIruIIwEkCCUVwhcgJicoKSrZg9srCRkRGdMsLS4vMNiK2wIKMRsbMiwzXtCocSydIBs3AuCIwIFDiBMucugAoWvSiB2VNPDg0ELHwA0MkCXr4aNSggg8NoDIQOFHgBtAkgURMiDAEAFEVBCJFKCIkSMGOyDRkETJEkOFmABoUsRJQkQdnkzQACWKlBtTplBR6qopxkFRJ0ytYuWKFCxZtBBq+hRA2AlbRrh08fLlCxi1a51g+dQhDFwuYsaQKWPmDBpKXgNETaNGjJgyhNfcVdTTiWI2XpK0cePmzRk4YA5T5otGixY0qFOXbgXAQCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filenew22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBExOTERCRDw6PCwuLBwaHAwODAQCBOze1NTW1OTi5Nze3MTGxLS2tJyanPz+/Ozu7OTi3BQSFCwqLDw+PDQyNFRSVPTu7MzKxLyyrIR+fCQmJPz6/NTOxPz69Pzy7PTu5Pz29Pzu5PTq5PTm1My6pBQWFPTq3PTm3NS+rAwKDPTi1PTezOzWxMy2pPz27PTazOzSvMyynOzaxOzOtPTaxOzKrMyqjOzGpMymhPTizOTCpNzSzNTGvMymjMSihCH5BAEAAAAALAAAAAAWABYAAAboQIBwSCwaiYGAYEAgFAqGg/Q4DCASCsTiymgcHAcqQLB4mM+QiIQBppLPcMjkwQ4bB2X4maKgt4sVCHpnFhQTElNFE3mDDxcYGRp2RBuMgxwIHX9EBZZwHh8gCBmTQ52NISEiIyQlpUImng8hHyInKAgprwAqgnC0IKwrLLpGB4wctLYkwy0uuwd9Z8AnJywsLcVFx2YcL7UnJCwwLTEy0GXJoSgrCCwzNDTnxgjeH9UrKzXwNDY36LRGhEOwLx4NHDmgJbh3QoeOgv127EhojEeHDj16pEhRQoZHHzl+QJNCsqTJSXaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileopen22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQWDCwaDDwmFPSubPzGhPzCfPy2dOSmZPzKlPzSnPzOlPzKjBQODPzChPzWnPy2bPSmXPyuZOyeXIRSLEQuFEwyHEQqFDQiFCweDKRuPFRSTPT29PTy9Ozq7OTi3Nze3NTW1MzOzMTGxMTCxLy6tLSytKyurDQyNMzKxOTm5OTi5Nza1NTS1MTCvLS2tLSyrKSmpJyenJSWlIyKjHx+fFxeXBwaHKxuPMzKzLy6vIyOjHx6fDw6NPy6dGxubLy+vISChCQmJNza3KyqrBQSFLR2RKSinJyanGxqZAwGBJSSlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeDAYqKiIeLj4wBjQCMhY+NkoiLk5qbhQIDoJyGBAUGBwgEo4MECQoLDA2pDrS1tKQPEAwHERITE77AvxKqhAQNDA8UFRYXFs8YBAQZGqGPxw0RGxwdHR4eHyAhIiMkJSYnKCgpBAYPEhcqHyssLS4kLzAxMjM0NTY3cBA4UCAHBw8gVnhgEcKFjhc7UPDj0cMHAAI/KFgY4YLFio/jRpTYsW8GDyCSCEQw2DChOHIqgsCQSEPIEEEEJFhAoUNECCJEyOk4d6KIyRtGcB7hIJKjixEjHu4oimSGEIs4d8IIUoKECnNB0ElMwkNJJgBLlJBAcQKGiR07KGAURVGViY0mhIwwSTKjr99+THjUoIg0r48hTRIrRtxkiOMhDgrZCQQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== fileprint22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFxaXDQyNFxSTPTizOzi1FxORDw2NExKLPTi1Pzy9Pz6/FRWVPz29Pz2/PTy7PTu9OzezPzu5OzavAQCBPzy7PTm3OzazOzKrPTu5FxSRERCRGReXPTq5Pzu7ExGTMS+xKSmpOTKpPTq3JSCDNzSfHRydLyadOzCjOzOtOzSvLyyTMTCxKSipGRiZFROLPz+/KyurJyenJyWnGxmbLSabOzClOzm7LSutJSWlJSSlJyanGxqbNze3OTm5IyGjNTO1Nza3NzW3OTe5IyKjHx6fMzGzMTGxMzOzNTW1IR+hISGhKymrLy6vLSytERGRGxubKyqrLy2vLS2tDQ2NEQ+RASKBAT+BFxeXHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAgOEiYqEAgQFBgcGi5MICQoLmAQDh5OEDA2YCw4ODxARApKUCaGYEAsSCRMUnQysCwoVEhYXGLOLCBCgDqK5GQUXGooCAhscBB0euBUZEAUJvQgIgx8gIR8iCSPiHuIFEREDJCXaANwhJhsnKCnWERcRKiopFCvsBywhQrRwQWGAPAz5EhpQ9wIABRgKYsiYMTEEDQocatiwkUIEP18fbkCAAcMBjhwzdOyQwYNCgBMfKJSgMItBjxs+btwgCSGGjhw/ZoRgQKGZCRMUPgABEgSIkCE3SZok8qNqkR85NtDUEcPIkaVAkCR5SrJBDCVKlmzQ6pCCiRlMTJo4YUH3K5AeMBYYWctW0BOaUH60cBJFypQmII6wyEpFQBVFMSm4UAI3hJUrOGh8oOJrklYKWIromJGDR99Ogz5j4ZGlM+pEnwmBCwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filesave22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBGxqbAQCBLy+vERCRExKTHRydIyKjMTCxFxaXGRiZFRSVFRWVPz6/Nze3Nzm5Pz+/JyanDw+PExOTHR2dMTGxBQWFLSytHx+fISChOzy9Ly6vAQGBJSWlMzKzAwODJSSlHx6fIyOjOTi5DQ2NISGhGxubCwuLOzq7ERGRFxeXNTW1CwqLPT29Dw6PGRmZKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBQGBAMj8ikUDAgFAzKKCBwQCQUCcICKh0SEAhGw5EIZAmBrgCxeDQgcDJWyz0GIggJfL+XGwQJRxNgC3yGDwwUFUZDFhdthnwMGAZNQwEZFwQakXANBBQbHIIdERIBnRAOiR4ERx8gsSEMBBmGCyEGG3YGBwcgIr8UCwQHECOgG4xCtRkEJAvBJRklJgkSFBQeJ68hJiEoESkFKiEZIbkGARsLlwEGExENGhorGSkpFAYm66NDLAECpGiBYsUIFA8wLHBBQMWLVkdUCFCwaYVFBOymkVCgYEMgOykEpICBccMBAhhELFigTEqAAgIIwCiQ4eRKDyS6EAlJIAI0EpaudF4iIKDAAn9CkRT5eMROEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 foldernew22:folder folder22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBNzaTPT2FISCBCQaDPz+BExKBDwmFPSubPzChPzCfPy2dPz6BMzOTAQCBOSmZPzKlPzSnPzOlPzKjBQODPz+rPz+3PzWnPyuZPSmXNyaXPTyhISCLIRSLEQuFEwyHPy2bKRuPFRSTPT29PTy9Ozq7Pz+xJyanDQyNPzGhMzKzOTi3Nza3OTiVBQWFDwqFKxuPOTi5JSSjISChHR2dGRmZFxeXPS2dNTSzNTS1OTm5KSipLS2tLSytKyqpIyKhGRiZNze3NTW1MTGxMTCvLy6tIyKjCQmJMTCxMzOzMzKxJyenHx6fLR2RLy6vJSSlHx+fDw6NLy+vIyOjAwGBGxqZKyurCwuLBQSFJSWlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLjI2MAY6HAgOHBJYEhJCDBQaDmgcICQoLB4MGDA0OAQUBDg2cAAcPEBESE6QUuQasFRYVq5SxCRcSCggYGRjIGgYbFs8bHIMHExIJGR0eHx7cB83PFhsDDuTUEyAhIiMjJCQluwEmvsAnKAcp1x4qKyUrLLupWrByxcnFiwQIYIggEaNEiRgBZMyYQaNADRs2REA6cCODBxw5+OnQgWMHjx4+BND4MQOIg1gI0gUREkTHiplDhhApEoCGkRlHBL3I8MEHEhz+WAhJogTJySVMfthwIehAExE5jubAkYQpESc8fOx4AiXKNA8+ekhBgqSpzh5hPHcsmVLjpSAqVZBY6VGkiJMiPQKLnTvjCiEsWU4o3nGC8YksMmT8YCmC6iAXKLRc2cz5yGYtR0JjKWQgEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mailforward22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBJR2dLyijPTixPz69Pzq3Pzy3Pzu5PTu7Ozi1LyelOzavPz+/DwqLLyafPTmvPz67Pz29Pzy7LSWlPzmzPz6/LyajPTitOTSzMyurPz25PTatPTi3KyOjPzuxAwqVDQiJHxiZPTetKySlPzqvPz27BQ6bAwmTPTexLyinNzGxDRunPzy5KySjCQ+ZNzq9KTO7JzC3Nzq/Ozu/LzW7FSm1BR6vGSWvFyq1AyGxAxytAx6vBSKxAxSjMyujLSunES+5BSi1ByGvAQCBNzCrOTaxNTOvMS6rKyelCx6rBx6tBQKDOTWvPzu1PTq1OzezAQOHAxGdBROhAQGFPzy1NzOvIRqXLyynOzarPz21Jx2XPTWrLSShAw2XKSCbPzuzAwePAQCDPzyzPzqzPTmxOzWtAwGBKyObOTSrNzGrKyGbOzatEQyNKyCZOzWrOTGpNS2lCweHCQaHCQWFBwSFBQODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBhBwgQKFSpY0HgBQwYNGzh0mDhRAAUPHziACEGBpYgRJDiUGEkSwoCQJk6opNASRQoOFETQJDkggwoOJlYApcCihQuVL2DUhBDjhIqjJmRwwDCDhswaNm5MjYHjKggOOU7o0CGTA9gdYknG2KCCBw8VJVL0uBgihAUfP+CSNGCjsI/DiBPbAMJBsEQbQYQM+UG5smUiRYw0jlvYxhEkSYyIHm1EyRLTTH40EZvAyZPOR4pAmU07ipIkUKQ0mQIhAZUqVq5gKXzkSBYtyLVEyd1ki8QFXLp4+WJFQowbYLJnD5NbzJiJCjaQnhnvpYwZM0/OPFlvQ/f3iQvQpBlvQc0aCWy4VKnCpY0Y5yQxgEYXZFjghgwZUOHGCW90YQEccUwloBwGyjAHHXUoSAMZb0xhx1QOoMHDHSfIwSEOdTjhAQ1d4MFbTQ6Q4MYacrzxhhx04JCHHhvQsMeLJPHRBxpr+LHCGnusgccfgKixQR1ATtTBlDDAEIggggxCCCGFbLGFHVFKZEdAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mailget22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQ6bCQ+ZAwePKTC5Ozu/NTi9GSWvAwSJGSu3JS+5CR+rAQOHPTy/AyKzES23AwOHCw+bOTq/BR6xES+5AwmTBw6ZMTW9Ax6tByi1BRGdAw2XAQCBDQuNDRupKzS9FSm1BR2vBym3EzC7CSGxBROhNTW1Pz+/OTm5NTO1AQGFNzW3Ozq7Ozm7IyKjJyWnMzOzNzq9Nze3OTa5Ly6vCQiJGReZISChKyqrAwqVBRWlOTi5MS6xJSWlNza3OTe5Ly2vGxmbKymrIyGjMzGzISGhKSepCQmJDw6PHR2dJSOlPTy9MTGxLy+vLS2tMzKzLSutMTCxLSytKSipJyenKyurJyanCwqLCwmLCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBhgIBA4SLjAABBAUGBwiNlY4FCQoLDJaNAQ0ODwsQnYwREhMUE5ylFYYRFhcYGRgaGxsDHJUdFR4SHyAhEyIjJCUcuo0cJr0nExihxgwoyYscKSnMHicOIw4lKissLdWDHC4vMCu9McYqMjMyNOUANTY3OPEoOTolDCszdrSgwaMcBxs9TMxYOCMHBx8zfPj48QNINQ5BbMBIIUShDIUoTAhR94PHPEEHbQwZckOGjBQviMxYUWQIDCMmdXE4gqRnkiFETAxR8iKFjJU2evZEdmLJkgJIbqS4wXJIUapImj5FtuSEVyRVV1IVi4RIChhEkLVAgcJHEqVwVJUmYdKkiRNkALMRecKECRG/ff8CEQJFCA5kMKJEoUHDCQ/HkB9LmWKECpUeyKoIMSLEyosen0OD7iH2xg1dV7BkqXGlBpbWNTq4Zn2khu0aAAwEAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mail22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBDQyNCwqLCQiJBwaHBQSFAwKDAQCBDw6PPz+/Pz69Pz27PTy7PTy5PTu5PTu3PTu1PTq1PTqzOzmzPzuvOzitPTmvOzivAQGBDw+POzevPz67Pz25Pz23Pzy1PzyzPzqvOTavERCRKSilPz21OTevIR+ZExKTOTi3JyanLS2tPz6/Pz65KyihJSKbMS6lExOTNTW1JSWlJSKZMSylNTOrNTKpFRSVPz29MTCxPTmzKymjIyCdOTWxOzexOTWrBQWFFRWVOzu7MzKxJyalOzatLSulMzKtOzmxOTarFxaXKyqnPTmtIyGdIR+bOzetOzixBweHGRiZOzm3NzWzNzSrOTetGRmZOzizOTexOzm1JSKdGxqbHRydJySdHR2dOzapHx6fKyijOTixCwuLHx+fFxeXERGRDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLAQECjwORAwSUBZYFBpkHmwgJCgsMDA0OD6UQERITFBMVFhcVGBkangq1ChsLGxwcHQ0dHR4fICEGIiMSCbS3uLq8wCQUJSYGJygpKhQJKyvLLM4Nwi0uLwUwDQsxMtmeuQveHR8UMzQ1NgU3Dgo41jk6ns0cKOzgYaOHjx9AgjTAUUvIECLZNmxoUISHkSM9KiBJQkCJA4kKEoBQoWJJAiYtmjh5AmVCsCJRpHzckKCCySlUUvBYUqUHDysSPnxIEuXKA5pPRiRwxwFLFhRaIEDYUoEChCcDuECoOWKFuwW7nHkg4WELkw8/BHRRwESpt10dU8SSHevlRxIBX6C0WBE27q8GZMkKbTADjIAwYlb4GLMYShYoPTRo6FGiSJEKPyzMIFMmzJcvXbhwkSLFjJkbQW6cOHNGhAgEAdAsmk27tm0ABgIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mailreplyall22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBLyejPTixPz29PTu3Pzu5Pzy7Ozi1LyelPTavPz+/DwqLPz67PTetPz69ERCRLSWlPTmzPz6/OzexLyajPzqvDw+PDQ2NMyurDQiJPz23PTatJyenAQCBPTevPz25LSajOzq7HxiZPTexPz65JyanBQ6bKSmpBwuTOTi5OzaxBRCdHySvGRiZHx6fBQSFERGRNzq9IyOjHx+fGxqbPzu3BwaHFSq3Aw6XAxKfPzy3Gy63ByWzJzO7Mzi9OzavBRytAx6vCSazGRKTPzy1AQKHBRGdBRyrDy63ES+3Cym1CR6rBwWVAQSLAx+xCyCtBRmnPzuzAQWLAwePPzyzKSCbAQOJByGvOTWvPTmxBQODFQ6PPTWrPzqzOzatAwGBKyObLSWfPTivKyCZEQyNKyGZOzWrOzWtOTSrOTGpNS2lJx2XDQmJCweHCQaHCQWFBwSFBQKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpkzGjhAoYMGjZMpMghQgcNFjh4mODhA4gQGkSIHAmBwAgNJEpo8KDSxAkUGjhMSEGz5gUVIiKs2PmBRQudHiwQpUnAxYsXImB0aBqjBcuoU0fKmPGChgUNH2qIqGHjg9u3bicWIFs2rYgbNnDkyGFhb8cccQ3ouJqWQo0dPFr0WMy4h48LFj4gsKriB5AeNngEaSGks+chPnwQOXFAh4oXRYxk9nAEyY7XO2wksWHDx5ATCDIoUXEBsYclTJo4cWJhuIjhSXacSPBEiZLMQY4wgRKluvXqUpyIsDElAxUqVaxcwcGCPQuWLOixaNHCZAsXBU+oqKDSxQqULF6ifNmyn/8VMOtxwcAK36kQRhdJQIFFEmKM4eCDYGyhhYAEkqFEGSuYYcUZLaDxXRpqSNRCEu6twYaFZXTQhgRd2NCCG9918AYELTjoXgNuKAFHB2RQEUYHVbQQRwlUpPHGGFwkyQUEDsgxx4lh9BhCBy2U8UQJcrSg5JIQ0FEHG3bc0QGYK+CRhx57PEGlkhM9sAEffKTQhx9+/AEIIIGoEUgLLRRFR0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mailreply22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBMSihPTixPz69PTq5Pzy1Pzu5PTq1Pzy7Pzu7Ozi1LyelPTavPz+/DwqLLSajPTetPz27LSWlPzmzPz6/PTexPz67Pz29OTSzMyurPz25LyajBRCdPzuvDQmJOzexPTevOzq5BQ6bBwuTDQiJHxiZPz23Pz65LyinPzmvBxCbHySvAQCBOTi3OTq9CweHOzaxFSq3Aw6XGy63ByWzJzO7Mzi9OzavNzq9BRytAx6vBR6tPzy3AwOHDy63Ax+xCSazCym1CR6rBwWVOzizAQSLES+3CyCtBRyrBRmnGRKTPzu1MzGtAxKfAQWLAwePPTizMy6nByGvNzWxOzWrNzOtBQKDJR2ZNS2lPTmvBQODPTatKSCbOTaxLyqlAQKHFQ6PPzyzPzqzPTu1PTivOzWtKyObPzuzOTOtLSWfPzqvAwGBKyCZPTWrPTmxNzKrEQyNOzatOTGpJx2XCQaHCQWFBwSFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYuIDBQgYNGzh08DCR4oQPIDqEmDBhJQYRIzqQIFkSAoESJCKkDGFiwgkUKTpMwECz5IASKjqsSMlSA4sWQjG4qGnzhYoQSmF0iCFjBgmWGWhQrVHCxg2sOHLo2MGjB0sLYmsWQHq1p4wdPtqemGDhB1UDQFSouKHi7oQgQmSwUMyYxcQDZQWz2EFiCJEiRoyQyLzZyGIIB47YKLwDSRAiSZSoXq1kCRHNLBK8YGKjCYskTp4ogeKkt+8oUaBImZKAAxMmVKrctqL7ihTnz7FkAT5FC4cKFbZwadIFdxcvX8KLss8iJcoUBUcq2KgAJoxyMTy4jCFTxoxEHl2GLyCDncmWM2hUIQMPY2CXhhoTfTEcA2tgVwEba7Thxhs88FdBD/ZB8MUUHMJBRhw2sAGCHBKU4UaFc1RAhxnhcdhhHUzYAUIcFdxRAh4R5KGHinu4OIVEDqTBRx81xhGHHzD8wQYQetDRI4cTAcIHGWT0EQgZa1ApCBqDcBAID1Q94IEHLtBAAyGEFGKIIWqYYQYPYNZkQEAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mailsend22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAIR6fIRydHxubHRqbHRmZGxeXGxaXGRWVFxSVFxOTFRGRExCREw+PEQ6PDw2NDwuLPwCBLSijOzixPz69PTq3PTu5PTu3PTu7OTi1KyelOzavPz+/DQqLPz67LSafOzetPz27Pz29KyajPTmzPz6/NzSzLyurCwiJPz25Ozi3JyOjPzuxBRGbAwSHOzexPz23KSSlPzqvBROdISavBxSdAwaLHRiZLSinNTGxMy+vBxGZNzu9BSGrAwWJMSyrKSSjFy61ETO3BRWfPz65PTqzHTK3ByqzBSWxEzW5AQWJOTWxBRCXOTu9BSOvDzO3ByavBRKbOzaxOzizKSWlCQ2TAQCBJza7BRWdNzSxJSCbMzq9BSOtCSKrAwiPOTavPzy3LymlCySrAwmPFRKTPzy1NTGrPzu1JR+bOzatPzyzCy61ByGpOzWtJyCbPTmvPzuzIS+3FymxCSuzBR6nJyCZOTWvKSObMSujOzivAwKDOTSrNzKrJyGbDwyNOzWrMy2lIx2XBwWFBQSFBQODAwGBAQGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYqMDxAoYMGjZwmEixg4cPGzqA6BBiAggRIzaQGEkSwgAMJCKgnNBhQogSJlKGOFHTpgYUG0TsnJBCxQoSE1i0KErAxYsOJJRuuAAjhkwZM2jUqGnDBQoUHTbciIEjx4YNOmbs4CGjB8kCZlGAALHBx4+YcTcACcJDyFSJBo6iGNIhhQkiG8BOKGLkCBK6SSQisHoWhZIbG5bMYALECI8mTZw8gTL1QJQXZ6VMiUylSpUlVpoYaXLFtm0EGmCjwJLlA2O9MrRsccKlC8kEXr7AdgEmwtkhX2SQ2BIkjBiSYzSQr/nyhUKZLIrJJOcexvlEBV7IvCBjRkmAMzHOaufhxDvJBWiQISAFxUUQQRovJNeEGmu4JxEDbKQhXxsfuFDGGW68IQMcccgxRxUkNRDhC3R8QMQIdZwXQ11JJGFbiB+QYccHaaTxhgt13OFBDGTgkUdRDrhAhx5k2JjGCB/swYcXMXwAYk190OGHHx/4wUaVepTxByAaoPEkSQ5wwMEJZAZipiCDDJIHIYV8OZEdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== nav1downarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBBQSFAQGBDQyNExKTHx6fGxqbFxeXGRiZFRWVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFxaXDw6PPz+/MTCxLS2tIyKjKSmpKSipJyanAwODDQ2NHRydERCRFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZzQIBwSCwaj8ikcslsOp/OgHRKlQoCgymRUDAcEIkwYgxWFBYERpHQcDwgEclEQmk8DhWL2kiIXDBwExMNGRoJaUkEEH8bEQ0cGgcWAksEHX8QHBKSHk1sfxMHH5ROBBsOICGkT2wiq1CIULKztLW2t0h2QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nav1leftarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ5QIBwSCwaj8ikchgQLJGBgfNZDBAKBirRekBMtYGEYsHIgsWNhOO7tCrShDU18Hg/CJAIG0o4wCUQcksTFBUSCRYSEnpUFxgIGQkJGYyNGggbHBaVjR2QCxEeWkITHQ4IH3tPFwEMA2ajAKUgqlQTTbFEE7W5vUgGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nav1rightarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNGReZAQCBMTCxGRiZMzGzOTm5LSytPTy9Pz+/CwqLOTi5Ly6vCwmLMzKzJyanJSSlBQWFKymrIyGjCQeJJyWnISChISGhHx2fKyurDw6PAwODHx6fHRydDw2PERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ2QIBwSCwaj8hkMRBQKgOCgRMZIBSk06XhEM0SA4iE4uoVLhCMhqLrdSAekMgYO5VM4BQ521mxIC4UFxBWdEkSERYYFxETGQGFSBKCGBEaGRuQSBwdeZaPXpsQCB6YZQMdEI6ZSgMepKusHh+wrCC0rLdlursGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nav1uparrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBFxeXDw+PMTGxHRudPz+/JSSlLSytIyKjHR2dISChIyGjIyOjLSutLy6vKSepJyanISGhJSOlOzm7Ozu7MzGzKyurJyenDQyNGReZKSmpIR+hCwuLCQiJBwaHBQSFAwKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZtQIBwSCwaj8ikcslsOp9QYyAQFQYEAyr0Sihkn1fDAeHVLsOJNELxVaITC0bDUU6GH5AIQ8KYrNtFVxQVFBYWFxgRCREYdUQZGhYEDwgIGxAHCQocCgWOQhmhGR0epR8gqCFTq1Wtrq+wsUt0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nav2downarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAQGBBwaHDQyNExKTHx6fGxqbFxeXGRiZFRSVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFRWVDw6PPz+/MTCxLS2tGRmZDQ2NAwODJyanKSmpKSipIyKjHRydBQSFERCRExOTFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAasQIBwSCwah4FkQKBsDpoBIqFgOCASCYRWm1AUFgRGkdBwPCARiWRCaTwOFYvYSIhcMOiJpJGZaDYcR0IEHXceEQ0fICEWIoJDhHcQHxIHgI9SEHeVG46YUh8OISOen1INCqWmUnOYTUxQAU9NUlRWWFtbCiRgrYNlZ2lriG8lYUd1khETE24gCZeCkRgeFBAQIAeNn9OTlXKrBJoYnKrcoaPmpmSpq3S+7u50QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nav2leftarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAavQIBwSCwaj8gkMiBYNpeDZzEQXRIKBmPgmtUSDgipcAsWjxOKBaN7Tq+n6EbCIQ3E5+KtQk6gjwl7CX11D3sPBBARTQGFDYeJT2R8EhB0koKUfgATFBUSCRYSEoqcnqCiikMXGAgZCQkZqautr7FiFxoIGxwWqQC4ury+qh2tCxEexMbIRhMdDggfYs7Q0kcXAQwDbELY2txEziBmmx3jSRNMR+nk4e2b70ry80QGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nav2rightarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTGxOzm7CwqLLy2vPTy9Pz+/Ly6vCQiJLSytLS2tLSutOTi5MzGzKSepIyKjJSOlKSmpMzKzJyanIyOjBwaHIyGjISGhJSSlISChBQSFJyenIR+hGxubDw+PHRydHR2dEQ+RHx6fERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8hkIIBcJgEBweAYnTYJUmMAa9USClniFtwlGg6IRFhoUKTXwwWj0FB3F46Hwl6UQyISfAB+EROCQgsUFRYSF3yJEIyBaxgWDBkaGRtclQwSHBIbEGEdGx4fGhcOICEDGBsWHBmqIq1CHRIWGRMMIyRTHRy6Er22tyONq8YdJRe0xkIDwr2/QwMfliMmZQADIxasZd4e4UYDIr7c59rc0eVFA+/m0EQD9PDt0flP/P3+BkEAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= nav2uparrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBGReZDQyNMTCxHx6fPz+/JyWnKyurHx2fDw6PJSSlISGhIyKjIyGjISChLy6vJyanOTm5PTy9OTi5MzKzLSytKSepMTGxMzGzLS2tLSutKymrHRydCQiJCwmLBwWHAwODLy2vHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAajQIBwSCwaj8RAAMkUBgSDZdP4JBSi06TAcEAkFNLp07BgLLzY5njRcDzO3zB1C4lEGI83Wj58SiYUFRUWdg0XEXFFAwIYGRoWGxwRZQUFHZdgRAObmx4fHiChISFKpVlKWUdPaalOAlasp1sHG4myZGZ7Yltsbgu1mUhjdRF5egmxfQJ/gYOFdrZDi40iFgiSCw8jBQmYcpydn6Ego6WorUwGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 navback22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRGZAxCZGyavExmjHyatOTy9CxihISevPz+/KzO3BRylAw+XAQCBDRWbPz6/FzC3CSuzDyexJzO5Mzq9CxSdAQOFISmxNzu9HTS5BSmxAyexDSuzJTa7Mzu9Kzi7GS21CRmjAQOHHSWtLze7AyWvHzG3BRihAQKFCTO3BS+1AyixBSWvBSOtBSStAQWJBSixDzW5BTC3BSqzBS21CTC1ETW3AQSHEze7BRqlBRmjAQCDBR+pBRefBRSdCH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMqBcMpvHgGAANQYIhWdVGDAcENQtIJBQLBgNx0MQaDuQXcghIplQDhBIxXKJYiAZGhscHR4VHyAhIiNWJBklGhIbJoQnFCcTKIxFKSgbKissJi0mJi4vLiYoMEcXKDEyMzQ1Nje2NisoOEg4KDU5K6g6OwwoKAN9SCOeMmgwz884PEq9PT4NYkPLP9jZQikN3d4AKVrjKePp3gZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= navdown22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRKZDRSbBxCXJTC1Mzi7Nzq9NTm9Bx2nAQCBNzu9JzG3Hy+1HzG3IzO5BRmjPz6/LTe7Dy61AyStCTC1FzC1AyGrETS3ETC1ETa5BRulAyuzBRylAw+XMTe7Gy+3CSqzAyexBTC3DR+nIS21KTW5Nzu/KzO3FzC3Pz+/ByixEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaRQIBwSCwaj8ikcnkMBAQDgjPAFAYKhsMBkVBUAYEFo+F4QLzVQEQyoVTOX/XBcsHA0+vMRbNBMwkRDhxuHX5GTlIeHh8gISIjFAEeiVRECiQlDAUmgxQjIhwiJHdFlycoKSIUFCEjGiGkRpcqCxYijxorsUezcxYsuoZJsxLAu0qXB7DCTJfHVQrMX9PU1Uh0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 navforward22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBBxCXDR+nIS21Aw+XJTC1Nzu/KzO3Pz+/Nzq9Pz6/MTe7KTW5FzC1Nzu9CRKZMzi7IzK3Lzi7LTe7HzG3Gy+3AyuzAyexFzC3DRSbHy+1Dy61CSqzAySvAyStLze7IzO5AyGrETa5ByixBRmjCTC1ETS3BTC3Bx2nAyWvEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaYQIBwSCwaj8hkMqBsBgTN5IAAjRoDBaq1aDggtMuAWDzoJhTgY+CwYLgZDccDwkgXI5IJZVGxXDAZGnR2QxsLHB0PHRgeHyAZDyFfVUQDCyIgIyCPIB+QJCUmlEMBEiInKCQnKSkeKSQeomoqJrUmKiArKSwZsmoCwMEBGCyxo1EGHr3HUQEEvltCBtDRAAbMW0zV29xDBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== navhome22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQiJNze3ERCROTi5MzGzLy6vDw6PKyqrKyurBQSFGRiZGxqbGRmZISChEQ+RExKTExOTHRydDQyNOTe5FROVLSurCwqLMTCxPT29Pz6/LSutFxeXLyytLSytPz+/JSWlKympPTq7KSipNzW3BwaHHx6fKx2VJRWNHQmBFweDOzq7Ly+vNTW1JxWNLSajPTe1Ny6pKxWJNTS1IyOjJRmbPTi3OzKrNSSXMSGVHQiBHx+fJSSlPzy9IxOVOzWxOSyjNSCPLxeDJyWnIRGTOTGtMxmDLRWBHwqBIxGTLRSDDQuNNSunKxKBGwyNMSafMxqHMReDKRGDPTu9LxuPLxaDJQ+DIR+hGQqNIQyBGQiBNTO1EQKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAYSIiYQCAwQCiokEhwACBQYHBAiQhAiHlQYJCgkEC5uCkp8MDQ4NDwylmwgQlgQRERIEBBOkmxQVBgQWFwUFFxEEDLyJGAUZtQoFGhsFHLYdyoOVHsEf0SAbIAUex8mwlAUhtSIFG+3uIyTWvAIGJMEkJe76GyXbEeWUBJg4USKaBhQpVKzYoIFFiwYUBBJa8MAFCw0vYMSQMWOhBhoTKCQSUKMEiw02buDIoWOHBg0GeIhEFKAHDR8afgAJImSIioYliMws1MPkhiJGchxBkmTDCBo1hg4KQMTiBiUyhBxZ8pNFiR5MEtU0WqSJVidJNDyNKraHC5xPNKBEkTLlJ5WvUgWNvfikyhArV34+7ZEXQAAsB2iUyHLlihYtW0pwOYAFgyJDmDNr7jIIWiAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== navup22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBHSWtBRmjAQOHISmxNzu9BSmxBRihHyatPz6/Lze7CTO3BSixHTS5BTC3DzW5ByyzPz+/OTy9AyexEze7ByixGyavKzO3FzC3AyWvBS+1BR+pAQKFCRGZExmjCxihBRylCSuzBSWvBS21BSOtBRSdAw+XAxCZDyexDSyzCTC1JzO5JTa7DSuzETW3BRqlAQWJDRWbOT2/Mzq9HzG3JzS5Kzi7BSStGS21CxSdCRmjAQOFAQSHAAAACH5BAEAAAAALAAAAAAWABYAAAaeQIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbUGFAtGw0GFfheHByQi4S6/E8pDUoFYLm5kAEPJaBAVGxIcER0JHlEfICEiIxUkGyUmIgknKIhXASkonCorgSwmKQGcKE9IAi0uLxUwMTJWMzQ1NiYwBLBQHws1N7avXgs4NjkcCblMATU6KhvGyG87PAnUKV1MAj0+2zIFp1bg4eJJdkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== playeject22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAwKDJSWlFRSVBQSFKymrOzq7HRydERCRPz+/MzGzISGhJyenKSmpGxqbJyWnJSOlKSepLy2vIyOjGRiZPTu9IyGjLSutFxaXExOTHx2fGReZAQCBAQGBBwaHCQiJLSytKyurJSSlFxeXNze3LS2tIyKjFxWXHRudAwGDBQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbVKFQsGItBdBhpgh4PxIJvRC8cA4oiMy8bvQhJhMAYTFBVOURAWEw0QFxcMERAYCBluVxobDxkVHJocmBwEGgmEQx0dHh0CpKmkH6odVlanBR8FtAIFtiCkSB0LISEiGCIGIxAPDySuRwIOBwrOzwoHJRHJRh0jJgMj2gMnERQUCNVFHQQoCBvo6CkICATjRB0qp7b1K6qv+foyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 playend22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTCxGReZBQSFOzm7AwKDKymrJSSlFRSVCwqLLy6vPTy9OTe5Ozq7CQiJLSytOTi5BwaHPz+/HRydMzKzKSepJSOlKSipJyanIyGjIyKjKyurISGhMzGzJyWnHR2dISChIyOjLSutDw+PERCRHx6fJSWlIR+hJyenGRmZHx2fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8ikMBBQKgOCgRMZIBSkxYHWoDVWD9EigpBQLLBERsPxCA8NDUhjgTBGJJNGG02RVBQWdUV3FxgZe0IGfoAGdhoXGxwdiAYef4FGFBoeHB8dGSBRihUhIo1FBhkbIyMkJRYmAwYal4JEBh2RChIWJ1IIGxUZFqdECCgkHR6wWAYpFR2YWSobvL5vFgfDaEMDIivMRBEsD9HcQgMWvecDLB0tZ0btsfJa9vLXU/X6/P3+b0EAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= playpause22:play play22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBAwODMTCxKSmpJSWlFRSVAQGBBwaHLSutOzq7Ly6vCQeJPz+/Hx2fBQWFGxubLSytJSOlBQOFAwKDJSSlJyWnIyOjHRydNze3GRiZAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWBICCOZGmeaKqubOumQSDEgRjPMSoMRGEcol3vh0IkFAtDDWBEKlGMRKPgEIii0yrqIS1ArADu9KuLNCSOSdCMVp8ohEZFC4DL6SaBpXGh6/l4JX8XZACDhXkYCn1LAoqMUBAZEhBLDJKUSyYBGmhPAJyemiU0NDaloy+qq6ytI8whACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= playstart22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExOTAwKDAQGBJSSlHx+fBQSFMTCxKymrFRSVOzu7GxqbLSytLy6vJyanPz+/GReZBwaHHRydKSepKSipGRiZJyWnAwODLSutKSmpISChPTu9ISGhFxaXJSWlIyGjJSOlERCRIyKjDw2PIyOjLy2vOzm7Dw6PLS2tCQmJOTe5GxmbDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa7QIBwSCwaj8ik0hgQLJGBgbMoqBIKU2LAcMgOEQmFYeEFbBmNMgDhYDwWBC0k4pCoJ46IgRIXBioRCRYXamwRGBQIfgaBFhiERhkaenxmCoEbBhyQRYaIGVsdghgem4UWegcEBB8UHhsgIaZGBBgRIpUIIxQhChginEQIIBEklWslFyYnBsFfFCi4WQgpFBwqFxNGKxcsxl4IAS0NZEYCF3vlwgEfUuZV8JEuI2pPAARN9kcE9fr+SwaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 playstop22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAwKDBQSFBwaHCQmJJSSlISChJSOlJSWlGxqbGRiZNTS1PTy9Pz+/Ozm7OTi5FRSVIyKjOTe5MTCxIR+hExOTHR2dLy6vLSytLy2vHRydFxWXIyGjIyOjPz2/FRWVHx6fExKTMzOzJyanKSmpKyqrKSipAQGBLSutHx2fDw6PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcslsAgKCAWEQjQ4KgSwyYDAcugZEQqFYYJECA6PhaLcfEEUkgJZAGJB8fkKpWOhHAxcOGBQZGBoaGQgbHIBGAhUOGR0SBxISBh4Xf0iCHxQSlRIIXhsgj0UCIaCXmJgHGyKpRJ+hmB5dHQqOaCENIx0epBIkBhdzngoPGCQlJifQJBvJRygRKRcKGxcXGypys1srEREc5SLnICLiR1koLFVUWfRO9vf4+UwyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 textblock22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUWzvNzo33GfFl5jVlonlTrr1DbvFi9vjeeNUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textbold22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIxhI+py+0Powm0VnknjVkH2AEhE45LZ55Wqn6e65TsMc5eYosbksswubJIhsSiccgvAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 textcenter22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUbz3Sh7yIWfFHKjVl4nmFrr1Lpr7LwkjeeIUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textitalic22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py+0P4wqUSlQvttrkDnyaOHIdeaGRupplAIauVM3xjeeOUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textleft22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+pyw0Bo5zB2UXz3Sp7yG2fFJajVjonmIor2TJvfL0wjecIXQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textright22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUfz3SZ7yIXdF4kWqZkbCqoMO7kXLC+wVOe6YRQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== text22:text text22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBBwaHAwKDBQSFLy+vLS2tJSWlBQWFKyqrFRSVCwqLDQyNNTS1GxqbFxaXJyanIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAVcICCOZGmKQSoMaZsShBsQBdAapHvgaIDUqUPJlRjSbAoT0fRDKgODRbF0PLUYjZO2F2Bst9evNix+dsvDlGKK5jraudQb7qbX6a2HEJ+ycyF+LRE8ZTI+fX5oGCEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== textunder22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIvhI+py+0PowmUnhpeVVnb1DkbCI1I2JhX+Z0sOr2cTHpwK7a4rUr+hAnufsTirwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewchoose22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz69PTq5Pz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq70466Cl+AMxBVwnFIVRAmQHCIeBrC1L3tQgJ/SaEbeeC1PLBHE2ybFI9A1HzstHEIK6YCmhDTmBybQaHYJn7QC5zKeytIQe1+pKNE6P2yMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewdetailed22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAQ+EMhJq7046817+MLQUQFRGMc4lQaSAkcMx3QltMmrDrSu/sCgEPgJhIiFk89DaL1qPRnlhsgBebWhdstVESIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewicon22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz69PTq5AQCBPz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARWEMhJq7046z2DF0PlBeAVEERhiKhqHgWyUgEsX0KczFOO7JeBYciTCImc5ITIXDKHyqhU9AnRqq9UEVDTvmLbGhin2/qAliOUot5OLc81IO5+2+8WewQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewmag-22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbKQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/avno2BBf/MCClSob4iBIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 viewmag22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbIQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/cunr9S8gAIRFhTCLAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewmag+22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbQQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/4zT766vRI+fvHD4CPgwcJ9qg0UB85JA0dDjEQBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 viewmulticolumn22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq7046813+MJQfUF4BURhHGO6noSBsEcNoDJtS4KcsJQe4ncZ1HYT47HDbDqfUAnJRJmKLIGCCjjJbmE5wBI3EyOFxKCPS1EiJW52dE6vZyIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewtext22:view view22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIkhI+py+0Po2ShBlOxzbP7n2yaJoLm+ZTcxqHuC6hXzML2HVEFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= viewtree22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz+/Pz69Pzu5PTq5OzaxBQOFOzKpFRWVFxWXOzexPTexCH5BAEAAAAALAAAAAAWABYAAARPEMhJq704g6A779kHCORAgNskFMYhakE8FkjyBcoWv+JwJItXaELYCTFHlCSpZKKcoB5jYHpOGgUadLKbIRw3jhEzQDyCSuI4zW673yhDBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 ferret-0.6.orig/widgets/icons/tkIcons-sample.slick0000644000175000017500000160231707741225420020741 0ustar fikefike1downarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBDSaRBR6JCSGNDyGRDySRDSORAxuJARmFARaFFy2ZLzixEyuXEyqXGzGfPT69HTKfHzShEymVCRyLIzelPz+/JTmnJzupKTypFyiZAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU3ICCOZGmeaKquLBkIwkAUxiAcSFIqC6P8jcBAZ3I8IBGIQjJJUSoWSoSwukALLUymxe16vyx/CAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 1leftarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBDSaRFSyZBR2JHTKfLzexCSCNIzelOz67FSuXKTyrPz+/HTOhDySRJzqnFy6bFSeXJzqpHTKhDSSREyWVEyqXDSCRAxuHARWDAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU7ICCOZGmeqBmkpTCwI1EYMHAgCc0qCyM0u4WD8ACmIJGDRDCBUYgVHctSCUhZF8OlJsJsuQAMeIzyhwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== 1rightarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBDySRBR6JFy2ZLzixHTKfCyKPEyqXPT69IzelDyGRPz+/JzypHzShJTmnJzupDSORFyiZCSGNESmVGS+bEyWVDyaRAxuJCRyLARqFARaFAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU7ICCOZGmeKBCkpjCwpEAUsGgcSFIrQ7EwsMCg4Vg8WJBewhFhSSaUQgUmsEwUtYsEUwNkNF0AOEyu+UMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== 1uparrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBJzupEyWVPz+/JTmnITejGzKfDSCPOz67HTKfFy6bESmVBxuLFSyZLzevEyqXFy2ZFSeXDSaRByGNARWDAxuHBx6LCyGPDSORARmFAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU3ICCOZGmeaKqubBoIbTAQsFrMhXGkBmIkCcWCcWo4Hg1IIyKZUEqSiuWCqU4slcyzxe16vyZ/CAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 2downarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCSiNAx2HBSKJCSSNCyWNARmFAReDARKDETCVDy2TEzGXGzadFzOZGzafHTihGzefDS2TBRqHIzulJTunJz2pCSCNKz6tMT+zJzypDyeRAxyFCSWNFTGZFTKZAxqFIzunJz2rIzqlLz+xKT2rESmVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZcQIBwSCwaj8hkMSAQDAgFwkBgOCCKiYAisUgoAoOrkdFwPCCNiCQ5oVQoDIsScMFkNMjAxskhSKlWWAERCR1eYGJFDB4MD2QRH0kgEyEicXMXIyR4c3QlnaChfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== 2leftarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCSiNETCVAxyFGzadBR+JAx2HJTunFTKZDS2TBSKJIzunDy2TKz6tIzqlCSSNGzafEzCXMT+xKT2rHTehJz2pHzihEzGXCyaPDyeRJz2rJzypHTefESeTFzObCSCNBRqHARmFARKDAReDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZgQIBwSCwahQFi8ggQDIZOJiFQEE4NxwMioQAsEIxuseEgCB6NBSTyGEsmFMRDUrFcMMWMpnzeqM9GGRxbCh0QHmFHHwkBWIuNTCAKIUKSlEwiI0OZTEIiRJ+doqOkTH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= 2rightarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCSiNAx6HETCVAxuFFTKZGTadGzafBSKJDy2TGTSdIzunJzypCSSNJTypKT6tCSWNGzehIzqlLT+vDSeREzGXITmjJz2pMz+1FzObHTehKz6tMz+zBySLIzypGzefESiVDy6TES6XHTihCSCLARmFAReDARKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZnQIBwSCwOA0SkcSgYDAmFpVAQMEwDBykioVgAtgXGsjE4OB6QQUQyMVIqlgsGktFsOG1ip3LwMDoDHxIPIEUIIQoHIAgiBSMURlQJJACSlEYlCARCmZtLJidDoFIAoUOmpKmqq6t+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 2uparrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKz6tEyqVMT+zJzypDyeRIzunJTunJz2pGzafCSCLGzadFzOZHTehDS2TBRqHETCVCSiNDy2TEzGXBSKJARKDAx2HCSSNCyaPARiDAReDLz+xKT2rIzqlJz2rFTKZFTGZAxyFCSWNBR+JARmFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZbQIBwSCwaj8hhQJAkBgaEQhNgOCAOCUVywVg0EgzH4wiJSCZoR4RSKUYsFsoFc6FYMpr2MbDhSJsGHR4dC1pICx9eCyBiZGYQIBBqbG4hcRcidSMkeVOen6B+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 about_kde-16:actions actions16 16:photo:16 16:R0lGODlhFAAQAIYAAPwCBOTi5GSmZMzKzNTS1Nza3JTClKTG1KzK1Ex2jPz+/KTGzFyGlJzKnGSGnDxifDRabBw6TLy2vJTOlLTqtJy6xGSKnIzKjMzuzOT25ISirDRedHR2dKSepMS+xLSutIzGjLzqvCRCVBwaHCwmLERCRHRydIyOlESCRGSuZGy+bGy2bDxiPHyOlBxKZEx6jBwmNBQSFBweHGRmZDxqPFSaVFSiVDxePCQiJBQuRAQCBAwKDDRaNJy2xExqfCwqLBxKXDw+PDRONKSipLS6vHx6fExKTFxWXFxeZJSSlISChKyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAUABAAAAe9gACCg4SFhoeDAQGIAogDBAWIBo2CBwgJAAMKCwwFnoQNCpQHDg+VEBGeEoQTFKIAFRYQAAuoCgMDhRcYGaIaDhsHthwdHh+EICEYGKIWDA4iCiMkJSYnHoMoKSorLC0MLi4ILzAxMTIlM4M0NTY3OL8uOS4LCTA6OzGENCg8Ojo9wAGYt8AHjhE7CPHwp+NHDwcuAJTIAQRIkBJBCAn5J2gIkRMAihg5gmSGOkSFkigpghLRkg5KWso0ZCAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= airbrush-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAR6BMz+zATWDAR2BAS+BASWDGRiZARGBPz+/EQ+RGxmbMzKzKSipDw+PGRmZIyKjKymrHx6fFxaXOTe5ARCBNze3KyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVvICCO5BgIQ6kCBFqsZDsUhnjcpUwjwJH8ipHOwAMsEoxGkOUijnxJB3PmHD2QEMWwSFpEJJMml3SgHBSNXcLALh0eFMiZXUFUaraE5XKQ2kd4PhQXEFIlBhU2e1kqiCIGA4RLJFUAAwYOk5SJIn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= apply-16:actions actions16 16:photo:16 16:R0lGODlhEAARAIYAAPwCBPz+9PTynPz6dPz2XPz+5Pz+nPz+vPz+rPz+pPz65Pz+7Pz+/Pz63PzmVPzyjPz6fPz+1Pz27Pz61PTuhPz6pPzWPPzqrPz2jOzaNPz6nPzifPy2FPz2ZOzaZOy+DPzylPzaVPSeBPzOVPz2lPzqfOzOLOSiDPy6DOR+BPzilPzaXPzqhNSSBPS2DNySBOyGDOy2RPzWVPzeRPTGFOSuBLxyBPz23Nzi3OTGhPzSHLRuFLyKXPTi3Pz6/HRydLSytIyGjGRiZGxubMTGxISChFRSVMzGzFxeXFxaXJyenLy2vERGRHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABEAAAeZgACCg4SFhoeIAQIDBAMCAYgFBAYHBwgJBAqGCwQHDA0MBwkJDguFDxAREgwTFBUUFheFBBgRDAsMGRobHBuFHQ+jHgkfICEiI4UkJaMmCScOKCkqhQorLBofFS0uLzAShg0xMjM0NTYwN4g4OTo1Ozw9iAA+P0BAQUI+8wBDRAxFjPDrd4RBECQDkyhZUoTJQABGmjg0ZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= attach-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBKSipLS2tNTS1KyurIyKjISChHRydGRiZGxqbFRSVLSytNza3Ozm7MTCxKyqrJSSlJyanERCRMS+xHx6fJym3Jyi5JSe5ISW5ISO5GyC3Gx63FRi1FxmvOTi5Mza/MTO9LzG9Ky67Jyu5Iyi3HyS5HSC3Pz+/Ly+5JSu9HSS9Fx+/Dxm9DRa9CRK5Dxa3KymrHR6rFRq1ERWzDRKxCxCxBQuvBw2xBwytIyGjPz6/PTy9Ozq7Nze7Pz2/PTu9NzW3NTO1Ly6vFxWXOTm5ExKTMzKzKSepIR+hGxubFxaXFROVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCg4SFggECAwQBBQYHBwgJCoQLDA0MAw4PARAREBKEDwsTmxCNFI+ggwEBCxUWFxgZGhscHB0JghEeDh4fICEiIyQlGiYIghAnCygpKSorLC0uLi/IAMowMTIcMzQ1Njc2OJMAOScRJ+onOuw7PD3lBSfK6yc+PzxAA6oGDPPqdPjg0aBHECHlhkg4d8+HBw+YhCxQJcjAvR9EPAzIJCRCEUI53nnoMcCIgwVHPhEygCQJAiUKiiwpQrOcoZuC/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= back-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy2jIS2hPz+/IS6jJzGnOTy5Nzy3Oz27OTy3ISyhNzu3MzmzLzatKTWlGSSZJTOhHSidNTm3KzSnJTOjFSKXIzGfDxmVFSiZJTKhITCfFSCVHS6bJTKlHy+fGyuZGSmZERyTFSSXHzChDRiRDxiRDxiTEyCXDxqXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZlQIBwSCwahYHjMSBQFgODpBM5iDIJgIJ0CDUcDIiEAjAYcweIxYLRcDwAkAhXkmZPKJAKwPIeXjAZgRkWGhsAHHpEfx0eHB8gIQAikUV/I5MkJQAkJEcmGCdTipSiQiilqKkAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== backimage-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGyK5GSG5GyO7Nzi/Mza9MzS/FR65Nzi9NTa/MTS9JSm7Exy5ERq3EzOTDRi3CxW1CRSxBw2hMzW9Ky67KS29Iym7Iyi7HSS5HSS7FyC5AwiXPz+/Nze/NTe9LzK9LTG9ISe7MTS/MTO/IT+hFTOVDSGNPTy/MTO9Dz+RMz+zMT2xLz2vKTmpAROBPz6/IT6hDz6RCTuLBzeHBzWJBzKJAy+FPT2/ARSBASiBASmBASaBASWBASSBASGBLTC9Ky69KS67Ky+9KS27HSO5Cxa1CROvCRKtCRGpBw+lBQubBQudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhAECiIaFAwQEBQYHi4IBCAkKmAsMDQ4PEBESlBMUFQsLFhcODhgZGhuUHB0eBh8gDhwOFiGusJYiI7ckJaoOJSYAAyceCijBKSoqKywtLgABLwkiDiowMTIyMzQ1NtUBN7QgODk2Ojs7PD0+5ScoP0BALj46Lvz9AAIJPgQRMmRIPhdENBR5BUBDiIcDAjBgwK9IESMMGRSJcARJEglKlLhYEpLhpJMoCfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 blank-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBJyenJyanKSepHRudPT29PTy9Ly6vLS2tGxubPz+/Pz6/Ly2vPz2/LSytFxaXOTi5IyKjPTu9Ozm7NTW1OTm5MTCxOTe5Nze3NzW3NTS1MzGzMzOzKymrMS+xKyqrCH5BAEAAAAALAAAAAAQABAAAAWDIAAEwiCQJiGuolAY73sgCdsWypIrDF+zgoZOpzgoFI4HEDdUCAgJgnIVXFh1DQgjMr0Jr5IJ5dAFVBeNRiFcsZRd17WkcnED0wtJYTLBYMhLaQ0SEhcXGQxvaoOFFxQaSUsLBnOHGRuRVAWMhxQcGx1vfZ8bHg4OHx9lUg+trq8ifiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== blend-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRGTBRGRAwODAw6PBRCRBRKTBRydAySlBSytBTOzBTexAzilBTmPBTeFBTOFAyyDBSiFAyWDBQSFAxWVBRqbAzKxAzihAzaHAy2DBSWnBTGxBTGFAy6DBS6vBTarBTiTBQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZyQIBwSCwaj8SAQMlcOpkDQsFwQCQUC0bD8YBEJJMCgVKxWhaXBgbjlUQLZDNa/ch8J1KyZnNOYzgdX29xCX1qbHd5ZYVzf4FueVUehhhdiXCLCgp+gIKRCJMffhiPgxUaoRcgjhBgIQOwsbKzSLW2RX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= bookmark_add-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExGTCwqLERCRLy6vJyanPT29PTu9ExKTLSytKyurDw6PFRWVPz+/ExOTKymrKSipMzGzAQCBJyWnISGhKSepHRydHx6fJSOlMS+xIyGjHRudGxmbIyKjHx2fJSSlIR+hGxqbHR2dNzi5GRiZNTW1CQiJNzW3OTe5FROVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAadQIBwSAwIiEjigHBEFp7QAIGZLBgOV0RCkVgwAoOAsHBoNByJByRBiCgkw4k5oIAQIJAHBT6sHBAKBRYWFxgWEk1jCBAFCRkJGhsSAwtKjBscFh2SFh4OQ4sfCgQJICESIg0jnwABEBggJCGmEhYYByUDQyYkhBckqA1XJSclQwIkvxLJBygnpB9DC8iIC2EpER9iSIlDH6dJ4Uh+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 bookmark_folder-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExGTCwqLLy2vLy+vKSmpDw6PFRWVLSytMzGzKyurAQCBKSepISChJy2xKS2xISexJSOlHx6fJyWnPT29LTGzHSWtCRylAQ2ZGxubDxyhCxSZITC3Lza9KTO/GSq7ARChISivISyzJTK3Mzi7PT2/Pz+/LTS7GSu7GRiZHyivLzS5Ozy9Pz6/Gyy7Hx2fLzi7Nzu9LTS9Fyu5ISmxEye5DSGpDSCtDyKrESOtAxatDRutARGjAQ+rAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQIBwSAwIiMji4JhEBgYEZlP4LAwMh4A2GUAUCohBQrHgKqyMb6PsVDAcD0hEwi4WJg5KxXLpXzBDAXcZFhobFxwdHh8gVAURYSEiIyQlJicojYIRDSkZKiskLC0tHS6NAAIpLxISEDAxFBQtMjOoqSkSKTSVsrQ1t7gLKjY3ODg5NzrBqQA7INA80CA9U9Z+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 bookmark-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExGTCwqLERGRLy6vJyanPTy9LSytKyqrDw6PFRWVKSipPz+/FROVKymrMzGzKyurAQCBExKTISChKSepHRydHRudHx2fJSSlHR2dKSmpJyWnMS+xLS2tIyKjGxubGxmbIyGjGRmZGRiZGxqbIR+hJSOlFxaXCQiJHx6fIyOjNTO1LSutAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQIBwSAwIiEjigHBEFp7QAIGZLBiuhsABcUgoAoOAcGFgMBoHx+JAeEAiQytDglgQFgvHBD6kGCQQFBUWFxgZEU1CBQEaGwccHR4WEQMJSgsFHyAWIYcZGQ1DAQsYCAQHEyIRGR4FCkKjGBMjJCUkERcmpydDKCMZKSmqGSoEKwe8QwIjF6oiGRQsdclCCcuICRInCifbSYlJ4eJDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== bookmark_toolbar-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExGTCwqLLy6vLSytKymrDw6PFRSVKSipMTCxAQCBKyurKSepISChHR2dGxmbIR+hJSOlHx2fJSSlJyanHRudHRydHx+fHx6fPz+/NTO1MzOzKSmpFROVMzGzMS+xIyKjLSutLy2vLS2tISGhJSWlExKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaUQIBwSAwIiMji4JhEBgbLZpFQIBgOgWwyQEAgCIkEQbFdMBJeRIPsXCAcD0hEwi4iJuBBw1EfBhAUFQ8VDRZ9QgEOe3sXGI0Yig4Afw0ZGggZG5gaHJkdQgISGgQTCQMTHgMUHwkBQw0bAyBipSEgHwsHQ6IiECNqAwwkVK5CsAMVDCAQdxYlEbpCDh0mWNYB1wB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 bottom-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy2jIy2hGSSZER2TDRiRNzu1JTOhHS6bPz+9ITGfPz+/JTSjFSeXESCXERuTDxiVNTuzLzirKzapJzOlHzChFSiZIS6jKzarKTSpHS2dMTixKTKpFSCXEx6VJzGnGy2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZQQIBwSCwaj0hAQDAgFJLCgOGAeEIDiYPCmgwstNxiYOxlHBqOB8TojUgmlIplfbwsIpiMJsxebDgdUEJ2HoJDAYZKHwQPfEYfXyCOiZRFfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== browse2-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSitIyivHyezPz6/PT6/MTm9Mzm9Lze7PT2/Pz+/Nzy/KzS5GyqxFyavARGtAQ2nAQqdJSivOz6/Kzi9Hy21DSm/Cya/ISevKzu/GSy1EySvDR+pBSK/IyixPT+/Jzq/CyCrCRunHyixNTq/HzS7ESaxBR2pBRehBRynAR+/AQqbNTy/OT+/Mz2/ITa7FSuzDSavAxmnARWhARe7Gye1HzC3HS+3BxCXAROzGyi3ESixDSSvAxmlAQ2TFxaXFSa1CxqjBRWfARCbERCRKyurAQ6tEye5IzC9HS69GSy9DSKtER6lFRyhGReZCRenBQ6hHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAexgACCg4SFgwECAwOGhQIEBAUGBwgGjAEECQUKCgsMDQ4PDxARghIEE5ubFBUODhYXpAAYqKkKGRobHA4dsR4GtR8gGiEiHLyCIySamxMlJicoKSoryJQsLS4vMDEyMyI0sTUMNjfl2yczOCk5sToKGjsmJjwnPT4/FuyCQAUkISlBhAzxQaTIDyPUABxBkkTJEiZNmDgg4sRgrCdQImjcqJHID4OMDHkEGZKQxygA/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= browse-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBIyitIyixJSitPz+/PTy/ESCxPz6/KzO7DR+3CxyzCRqxAxKrOzy9OTq7Ozu9NTi7Mze7Fy2/AQ6pNzq/MTe/LTW/HTC/ISizPT2/Mzi/KzW/KzS/Gyi1OTy/NTq/JTO/JTK/DSW9EyW3JTG9Bx69Axe5AQCdAQClAQCjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZWQIBwSCwaj0hAQJAkDggFQ1MJPSASigXjGGgUHA9IRDLhFh4FSsVyKRsxmbNmwyEfOwXPxwIKidxFIxUkEiIlJhOARAmJjY1TkEInKCmUkZeTKZdNfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== cdimage-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNTO1Ozq7MTGvOTi5KyurHRybJSWhNTavMzOtNzizPz6/LSytKyirIyKlKyynOTq1PTy5OTW5ISGnMS2zLy2vOzu1Pz2/PTe9NzK3NzK5MzGzGRidIR+lLS2xNTW3My61Jy2xIyixJyarLy6zNTO3JSOlOTW7My+zKS2xLzK1GyWrCx2lCRylGyCpMS+xDx2jCxSXHzC3Lze/KTK9GSu7ARChJyerKyqzGRmdJySnIymxISyzJzO5Mzi7PT6/LTW9ARGjIyKnISCpGRiZISivLTW7Oz2/Pz+/GxmbISChISmxLzi7Oz29Fyq5FRWVHx2hHx6fMzq7KzO7FSe5DSGpDyGtESKrESKtAxatExKTDRqpAxCnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCg4SFhgGEiIaDAgEBAwEEi4IFBgYHCAkKAQuGDA0ODg8QChELAQKEEg4TFBUDFhEXGBkaigAbHB0eAR+yGBogG4ohISIjJCUGJicZKA0oAwApFyorLC3ZLiAgoBUvACswMS0yMzQ1Njc4HTk6NwA7PD0+PwtANUFCJEMdREQAihjxceQCEnw2kkwYoQQggCVMBDRZcM+JjSdQojgMKKWJxwVTqNjI8Y/QkipWrljBYiWLDS2GttiYSdMGl0V+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== charset-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBFxaXFxeXAAAACH5BAEAAAAALAAAAAAQABAAAAIqhI+pqxH8kFsvsgtm1vvEaoBZSH6jFAiVJiTmm7Rj1JrnanHYzvf+4S8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= clear_left-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJyanJyWnFxaXPz6/Pz2/PT29Pz+/GSipIyOjOTe5HRudGyipLTm5IR+hOzm7KSepOTi5Ly2vLTi7NTW1GReZGRmZGxmbLy6vKze5Lzm7Nzy9NTO1ExKTCQeJFROVOzu7Nze3Mzu9AQCBDw2PIyKjKyqrEx6hFSanGSqtGy6vDRaXKymrNTS1LSytDxeZEyGjFSapFyepDxiZJSSlMzKzKyurER2fMTGxGxubNza3NzW3DxaXERydJSOlKSmpDRKTMzGzFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAexgACCg4SFhgECiIoDhoICBAUEBgQBB4yCCAiOB5yclZaYB5oJBJwKBwELA5cMDaIOD6UQnBESlwgTEwcMFBUGFgUXDxi3GRobohwdHh8gIcSCDBPHIrsjDyMkJSaXJygpKikrLCQjHQotLpcvMDEyMzQdNR0RFy02lys3MCsDJjgtcujYUYObIB49VgCwYCKEAh8KKHD4cQkIEEEOMAQJ4gODBBMUDQlZRbJko5OC/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= colorize-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAFxaXPzSpPy+hPyufORKVMwyXPzKhPzq1PzOlOxSRMQmfPzmlPz67PyKLPQuDNw2bNwmnLw61Pz+/OxyHOQOFMwe7IQy3AQSHPz2rPzqrPzGZOx+HNw+7DQ67BQunPz2tPz2jPzmZPziVPzKPPyiLORm7HR29ER6/Bxq/ARi1Pz6lPz+XPz+bLT2nHy67Gy27Dya1MzylKzqZITmREzeTDzeXFTyxKTS/JTS/HTK/Eym7BRelIzqbGTiZAzeZBzmfFTy3JTi/DTedAzedATmnDzy7Gzi/HTO/FSq5ATajATmvBTu3ETG5Eyu5CxynBzKnAzOpAy6xBSCnBQ2TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeHgACCg4SFhoeIAAECAwQFiQAGBwgDCQUKiAsMBwYNDg8QEYaaDBIGExQQFRYXhQsYGRkaGw8cFh0ehR8gISIjJCUmJygphRgqKyssLS4uLzDFhDEyMzQ1Njc4OTo7hTw9NT4/QEE3262FQj5DREVGR0jdh0NJSktMTU6QT1BRUlOQAgos5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= completion-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBGxqbHRudPz+/Pz2/GxubDw6PCxehOTi5MzGzMTCxMTGxISChDRijAQCBDRejPT29Nze3OTe5NzW3KyqrKyurNTO1Nza3MzOzOzq7EQ+RAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV0ICCOZCkGaKqqgDC88EAU8WAE9XEgdKIsDIMr1tjhHMggLqZDuBaORNCFdAweDwRukQDeIBGJZIKQRAqMdNoAMLjf8PioQKnXKxQ8ni0qWKoOExdIGBZ8LWFhFwiJZocBGYCAGRmHNDU1h20GGnFvJqAkfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== compress_2-16:actions actions16 16:photo:16 16:R0lGODlhDwAQAIUAAPwCBKyqrIyKjIR+hGxqbFxWXFRSVGxmbMzKzPz+/NTW1ISChJSivISexKymrPz6/ER+xOzy/KzO9DR+1BxexAQ6pPT2/Ozu/Ozu9OTm9Nzm7Mze7Eyy/PT29Ozy9Nzu/MTa9LTW/HTC/Mzi/KTS/Fyy/ARGtGyi1PT6/Mzm/LTa/JTK/CSO9ARKvEyS3Lza/JTC9GS2/DyW9Bx+/ARe5Cx+5ARSzARa1ARazKSmpJSSlAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAZ1QIAQEBAMCAXDYcgUIhKKxbLZRASm1CGj4cgyGY8HxCsEPyKSCaVSoTIsF0xGs+G0m4yOB/MBhUR3TA0PGBgjISQlJlQnKBEpKisrLC1ULi8wMTIzNDSVTTU2NzcOODc2NmQIOVheTwg6rU0BCwsEBkpkugZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= compress-16:actions actions16 16:photo:16 16:R0lGODlhDwAQAIUAAPwCBKyqrIyKjIR+hGxqbFxWXFRSVGxmbMzKzPz+/NTW1GxubJy2xKymrPT29LzGzHyerCRylAQ2bGyWrDRyhCxSZITC3Lza/KTO/Fyq5ARChISixISy1JTK3Mzi9PT2/LzW7Gyy7LTS3Mzm7OTy9Pz6/ISivMTm9Ozy9LTS9Eye5DSCtDSKrESKtAxatDRSdKSmpJSSlISChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAZxQIAQEBAMCAXDYcgUIhKKwbLZRAQWVCaDkWhkhwzHAxIpRyTUCaUSsVwwGQ11w+l4PglQSN7ciEYkJQ4XcVQmJyQODnmFfSMoih8pKnxMJissLSuaLpVDLxqhDaGeVAgwU18ATwgxqVQBMkdJr6pUvEEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== configure-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSepJyanNze3OTe5Ly6vNTO1MzOzLSutKSipHRudHRydHx6fJSOlExOTExGTDw+PHR2dMS+xCx6RCzOVCyCRDyKTLy+vJyWnGReZByiPJTqtDSqVFxaXISGhKyqrCSeRDyiVCSKPBy6RDyWVByqRCxiPCyaRER6VDRePERuTFSGXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ6QIBwGBAMj0jhgFAwHALJYwGRQFgPhShAsWA0GODGIepwABgPbVIBUSMjbfeQnSxIkBNKxQKwAy4YGQlHGhsaHAUYHR5DHVQfCSAUGiEZSRCYmCIjIiRmQh8KDnFCEyUTFpgZbZhIJicmKACtWikWJipyACYrKblDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== configure_shortcuts-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJyanKSepNze3MTCxMzOzNTO1LS2tLy2vKyqrHRudGxubISChIyKjHx6fIR+hIyGjFROVERCRERGRDw6PNzW3OTe5Pz+/KyurCSCREy6bAwKDHR2dBymPFxiXLSutMzKzLSytCSaPFxWXHRydCSKRBy6PFRiXGxqbPz6/CR6PCSuRMS+xDRiPER2VFxaXDyOVEyCXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQEBAACgaj8fBgFAwEJHHAyJwSCQKBGhRsWA0HI4HxKCNRAAOSXHCeGiLDkpRULEE3vFIwnChXO5QCxEYBH0XhwxIGRoJFRcQGxQchw1HHR4fhyAShxcVIYlFIiMLmYaeBCRHJSYnKAkphxYHqkcqKyonC7AVLApQLSItLi8oFQS/wDDDACMJtcAxzAALUH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= configure_toolbars-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSepJyanNze3OTe5Ly+vNTO1MzOzLy2vLSutHRudHRydHx6fJSOlHx+fHR2dIR+hIyKjExOTFRSVExGTHx2fDw+PISChGxqbPz+/KSipKymrCyCRCzOVDyKTFROVLS2tJSSlLy6vMTGxByiPJTqtDSqVJSWlIyGjMS+xCyaRCSeRDyiVCSKPBy6RDyWVCx6RByqRCxiPER6VEx2VDRePFSGXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAacQIBwGBAMj0jhgFAwHALJIyIRSFgPhShAsWA0HA9I5BCVTAAPijZZsayRD/cxTL88Ko+4BAN5MCAZBhoZBxsZHB0cHgGBHwwGICEHIhEjJCUkJicjIBMQWBcGBSgpKh0rLA0iCR8VBgifBQwgLS4tLxAgGp5YC68KAjAxMBwVISGOHxQTEh8SEjIqMjPOZloyHjI0b0I1NjXbQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= connect_creating-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNzuvOTu3KzGxFyCvHzCLMTmnPz+/LTW9CxSnDRepFw6zMz+pPT+7OT+5Nz23ITKhITiZEyG5CxazDRGdCxu1LTS3Oz+xLz+nITubGTOTGSStCxm7CROtFxaXLzytJz+dHzybESS/ESS5Cxu9CxS1DRGZOzq7Nz+vKz+fJT+ZEy21DSO/CRW3DRKZERCNFxeXPTy9OTe5Lz+hITirESi/FSq/Eyu/Cx69CRe5MzKzEyS/Fyy/DSW/Cxq9CROxCxCRDw6PNzW3NTS1Ly+vFSK/EyytESWnMTCxMzGzKSipDzORES+PExelAQCBLSutLS2tJyanIyKjCyqPDSGPDx6PDxiVCw6XGReZKSepDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe+gACCgwECAwSDiYMFBgeOCAkKioILDA0ODxAREhMUihUWFw0NGBkaGxwdnoMeH6MMICEiIyQlJqwHJxcoKSorLCwkLS4vADAHMScyMzQ1Njc1ODkUxR4n1zI6Ozw3PSw+PxRAAEEeQjIyQ0RFRkfSHSbjQeVIQ0lISktMTQkmtwBOgiTx8ATKkyhSplDxN05QkANKPERB6KGKlStXBmGB6KGclI5AQiY6kEVLwHJBnDRMpESLoJNOJsmcOchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 connect_established-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBFxaXPz+/KSipDQyNJyanOzu7PTu9OTm5AQCBMzKzOzm7OTi5Ly6vOTe5NzW3NTW1MzGzMTGxLSytMTCxEQ+RFxeXJSSlDw+PKyurIyKjGReZDw6PAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWCICCO5BgIQwkErIkS5SkIwSoUMHkaB0K/sURAsVj4CDkXQ9hwOB6CpO1wgAgLD0hEkBARAoweQnKVTChdQIVggSAej4bwIgmkE5gvBSKhDIQBBGkACRV1GQ0ZBRoJgiUEKAEFi3aDIicDG18agZY2A4IYHAEcngBAhBylKgA4rKx+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 connect_no-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBFxaXGReZPz+/KSipDQyNPTu9Ozm7KSepJyanMzKzOTm5OTe5Dw6PLy2vNza3NTW1NTS1MzGzMTGxLSytJSSlMS+xOTi5AQGBLS2tKymrKyurISGhIyKjAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWCICCOQCAEYzAQpKgOA6oSRasaxhEPSN0mAcVhwYj5Wg2gg/iIkVCARjJAgEQkA59qEQ1MERPKpLY1RLoFYMUSqAkuuYOkO/ViuhAiJENPNO5RDQETVxYaaIAAGA1sGw4bCRxRiSINKwEJBB0CLS48XgEcXp0AKwWLgn+kPSKolCR+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 contents2-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAROdARahBRejBx6rBxypFSexDySxDSGvAxulDR2nHSy1IS23FyixDySvBRupAxilMze7Iy+1IS21KTK3ESWxARijIy+3FyizCR+tAxmjARWhMze9AQ+XAxejARSfAQyRERyhPz6/PTu9Nzq9KzS5FyClPz+/PTy9KSmpDRmfLS2tCRSZOTm7Ly2vCxadAQ+VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaDQIBwSCwahQHBsRgYEAqBJaBpOCAIiShTsWAsGg7CA6JFRiQTCsNQEVsE5UAgcvFiHJmHZiNHagIcEw0VGVgCfH0dAWQcF1cFCR4fASBDimRnDwlkISIjRIpZJCUfJiInKCkdoIsBKiciKCssq0WKHS0oLi8wUh0dKSG1UgAww8TIfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== contents-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAARqjFxeXPwCBHx6fARKbHRmVFxaXKyqrPTu5ARKdNzW3JySfKyinMzKxPz+/ARCZHRmXGxubNy+lPTizPzy7HRqXOTGnPTexHxuXAQyZHxqXLSqpNzClIR6ZPTq3AQmVPz29Pz27IyCbPzu5KyilPzy5JyOfPTixKyejMy6lAQaPAR6pIx6bOTOtOzavKSWhMS2nLSihLyqlNTGtAQiTAR2pJSKdLSifNTGrOTazNzWxIx+ZARWpAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAAAahQEBAQCwSBwMjoWAwCgYHRMGYKCiaggWj4XBMiw9INxKRTCjdLzFR6ToWlgvagUlkiASNe8M5dzseH2tiDiAMFhMhXSKBRA8VICMeJH0lXSaNAmwUExMkFidzCwiCAg8FCBMXKH0UKR0kmSorLC0uLxYwLDEyMwg0RSo1HSk2Nx04OToImUQ0wzssNTUr0zWlRR81PNcf3t9OAuDh5OVFfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== contexthelp-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBJyWnHx6fHx2fHR2dExKTJSWlCwqLAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARHEMgJghiCFMoN+eAGHJQxDGKlAQgpBevkbUg7wWmAsrWryqtajwMwiYRD2U6CTBopzeEgxmxSUlWhj8jj+Z7cJI7rJZvJ/ggAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== decrypted-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBKSmpNzW3OTi5LS2tHx2fNTO1KSepJyenLSutJSWlMzOzGxqbJyWnMS+xGRiZIyOjNTW1Hx+fPz2/JSOlKyqrExOTOzq7FRWVOzm7FRSVGxmbISGhCwqLLy2vAAAACH5BAEAAAAALAAAAAAQABAAAAVqICCOZGmOgTAMRHGORnAgifKKiwsogck0iYTjMbKRGBBHxBHQ+SQKw2TggDBODEpq4ahILCeo4zJYJBiYU0FBuAgcCAbYJKE4Mu/DQ4NVJDJLDRtzJhwJAwYODQ8dNxQeCQcFjTeVlid+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 domtreeviewer-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrER2vMTWvLTSnKzKnHSizGSetFyOzDSChLTerMz2lMT2fKTibHTGVGSa1FymhEyqHGSyfOT2zPT65OT+tLzyhIzSbFSevDx+3ESGxDyOdBRKbOzq7JSWlDRyzDRuvBxeLBRSDJyanPz+/LTStFSeVCRevBxWTJS+lHSydESGREx+zBxGZFSiVEySTDxuPER21BRKrBQ2ZBRKHBxipAw2hAwuNBQydAwqZAQeTAQCBOzu7AQSLAQKFAwSJAQOJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeRgACCg4SFhgABAgOHhAQFBgcICQqMCwwNDg8PEBEShhMUFRYXGBkaGxwdhB4fHq6vHiAhIiODHiQluSYmJ7EoKbWCrCQfJSorLB4tKC7BALe5JS8wMR4yMzQ1tsXRuR42NzQ4tri6vB4dOTqrH8TGyB45OTur3dPVOjs8PLawHj3/fOzjZ+gHkB9BBhJkxNBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 down-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy2hISyhHSidFyKXERyTDReRJTGlPz+/IzOhJTOhHy6bFyWXEx+VIS6jOTu3KTWnJTKhIS+fGSmZERmTOz27LTetJzSlITCfGyybDxuRHy2jMzqzKTSnIzGhER+XDxmXOTy3Nzq1HS+fFSmZDxqVMzizDxiTOTy5FymbDxmVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZiQIBwSCwaj8iAYEAgFAxIwAGRUCwY0Ki2qGw2nlHHAxKRTCjRQMVywWQ0xoBj46hwOp7rpwAiBhAVISIWHiMjJCVGGwgPFSYRESQnSQgoDwckWUiLDykqWwABD5pbG6CgfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editclear-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBISChMzKzNzW3ERGRPTu9PT29Pz6/Ozu7AQCBPz+/AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARFEMhJq7016M23DEIojuFAAGBRGOraGscJIkmg3DguC0ad/zua7adDCQo+4i2YVO56Q6cRYVAWA4ODtQggeL/gL2ZMvvgjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= editcopy-16:actions actions16 16:photo:16 16:R0lGODlhDwAPAIUAAPwCBPTu9PTy9Ozu7OTi5Pz+/NTS1FROVHx6fNTO1GRiZGyubPz6/OTm5Ozm7Nza3KzWrGSqZExKTMTCxMzuzLy6vLzqvOz67MzOzKSipJTSlNzy3NT21Ozq7FSyVGzGbFy6XESORMTKxEymTDx2PMzKzHRudMzGzDw+PFRWVHRydHx2fGxubGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPAA8AAAZ5QEBAMBAMCYCkMhkoOJ2Gw1LZfBYMiCnTWkgotMJCYMEINBznM7XwgEQeVkZCsp1QCguHNSENVywXBREETxh9DQ8ZGhscGwsdUH1JBx4fICEiDFBfSyMjJCWaTl5TISQVVVAmUyQABicGCQkYpGAoKSYqKywtYL5JQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 editcut-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBEyCrEx6rGyGpJSSlEyGrPz+/Pz6/KSepPz2/MzOzGxudIyivHyevEx+rJSWlMTCxLS2tGRiZExKTPT6/GSStERyjPTy9FxaXDQ2NNTO1GSWvERqlEx+pFySvOTm7OTi5GxydNzi7FRSVFyOvNTW3GSWxLzG1Ex+tKSyxGyWxISmxHSmxFyWvERynERqnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIBwSCwSA4IBYUkYFATFgOGAmCYUC0bDQRQcDg9IhCCZUCqW48UAwWQyE41hwyF21oa83uCpDwUfe3ogIX5CASJ5IHoiIySGAAElBiAji5UGJpAdJ5iWI3mPRCgpE3qgeSqQAguCeqJDKCuueZpdLCoqLS0kvLyQAAIcLhwvL8MvLkbLRn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= editdelete-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/OTm5NzW3NTS1NTO1MzKzPz+/MzGzOzm7AQCBOTi5MTCxLy2vLSytOTe5PzafPzefPzm5Pz6/PTy9Nza3PzCTPyyRPySLPxyFPza1Pz2/PzSbPz69PxGJPwOBOzq7PzehPy6VPxCJNwyPPTu9PxqVPwqDKRudNxmXMwWHMQSFJxqbMTGxLy+vLy6vMS+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQAAgIBAMjoRCQcgUBgzQaMFwaAoR0SgBOrA+s4YpNNFUgA2EBaNBZjqiD8gjIpFM2kIK9FGxXDAZGhp4AHoPGxwXHB0eHwiEeiAhFwYYIh4Fj02GlBgGIiMHFIQOEiQlJiKgJwQDkKYDKCkqKw0DLJAkJAgULS4HAwQvkA4Uty8uLgwubFZCCdDR0c7UVn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= edit-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAALS+zPwCBOTm5NzW3NTS1NTO1MzKzNTu9Ozm7Pz+/HyarNza3DxuhGSSrMTCxERWZGSWtNTi7MTS3PTu9NTW1Ly6vLSytAQCBERWXKy2pPzOrPz6/PTy9ExudNR6RPy+nPzm1Pz2/IyOjHRqbIxaNMR6VPzOtPTazJSSlHx+fOzq7Ly2vJSWlIyKjGxWRKRqTOSadOze3Hx6fOzu7IyGjIR6dJxyXJyCfKSepJSOjKyurMzGzFxeXMTGxPTu7FROVExKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAeqgAABAgMDBIcFBgYBjIwHAAgJkpMGCYuNCo+SBAuSlQkEjQwNmpOWkw6MDwwQERITFASWDhUWF40YrBkapgkbHLeNDx0eHyAbkyHAjQEiIyQlJiccKCkhKsGMKywtLi8wMRwyMwjZAQYUFjQ1NjcLCAgL5gshCA44OSM6CwsE89c0DFTQsYMHgR7zfEyQMYLTDyAGHMzjR8ABrQoYbTFrdKGjR48bQ4r0EwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editpaste-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBEyCrEx6rGyGpJSSlEyGrPz+/Pz6/KSepPz2/NTS1HRyfLTG3HyevEx+rJSWlMTCxLS2tHx+fGSStERyjPTy9Hx2fExOTDw6PNza3GSWvERqlEx+pFySvOTm7PTu9OTi5MzGzMTGxNzi7NTW3NzW3LzG1GRiZEx+tKSyxKyqrAwKDJSqxLy+vBwaHHSmxGyWxFyWvLSytCwuLERunERqnMS+xDQuNBQWFBQSFCQeJCwqLAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAacQIBwSCwSA4IBYUkYFATFgOGAmCYUC0bDQRQcDA9IBCGRGCaUY8UAsVwwl4xBsyFy1oa83tCpDwUeBh8gGSGGIiEQEEMBI3sQeXiLQgEkBhUgJSF5kGxDHCZ7InknnEMoKZeZEAqlJxAqK0ICLKKkeS2yACgNe5sGo2wuQg4vMDAxHb8JeTIzfxQ0GzUQLRA21QY3RkU4OTo7O35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= editshred-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7MTGxMTCxLy6vPTu9AQCBOTe5Pz2/Pz6/Ozu7Nze3OTi5Nza3Ly+vLSytKSepKSipJyanNTW1JSOlJSSlISGhAwGDGxubCwmLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaFQAAgIBAMjoRCQcgUBgzQaMFwaAoR0egBSrA+s9RoovnNHhQLRqPpAEMfkMia2TZAoBDIgxGYCyUIEAgPEw8UDEZ+ABICEAIPCQwFEQsCigQKDxUPFggWDhcHlxgBFw4ZGhkHGwqKCRsAHA0dHhuzDYoAH7q8u7u5IABrw8LFVsfIych+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 edittrash1-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTi5MzOzISChMzWxNTe1IyWlOTixKyyrKzGrHR+fGRiZHSOlPTy9Pzu5JyitJSefKy+pPz6/NTSzEReTFRSVExKTGSGdKy6vMTCxKSqrPz+/FRmZKyqjIx6dERGREQ+RIyKjFxuZER2VKzSxOTq7Ozm7ISijDxOTJyWnIyOjISGhHR2dGxmbFROVMzGzNTO1NTW1FxWXFxaXOzq7NzW3IyGjLy2vPz2/PT29JSOlLSytNza3KyqrIR+hGxubGRmZKSipFRWVPTu9MTGxJyanHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeqgACCgwECg4eDAwQFBgcBCAkKC4gAAwwNDg8QERITFBWHFhcYGRoJGxEcHR4fIIMhFSIjJCUbJicEKBYWhykhISorAx4sLQsuiC8wMRkpxTIzFTOIGSY0DTUaNiwc0Yg3ATg5Dho6Ay0z04c7PA04AT0DLAvp3zENEgEaPj9A9ev3NtQIwuIHPVCHbmRwN7BgCyHqEtYYQqQICyMcEFICcCPFgHMbQ270EwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== edittrash-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMTGxNTOxLzKtNzWzOTi5Ky6tKS+rISChISWjLTGxJSenJyulKSmpHRubFRSVFxuZJyqnLzCtOzm7IyWhIyahJyWjFxaXFROVExWVFxeXKS2rNTe3Pz6/KSqpGReZHRydIyOjJSOjLy6vLS2tKymrJSSlIR+hGRiZCwqLNTW1Ly+vGxmbJyWnNza3PTu9IyKjHx6fCQeJPTy9IyWlGRmZGxqbEQ+RHR2dMzGzOTe5HRudGR2bOTm5LSytHx2fNze3ISGhKyurNTS1IyGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeqgACCg4SFhQECAwQFBgeGgggJCgILDAkEDQ6FDxAJEQsSExQVFg4XhBgZGhAbHB0BHgkXGIQOHw8YICEiCLYYtIMODSMkJSYnDiimKYQXJSoTKwgaGiwQGMyELS4vKjAfDjEOGDKFCAIzKjQ1Dg42N4Y4OTM6CzvhNfCFHyQvOiUgYvDQkK1QiR4TfMSI8eNBQUIwgCQMEmMHMEMXhAwRQgTHh4ePQgLwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== encrypted-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBLSytMTCxKSepNTS1HRydKyqrKSipISChLy6vJyWnOTi5FRWVJSSlOzu7Ozm7MzKzIyGjGRiZNza3GxqbPz+/FxaXIyKjPTu9JyanIR+hPz6/LSutGxmbDQ2NAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOZGkCgSAMJykQhBAULWAciGjkbYKLs5pCcSAsBAXGqYBoEBwPSESybEwmxwBCaaI0KpUHwVCwLC+YyvGQPHkJakGGYjZpLoLNwkfhmhAcCxMJGR0eNREBARkahzWPkCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 exec-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTe5Nze3MTGxOTm5MzGzMS+xKSepIyKjOzm7Nza3NTW1PTu9ISChFxaXDw6PNTS1MzOzLy2vKymrHRudCQiJKyqrJyanCwuLHx6fJyWnKSipERGRGRmZHRydExGTExOTDw2PDw+PFxWXFROVFRWVHx2fGxmbLSytJSWlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaJQIBwSCwaAQHB4DgkCJKFggFwQBQTigUhwVA2HA8jhJuISCaUSsUYSBQsF4oDjCEuJBJLRrNBODgcDx1DcR5zCAUSHh8gFQ8cQhwVIRwiHRcXDiMjICQORBgcJBwgICUdHRRGFR8eJicdGR4eVkWMsbIIDRcotUMOqCcgFKobG0wAuinIzM3IfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== exit1-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/Ox6NPx+NPx6LPxuLPxqLPxaFPxOHPxGDPw6DPw+DOQyDPyaXOzKpPzSnPzGhPzCfPyyXPyiTPyaNPyOLPyGHORCDPzmxPySRPxqPPxKJPwuNPxaXPyCdPxyXPxOLPxWLPxSHPxiFMQaDPzitPxqJPxCPPzSzPzy7Pz+/Pzi3PSahPx2VPxeLPxuNPxiDPQOJPxKTPzKxPyilPyunPza1PzGtPyOZPwCNPxuHPzu7PyWhPw+LPzCtPxaNPzSxPx+PPQCPPy+dPxSTPy6rPxmLPxyLPy6ZPyahPx6NPzKvPy2pNwCRPymTPyKdPxiNPyGNPzOvMwCTPxqTPz6/Pzq5PyiXMQCXPyKJPxePPzWzPyCXPx2NPyONPy6nPzazPyqNLQCXPz29Py2jPy6jPzu5Pzy5Py+fLQCbOxyFPyujPzm5PzSpPyyTPy2NKwCbOwyBORiFPyeZPyifPy+PIQCVPxuFPxmFOwSDPwGFPQCHMwCNMQCRLQCTJQCTAAAACH5BAEAAAAALAAAAAAQABAAAAf6gAAAAQIDBAUGBwgJCgkLggAMDQ4PEBESExQVFQgWFoMXGBkaGxwdHR4fGiAhIiMDJCUIJicoKSkqKywtLi8wAw4aMbcyMzQ1KTY3BC84OQ8bMjo7PDY9PjMpP0AvQSVCQyhEPCa3RUYqKTfNBkcdKUgfIbcESUopSy9MIU1O8D5PbiWBEgXfCykIJkyhsqRIgVtQoFRJYeXFFQVYsmipsoVLjShdvKT4AuZFmAQVQNxIIcbLGDJlUpg5UxJNgjQEjKhZcysFCjZH2rh58QZOHCMD5cwh4mVFEzdu6LyoA8DOi6tYr97BigbSCDx59Ijdw4dPHz9UAfgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 exit-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSipJyWnIyKjJSOlLSytLy2vJSWlISChMzKzOTi5JSSlMTCxOzq7Pz6/IyOjPz+/Ozm7LS2tNTO1FxaXIyGjLSutHx6fFRWVGxmbExKTHRudFRSVFROVHR2dISGhGRiZFxWXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ6QIBwSCwaAwHBgGAcFgzPQuBAQBwLCUUiIR0sFsUAo+FoNBjJB3i4wEIgkfN7MLAKFwHJ5J14L+gUQxV4BRZvEH8DFxhDXgdIhw8VDxkabHQDfnMbGpaNmRB0BG8cHUUeFx8Dqh4gHJ1GFBQdIbSdpk0Anbu5vb6/fkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== fileclose1-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKyurKyqrLSutHRudPT29PTy9Ly6vLS2tGxmbPz+/Ly2vFRWVKzC3LTC3GxqbFxaXERmjFRynIymxISChOTi5FRylFRyjERmhExqjExulFx6pJSmzFxWXKSipFR2jExqhGyCrDxifJyWnFR2lGSCpGyGrGyKrExKTIyOjHSSrHyWtISavJSSlFR2nGR+pGSGpHx+fKSepMzKzHyStFRSVKSmpHyavKymrJyanFROVAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAapQAAgIBgIiEaCcCkUFAzP5wGRYAoHBoVWu1AclExBdqvoKhCMcNbQaDsSDwJEzY7YJRMBJb0UVBoWFxgZGhscAR1MHg4fHyBaEhIhInxCIw0kFxdaJSYnIihMKQ6BmwonJyqgog0bkVorLCyrSy0DExsuLzArqjGhSzIzAxwbJTSzKS01TDYVMx43ItMpODmVAAPPAikUMRQpMh6JSwQdDDUo6jo65+R+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileclose-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTa7Nzi7Mza5MzW5MTW5MTO5ERqhDxifDxelERijExqlJyy1FRylERmjExunFx2pNTe7FR2lExujExmhERmhPz+/GSCpFRujFx6pGyKtCxWhExyjExqjGSGrCRObMzW7FRyjFRulGSCrHSOtISavExylGyKrHSStISevLzK5Fx6nFRynHySvIyixFR2nFx+pHyWvHyavISivHSazDRejAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaAQIBwSCwaj0hAQDAgFAzJwQGRQCgWjGOgMaU6HpAsMSKZUCoWy2IBuSSIgokZkwZnNBsigXOYdNIZFx4aH0QgISIiDWkjJCQlhUMFEh0mixYnKCUpkUIqKywmLGkkLSkunUIMLw8vMB4xMi2pQwwZIx6mM7RENDUbH8FJw8RHfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filefind-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMzm9LTW5KzS3Oz6/Pz+/Nzy/Kza7HSuzGyivKzi9Hy21FyavEyCpNzu9PT+/Kzu/GSy1EySvDyCpJzq9CyCrCxqlIyKjNz6/HTS7ESixBx6rBRehLze9OT+/NTy/ITa9FSuzCySvAxqnARWhITG3HS+3HzC3DSaxBRynBxCXGyuzESaxDySvBR2pAxmlAQ2TExaZBRWfARCbERGTKyurFxaXISWpGSClExebCQmJLSutMTCxMS+xLy6vHx6fBwWHPTu9GRiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeSgACCAAGFAoOIgwMEBQUGBwgJiYOMjQUKCwwNkw6WBQ8QERITkwGeBRQRFRYXiQGVBRgZGhscrYgDHQYeHyAhIiMkt4glJicmISgpJCrDgyssKCgtLi8wMc6DFSkWMjMwNDU2kwA3ODkx6Trh44k7PDs1PT4/QOyJNadBNvbiiDsXAgq8wI9GO3KIbNgQgrChn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== fileimport-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFSSBDRiBOz+zFSOBHTGBKz+NNTO1GSmBHzWBKT+LLT+XOT+vNTS1Pz2/Pz6/ExOTPT29Pz+/Hx6fJyanIyKjIyOjJSOlIyGjJSSlISChFROVGxqbNTW1Nza3MTGxLy6vLSytHRydIR+hOTm5NzW3MzGzMS+xKSipGRmZKyqrHRudFRWVJyWnMzOzKSepFxWXLy2vGReZKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQIBwCAgQj0fBgIBECgqGZVN4ECASigWD2Ww4HI9GYwqANCISSUPdhEy86TX7CKE0KpbKBWPBZDR/Qht2HB1hHg0fICEZIkIQGSMXDSQlJichKCgTQxsaKQceHpchKhQaK0MsIi0uDSaLKi8tnEMwHComHycxMSooI45DMhooKiozKC0UFqlEHNDR0hxk1QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 filenew2-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJyenJyanKSepFxaXPz2/PT29FRSVPz+/Pz6/NTS1PTy9Ozm7GxubLSutOTi5LS2tISChOzq7MTCxGxqbGxmbKSipBweHOTe5Ly6vISGhAQCBDw6PGRmZIyGjKyqrNza3LSytOzu7MzKzNzW3MzOzMTGxIR+hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQAAgIBgIiEaCcCkUFAzPp0BwYDYLiCwiIUAIlEynNitQeKtLwULL8DYaBHAzoXVkCw+IHCDORrYFEhN7YhQFFQsUEgwTaEIWawgHFwcSEhgZhAMaBBsLGxwdHh+OfGsJBxsHICAKIYQFCRQMBxgNCq6ECwUiEg0YrSMWhCQKJSYnGRkfH8NMB3EE0NDScVbX2H5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= filenew-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLSytLy6vAQCBOTe5ISChPz6/PTy9JyenGRmZKSipPz2/Nza3FROVCwuLGRiZPT29LS2tJSSlFxaXBQWFDQyNLy2vHR2dPTu9Ozm7IyOjKyqrMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaOQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1GsVNooumFKqiJhYLRbBwGUIf4AWEz3YfIQXKYPCh1TRVRFhcYDxkUCHZOGhscHRAeEhsfBYwAAgcPDxgXICEIIhWYBpwjFKAbBhUDmBUPBRAIGw0VJAMlpQgQIggTrQMECa8VrWlpC2qYTAzOz89W0tN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileopen-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFSSBDRiBOz+zFSOBHTGBKz+NNTO1GSmBHzWBKT+LLT+XOT+vNTS1Pz2/Pz6/ExOTPT29Pz+/Hx6fJyanIyKjIyOjJSOlIyGjJSSlISChFROVGxqbNTW1Nza3MTGxLy6vLSytHRydIR+hOTm5NzW3MzGzMS+xKSipGRmZKyqrHRudFRWVJyWnMzOzKSepFxWXLy2vGReZKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQIBwCAgQj0fBgIBECgqGZVN4ECASigWD2Ww4HI9GYwqANCISSUPdhEy86TX7CKE0KpbKBWPBZDR/Qht2HB1hHg0fICEZIkIQGSMXDSQlJichKCgTQxsaKQceHpchKhQaK0MsIi0uDSaLKi8tnEMwHComHycxMSooI45DMhooKiozKC0UFqlEHNDR0hxk1QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileprint-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTS1JyanHRudNzW3MTCxGxqbMzGzJSSlOzm7PTu9NTO1Ly+vPz+/Hx2fPz2/Pz6/PTy9Ozq7OTi5ISChOTm5MzKzMS+xKyurIyGjIR+hMzOzHy+fNT+zCSyJHR2dLy6vKyqrKymrIyKjFRSVHx6fLy2vLSutGRiZLS2tISGhHRydFxeXOTWrOTevNzWrIyGhPz27PT27FxaXMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAakQIBQGBAYB8OkkFAoGg0HhFKYECgWiwBDYJgCFI2wuOFQPiCRh2KtkCQmBMpQUZEQ7gHLhYHJaORfE3AbFgcXHB0eFB8ZSwwgISICCCMaHwYkJYAKBAEHICYYJwgIGSgOI0IKKQgqGiUlDiUrKywfgAkFLS4vvC+7MCyoqhcxMgoyMhAxMRQzmkIHBWNjCCQaSQfUYlJKCwUWBQcHNOAiXuhKfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filequickprint-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTS1JyanHRudNzW3MTCxJSSlOzm7Ozq7MzGzLy6vGxqbPz+/Hx2fKSKBPz2/Pz6/PT27PTy9PTu9Pz2ZEQ6HOTi5NTO1FxaRISChMzKzGRaTKyOBLy+vKymrJyenLy2vKyurLSutKSOBIyKjLS2tISGhHx6fFRKPFRSVOTWrNzWrPz6ZMSeBPz27LyaBCwqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAabQIBQGBAYB8OkkFAoHgsGpfAgQBASBIVgIQUgGOAwo+FwDB+QyOMhmUwQCAeDUhFGLAeC/pIoyCkYGUIPFhYEGhoFfnMbDhxLCh0eHh8GfxSYGEJWfAogISIGI3MYJJslBiYZDSdkcygpgl4FKiorthwMLJgULZsFEcHCLg4QFC+yfWJgfy2yQgXLfy8wShcFfX0FLS0eXd9KfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filesaveas-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAALS+zPwCBNTu9BS6LASiFHRydHyarJz6rKT6rKTOpHx2fDxuhGSSrPz+/NTS1GxqbERWZGSWtNTi7MTS3ERGRHx6fFxaXNTO1ERWXKy2pPzOtJyWnExudNR6RPy+nExKTMTCxISChKyqrIxaNMR6VLy2vFROVNza3GRiZGxWRKRqTOSadGxubKSipKSepJxyXHx+fHRudNTW1IyKjHR2dGxmbGReZJyanIyGjFxeXPTu9Pz2/Ozq7FRSVDw6POTi5CQiJOTm5NzW3DQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAfDgAABg4SFhgIAAwSLjI0DBQEGiAeUlZUICQoBCwyIDZ+goA4PARALERITFBUWFasWDRekARicGRqhoBcWgxsYHB0erBUfrrG8ASAhIiMkuLklJoMnGwUoKSorIRUKLA8FFNMtLiEFFi8hITAVMTHhATLjMzQPHw8PNTYFNu8XNzg5KlzQsWMHDxE9LPgYdGFDhR42fgB5oOPHBRM9FgbIMMOVhSBAbPAQAoJCjyGDWoSIYYEiDx4/HIDw4QOloZuG/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= filesave-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNzW3BS6LASiFHR2dOTm5KTOpJz6rKT6rHx2fOzq7NTO1Pz+/NTS1GxqbNze3Hx6fERGRIR+hFxWXFRSVGxmbFxeXExKTFxaXLy2vKyqrJyanJyWnJSSlIyKjISChGxubHRudKymrJyenJSOlIyGjHx+fHRydNTW1GRmZDw6PPz6/Pz2/LSutFROVGReZCQiJPTu9OTi5MTCxDQyNKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaiQIBwSCwKA4KBcskUEIQFw2FKpSIMCaFiweh6vw2H8MGFRCQTs4TCWFSgja+8bRmXLxAMBH9pU+xzXxl/AA8aGxwdHR4fEAkgDiERRyIjIxsdJCUfJgknkkIolR4SEgQhDhUWISkqQgsbH3oBCissBS0uFq4ACx1rLwUwFTEFCy4UvC0eexMyMCkKATMRFDRCNSUhFg4xCgrGMyoq10bmQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= fill-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDQ2NCQmJFROVISChERCRGxubDzCBHx2fDw6PEz+BDS+BFRWVJSWlJyWnGRiZNTS1KSepIyKjNzW3GxqbHx6fNza3Pz2/MzKzCR+BBRWBKyqrPz6/Hx+fFxaXFxWXISGhKSipLSytPz+/NTO1GReZMzGzHR2dLS2tPTy9FRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaGQIBwSCwahwHB0TggFJRLoeGAGCSgR4JiYWAMsEVtw3F4MJ5GxeEAiRAOhkGSqJZMFpCGhHLGrisNFhcHGAQEZmgACxkGGg4bHHgVHR5WSmsaHyAhIhcjJCAEJWhbGgAPBg4iFiMmEg8BQqVDJxEoECkbKkOzQxUSGyYERQqmRQ3DxFFEfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filter1-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBGxqbGRiZIyOjKSepJyenKyurMTCxJyWnFRSVERGRHR2dKymrNTS1FxaXKSipLy6vMzGzDQyNHx2fHRudIyGjExOTISChMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVgICCOZGkGAoqaYjoQhXEgiVIKC0IwR98cAtvI8XpADpFDo4GQkBSLCS8ZiRgoTlLCseAdGAJBtuSoBBwWhZglokAYBSx7dIms5y1MYDxPAPlsChF7eCIKf4UiEoCJJn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= find-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBIR+hOz2/Mzm9MTi7Lze7PT6/Pz+/KTW7HSuzFyavISGhGRiZHx6fOTi5OTm5Ly+vHRydLSutDxidDx+pKyurKyqrDRadCRulCROZBxijBxCXAxSdKzS3IzK5Ly2vFyuzBwyRFxaXDSGrCRSbCxKXCRGXCwyPERGRER6lExufFR2jExGTJSWlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaFQIBwSBQGAEeiYEAYFIpFg+EgQCQUwgUD0BAKHGDHA6LALiLDqePAPkgmFCxxcABXLAfLBUMpDgxrbRIZGhhFBQV2eBYbHIZEHR6BbB8bG49EIBAfEhaeISJQQiMkJSYhJygWoaIjKSorGSgiEqxIXKIsIquiULq1ABFoXbkiXRYtvVB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 finish-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy2hIS6jPz+/Hy2jNTuzJzGnIy2hNzy1Pz+9PT69LzitFyOZJTSjJTOhJzSlKzapMTixDx2REx6VHS6bHS+dITGhIzKhJzOnKTKpFSCXERuTDReRDxmRFSeXHzChHSydESCXFSiZERmVDxuXDxiXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZXQIBwSCwaj0hhIGkMLJlDwUCQdBIIgcLgGTAQD4iEYrDQUg0DIqPheDwgkMhW4iBOKBXLBZPJaAAbFEQcHR0cHh8gfwAcHEghIiNQQiSOkwAll5qbm35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_new-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTSlOzmpPTypFRSVPz+rFxWXHx6dKSenJSWlExKTPz+/FRWVKSepJyWnKymlLy6nOTepPz6pPz6rJSSlDw6PGReZGxqbPz2/Pz6/Nza3MTGxLS2tGxubDQuNIyKjOTm5MzKzLy6vLSutPz+pOTi5MTCxKymrGxmbJSOlNzW3NTW1KyurKSipLS2jKSihGRmZISGhHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQIBwSCwai4GjUqA8Do6EKEFYAFSrQ8MBkThEFYUFdshoOBAPSCS8EEsmTEKCUlEoDIRwQWEZEhwXChgZGgUbBRwFHX4UHh8gICEiIyQJi2SBJRogJiInAigXRAQeKSEqKyIsLS6iowQhGxshJycOLzBFBjENDQgNKR8xB0YEMh0yF8fHKE3OQn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= forward-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy2hIS6jHy2jPz+/JzGlPT67HyyhISyhNzy3Oz27Ozy5OTy3OTy5HSidJTOhFyWXKTSnLzetMzqzNTq1FyKXIzKhJzSlMTixNzq1Nzu3Hy6dER+VITCfITGfJzOlFSmZERmTDxyRERuTGSmXGyybHS2bIS+fJTGjDRiRDxeRHS+fER2XDxmVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZqQIBwSCwah4GjUjBQGgOEpFFQAASYAgOhWTwQAIiEYsFoRIuOBwASkUwoDcWWWFFXLJELBpPRaKQAFRsAHB0eFh4FHyAhRCIQACMkJSYnKCApRSqZKSEhECuMTkMcmKNDLJmnQi2rrq9+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 forwardimage-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGyK5GSG5GyO7Nzi/Mza9MzS/FR65Nzi9NTa/MTS9Iym7FR63Dxm3EzOTDRi3CxW1CRSxBw2hMzW9Ky+7KS29JSm7Iyi7ISe7EzOVHSS7FyC5AwiXPz+/Nze/NTe9LzK9Jyu7DSGNFTOVIT+hPTy/AROBKTmpLz2xMT2xMz+zDz+RPz6/MTS/By6HBzKHBzWJBzeJCTuLDz6RIT6jPT2/LTC9ASOBASWBASaBASmBAy+FASiBASGBGSC5NTe/KS67KS27Cxa1HSW5Exy5CRKtCRGpBw+lBQubAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAergACCg4SFhAECiIaFAwQEBQYHi4IBCAkKmAsMDQ4PEBESlBMUFRYWCxcYGQ4aGxyUHR4fBiAgISEOHQ6usJYiIxmrIyS6rwADJZcmJygpKiorxA6ULAktJi4vMDEyMjM0KtMBNRM2Jjc3ODk5Ojs8JpQlCuYm9fU6PSbGPj82QEBBKmDAYCKfkH0DMQwZQIRIg3oQihgjIiRCESNHJCBBYmIjEmOTQook5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= frameprint-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTS1JyanHRudNzW3MTCxGxqbMzGzJSSlOzm7PTu9NTO1Ly+vPz+/Hx2fPz2/Pz6/PTy9Ozq7OTi5IR+hOTm5MzKzKyurIyGjISGhMzOzHy+fNT+zCSyJHR2dLy6vKyqrKymrHRydFxeXAQCBLSutJSWlGRiZIyOjHx6fOTatNzWrOTevIyGhPz27PT27IyKjFRSVMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAacQIBQGBAYB8OkkFAoGg0HhFKYECgWiwBDYJgCFI2wuOFQPiCRh2KtkCQmBMpQUZEQ7gELg3HBUDJCChNwGhYHBRscHRQeGEsMHyAhAgh+IgYjDoAkJAScHyQXJSYIFCceKABjYSQpDg4eIiMUciSrKiu4LBQjHi0AtmMkLsQQLZmAL6vBYTAxcsCrqwJJJC+cMpwFMgcHIV7gSn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= gear-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTe5Nze3MTGxOTm5MzGzMS+xKSepIyKjOzm7Nza3NTW1PTu9ISChFxaXDw6PNTS1MzOzLy2vKymrHRudCQiJKyqrJyanCwuLHx6fJyWnKSipERGRGRmZHRydExGTExOTDw2PDw+PFxWXFROVFRWVHx2fGxmbLSytJSWlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaJQIBwSCwaAQHB4DgkCJKFggFwQBQTigUhwVA2HA8jhJuISCaUSsUYSBQsF4oDjCEuJBJLRrNBODgcDx1DcR5zCAUSHh8gFQ8cQhwVIRwiHRcXDiMjICQORBgcJBwgICUdHRRGFR8eJicdGR4eVkWMsbIIDRcotUMOqCcgFKobG0wAuinIzM3IfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== gohome-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGx+lHSCnJSerOz2/DxWdExmhNTa5Pz+/Pz2/Ky2xFxqjExifJSirPz6/NTe5Ozm7NTS3LS6xHyOpMTK1KyyvGR2lOzu9MzO3LzCzJyirJSetISSpCxKbLS+xKSuvISSnGR6lFRujFRqhJSulNzm3JSilKSypLzKvKy6rISahHySfGyObGSCZExqTIyejNTe1NTa1IyWPKyyNMzGLFR2VERiRIyijMzazNTi1Nzi7IyiNMzSHPz+BDRWNMzWzHSKdMzKzFx2XGyGbLSytCxOLASyBAT+BJSSlAT2BAR2BCRuJAS2BARmBARqBJyqnFyaXASKBASiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe5gACCgwABAoSIhAMEBQaJggYHAAMICQoFC48MBw0IDgQPA42JBpSeEBESE5iIlAkIBBAUFQMWo4KUFwkOFxgZGhscFh2ZDRAevh4fGyACIRYiDAUjgiQlJSYnKCkqKywtLoQvMDErCSUnMjM0NTaENzg5KxA6Jzs8PTU+hCo/OEBB0KloIcTFvkEr/A0hEoOECiA1XBQhtMLIkRZIUNxYkUSJkSWEmDRx4gLJEyhGokSRYuSRy0F+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== goto-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrER2vGyirGSipLzStLTOnKzKnGyaxGSetFyOzDSChPz+/JS6jLzihLzudKTiZHTGVHzKZGSa1FymhEyqHLzm7MzKvMzmpLTqfIzSbFSevDx21ESGxDyOdBRKbKTe5MTq7MzivITCxFymrESC1DRyzDRuvBxeLBRSDNzy9KS+zGSizFyerEySxCRevBxWTLTi5Mzq9Mzq7FSKxDx+3Ex+zBxGZFR6hFSapGSqtGyyvDxeZGSKZEyGdBRKrBQ2ZBRKHDRaXEyGjFSanFSepDxejHSaXGyyLHS6RGyyTBxipAw2hAwuNER2fEyKlCxOhJy2hDSOHBRGdBQydAQqZERudBQ2dDRanFyKjIzCZFSiJBQybAQeTDRKTAwWNBRClDxqlFSGPAQCBAweTBQ+NAQOJAQGDAQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCg4SFhgABAgOHBAWCBgcICQoLDIUFDQUODxAREhMUFRaEBBeZGBkaGxwdHh8ggwUhIqcjJCUmJygpKoKyIiuZLC0uLx0wMb0ABTIiMzSZNR42NzA4yjk6Ozw8PT4/BQknQEFCgkNERUZDR0hJSktMTUFOgj1PUENRR1JKFlNUqlgZNOTKECxNsmjZwiVGkC5eBn35AsZKkzBixqR46IUMGUNlvFgx48XLGY8fDaE5k+YkykMwCfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 help-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBCSK7ASO9Bye9GTG/ITO/JzW/HTC/FS6/Bya/ARe3FS+/Jzi/LTm/Mzu/LTi/KTa/HzC/GSy/AR+/AQudGy+/MTq/Nzy/OT2/Lzm/KTi/ITK/Hy+/Fym/CSG/ARSzAQmZCyW9OTy/Pz+/Oz2/Dye/BR2/ARm/AQ2pPT+/Oz6/NTy/ESe/BR+/ARO3AQ+tAQWVAyW/HzK/NT2/DyW/ARa9ARC5AQ2rAQmhAyi/HzO/Jze/DSK/ARO7ARCzASa7HzS/HzG/ITG/CR2/AQ+zAQupAR6tDyu/Eyy/AQ+1AQaZASG/Fy2/CSe/ARC3AQytAQqlAQONBSO/Hyi3DRmzARmrARq5ARS3ARS5ARGzAQ2tAQmjARCpAQ6rAQ6tAQebAQaXAQqfAQqhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfFgACCgwABAoSIggMEBQYHCAkKiQALDA0ODxAREhMUiBUWFxgZGhscHR4fIIMhDyIjJA4jIyUhJicogwQPKSojK7MsLScuLzAAMTIzDiIrDgYcNCY1Njc4ADk6Fjs7DbMjPCc9PtYAPwgWBEBBQrND1ERF10ZHMghHSCyz4klFRUqCljBp0sSDh1k9nDx5AiXKIAFSJkz5NoLKExzHBlWxcuIKlixJtDzZosQhIRAUuHTxgqLIli+TBIEJIwYHmIwxcwryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== history-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSipLzO3JyutKy2tPz+/KTS5GyqxFSGpER2vLS+xPz6/PT2/Kze7Hy21FyavFyOzDSChOTy/GyyzEyWvDR6nEx6pFymhEyqHKSyvOzy/PT6/NTy/JTS5FyqzCyCrCRqlESGxDyOdAxKbKS+zLze7MTm9Gy21DSOtBRynAROfDRyzDRuvBxeLBRSDHSGlHy+3DyWvBx6rAxejBxGXCxqlER21BxexBxWTER+rEyexAxqlExWXEyC1CRevCxq1DRynBQ2ZFxaXBRKrBw+dBRKHCxepDRqjERulISufERGTOzq7Aw2hAwuNDRmzFSKxLzepITKTNzW3AwiVAxOtBxWvGSanJTKbFSiLLSutBxKpFSKPDReRCwmLAQCBAQiTAQqZBQ+NAQOJAQKFAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe9gACCAQIDgoeIhwQFBQYHCAmJhwoLCwwNDg8IEBGSDJUSDRMUFRYXGIgZGhsbHB0eHyAgISIjhyQlJiYGJygpKiArLC0ugi8wyCcxMjM0NTY3OMWCOTo6MR87Kjw9Nj400wA/QCkgMyNBBUI2Q0RFhz8rRkdISUpCSzxMQU2HN043bDyBEuWeFCFTElGpUoWFlStY7mXhIYmJFi1HtnAJcq+LF0lfwIAJ8+WLGC8oJQEYI4bMSZQfVco85CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= hotlistadd-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBERCBKSepJyenJyWnJyanJSWlJSOlJSSlIyKjIyGjISGhIR+hGRiZHx+fHx2fERGBHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVpICCOZGkGaGqSgTAMRLCOQTEY8SzWBHHIpRTKgED8hDtBoWBoHhKKxYIRaABqBYTh8IwyHI/qtdA7GBQJKYPxgFgDRKPC64hEwm9heuEQillTdVUNhFYsEQ5sfysBYA94On6LK4WFJH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= hotlistdel-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBERCBKSmpGRiZJSWlJyanIyKjIR+hHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ4EMhJq704681n+GAYSoFgnqgZDEBAFEbxxnOxtoeh77xxB4jgIYgYEn+i5IcFGDifUGhnSq1a/BEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== idea-16:actions actions16 16:photo:16 16:R0lGODlhEAARAIYAAPwCBPz+9PTynPz6dPz2XPz+5Pz+nPz+vPz+rPz+pPz65Pz+7Pz+/Pz63PzmVPzyjPz6fPz+1Pz27Pz61PTuhPz6pPzWPPzqrPz2jOzaNPz6nPzifPy2FPz2ZOzaZOy+DPzylPzaVPSeBPzOVPz2lPzqfOzOLOSiDPy6DOR+BPzilPzaXPzqhNSSBPS2DNySBOyGDOy2RPzWVPzeRPTGFOSuBLxyBPz23Nzi3OTGhPzSHLRuFLyKXPTi3Pz6/HRydLSytIyGjGRiZGxubMTGxISChFRSVMzGzFxeXFxaXJyenLy2vERGRHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABEAAAeZgACCg4SFhoeIAQIDBAMCAYgFBAYHBwgJBAqGCwQHDA0MBwkJDguFDxAREgwTFBUUFheFBBgRDAsMGRobHBuFHQ+jHgkfICEiI4UkJaMmCScOKCkqhQorLBofFS0uLzAShg0xMjM0NTYwN4g4OTo1Ozw9iAA+P0BAQUI+8wBDRAxFjPDrd4RBECQDkyhZUoTJQABGmjg0ZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= imagegallery-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPz6/PT29Pz2/PTy9Ozu7PTu9Ozq7Ozm7PwCBMS+xHRydISChIR+fIR+hKyqrKSutNTi9Lze9JTK7Hy+5Gy+7Fyu5Eyi3LSutLS+xOz6/OT6/Nzy/Lzq/Kze/IzW/ITO9GzG9LSurLzCxOT2/Mzu/FSa3LzCzPT6/HS67Lzi/MTq/ESCxBxqxMzGxHzC7FSm3NTu/Jze9CyK3Aw+tCRexKyutHSy3GSu3Gyu7Jza/AwWLCxirCxqzBQmZKyurMTGzHTC9GSq3PT+/Jy23Bw2ZAweTLSytJy2vEyazDyGxPz+/JzK9DR2zBxaxBQ2nJy2zDx+vJzG3GSezIy+7ESO3PT2/Ly2tGyetGSy5Gy25BRStBRSvLyytGSWtCx6zCyC1DSK1EyS3DyG1ESK1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAfPgACCAQIDAwQFBooGBwAICAkKC5MMDQyXmI8IDg8QEBEREhITFBUVFpoXGBkaAxscHR4fHyAgmiEiABsjIxwQJCUVs6kmJygpGyQqGSssIB+3LSkuLxkwKjEyMzQUmjUtNjc4JxkQOTo7PD0Cjz4/E0BBI0JDHEQsPEXsCEZHJUhJOCgRsCQJkyZOBjwK8QRKFCklpiypgKMEFSpVHlm5giVCFhZNtDTZokVkgUdcunj58kUGGCpfwoj5MkahJk2CqhQyJGDBzZ9AgwrV5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= key_enter2-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrER2vMTWvLTSnKzKnHSizGSetFyOzDSChLTerMz2lMT2fKTibHTGVGSa1FymhEyqHGSyfOT2zPT65OT+tLzyhIzSbFSevDx+3ESGvKT+NCx23FymnMTqrOz23IzKzFyqrESG3ITmBFyaBFSW1HzCpNTyxOz27Mzq/Gyy3FyirOT+xKz+NIzmBCxOBOz+xLT+TEyOpHy6vLTmvJTG7GSi5OT+vLT+PBQyBLT+RJT+BFyOvHSqvJTOjLz+RITeBBQiRAwiHDxyBHTKBJz+FHzeBFyCtHzmBFSSBAQaRAwmRBwyBDxuBHTGBIzuBFSGBAQeTIz+BBQyLBQqXAwuFAQWNAQGDAQCBAQWRAQKHAQKFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgACCg4SFhgABAgOHhAQFBgcICQqMCwwNDg8PEBEShhMUFRYXGBkaGxQchB0eHyAVFCEiIxYcJCWDHSYnKCkqKywtLi8lMIMxMjM0NTY3ODm3MDqCMTs8Lz0+Py1AQcVCQ4JERTxGR0g4HElKMEtM4QBNTk88PMJQUTBMUlKEOk5FpuRIko8Kkyr9CMkrEoSdFSlVrmDJUkgHkWJDrmjZkqWjoSYwJnLp6JGRSQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== key_enter-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy+THS6NFyqPIzGTOT29FyuLJzKTLzyhGyWPKTSVJzOTLT2RMz2jPT6/Hy6RISqVNTutOT6xOz6zLT+NLz6RMz6hNzyxLTqXMT2XMT6ZKT2LLT2VMT2hHS2PFSCLFymJHzCNITKNIzSNIzaLJTaRJTaXKTehHzGVDRuJBxuFDR2FCyCHDyCHFSyHGS2LDyKHCxiJBRiJBRqHDSWHBxWLBRaNBxuRBRiPBx2TAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ3QIBwGBgaj0PBAMkEEAqG5vGAKAiYCcVBsVAwGo4HEhKRSCYSSsVyuRoTmIxGvmFwOhGP8QMKhUQjJCMlJicoS0IpKissLSAuIC8vLjBGMTIzKiwsNJ0sKkc1MqI1MYwqNVJCNSoyNqpCNjI3sEI4ObVCuLmwfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== locationbar_erase-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBHSmtGSipPz+/AwKDMTm9BQSFKzi7Lzm7Mzu9OTy/GyipNTu/Fx+jFSanGyuvGy6vHS2xDRaXEyGlFSerDxaXDxibER2fERudDxOXDRKTAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVTICCOZGmeZCCgpjCsJHEGxQvIt2iQwoG8A5lslzokFINFkEDkFRAMxoswMFhxgIbjAYlIglaTZOKgVIK5pshymVhyAKJagpGUsKSMhsXv+/8nfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== lock1-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIcAAPwCBCTyhAzabATSbATCZAS6bASmXASaZASOZASObASGbASGfASCfFz2pMz25Mz65MT23MT25LTu3LTy3Kzu3Kzq3Jzm1JTm3Hze1FzWzASGjCzyjKz2zAS2VAS2TBTCXDzKdFyidFySfGyWhESidDTSjBzalCTepBzarAyytAR6nBTqfLz21AS+TAS6TGyafPz+/OTi5OTe5BzGjBzWrCTazBS6rARynBTifKzy3ATCTFySbISChGxqbFxWXGxubLy+vDRyXAzGVIyOjHRydCR2TBy2dKSipDxiVBSanCTGxAyupARylATCdKTu1JSSlNTO1GRmZERSTJyWnBSKjCS2vARmhASubJTq1JSOlKyqrLy2vKymrJyanIR+hHx6fBSqrAyinARedASibIzmzAzOZLSutNTW1KSepCSSrAROZHzmzIyKjJyenMzGzMTCxKSmpIyGjGRqbERKVByCnARGTASKbHTm1BTWfMzOzLSytERGRBx2lGTm1Ozm7LS2tHx+fBxulBR6fARCTASCdGxmbGRiZBxmjBRiXAQ+RAR6bETm1CzmxEyqnFxubFRSVExGTBxWdAxORASShBTOpAy+lBS2lAyulBSahBR6bAxuXARWXARyfARmdARKVARCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAj/AAEACCBgAIECBg4gSKBgAQOBABo4eAAhgoQJFCpYuIAhgwYAGzh08PABRAgRI0iUMHECRQoVK1h4aOHiBQwYMWSImEGjho0bOHK40LEDBo8ePn4ACWKjRoobAyi0EDJEBpEiRnwcQZJEyRImTZxMfQIlCoITUqZIoVJliZUrWIRkeaJlC5cuWbx88QEmjJgxZMo8MXMGhgwoaLz88JEmiRoEawawaeMGxhs4ceT4mENHQx07d/DwOPIGRh49T7xE2cPHs4I+otlo8fOnDaAoPvYEEjSIUB8TX9h0QTzlRyFDUg4hSqRoEaNGjqL8MOTjEaQ5kcRISgRgEqVKli5hG1KQSZMmRIg2cReoQQMnTp02qfE06FOi9X4CAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 lock-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBLSytMTCxKSepNTS1HRydKyqrKSipISChLy6vJyWnOTi5FRWVJSSlOzu7Ozm7MzKzIyGjGReZNza3GxqbPz+/FxaXIyKjPTu9JyanIR+hPz6/LSutDQ2NAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOZGkCgSAMJykQhBAULWAciGjkbYKLs5pCcSAsBAXGqYBoEBwPSESybEwmxwBCaaI0KpUHwVCwLC+YyvGQPHkJakGGQjVpLoLNwkfhmhAcCxMJGRIdNREBARkahzWPkCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mag-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSapLTGzLTO3IymrKSutPT6/Pz+/Nzy/KTS5GyqxEyCnKy2vKzi9Hy21FyavKyurPT+/Kzu/GSy1ESSvDR6pDRSZJzq9CyCrBRynDRmhNz6/HTS7DSaxBx2rBxihJSyvLTe7OT+/NTy/ITa7FSuzCySvAxmlAROfBRKbFxqdITG3HzC3HS+3ARejBxGXBQyRER2jESaxBx6pBRqnFRaXCxqlARGbARGZCRGVKSmpCxWbDxedCQuPERCRFxaXGReZDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeEgACCAAECAwSDiYkFBgcICQoLioMMB5YHDQ4PkooQlwcREhMUFRaKAZ8HFxMYGRqKA42WGxwdHh8fiiAhCCIjJCUmJygpiiorLCwtJR0ZLi8wkzEdHTIUMzQoNZOCHxk2Ljc4OTrb3Dk7PDk9PjUQP9yTPkAQ5vGD8/X3ifNB+/8A/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mail_forward-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPT29Pz2/PTq9Ozq7Ozi7Nza3OTa5NTO1KymrFRSVKSepGxqbHRudLxa/KQC/NzS3MyK/MRe/OTi5JyanOTe5JxqNJRmLJxuNMzKzASOBOzGhPzWnPzepPzirJSOlLz+vASSBHRSJOS6fPTKlPzapJyWnBT+FHxSJNSqZOzChAQCBKSipATyBFz+XMz+zNSiZNyubATSBCz+LDT+NOy+hAS+BATaBATGBARmBMSORMyaVASiBASmBARiBLyCPLR6PIxeLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe+gACCg4SFAAECiIqJjIoAAgMDBJEFlQYFBgcICQoBCwwNC5WYBwYODxALCgKTA6OXmRESm6sJDAkTlaUQvLwUq6OYFQYWFxcYFxmqAbYMGgcMFhscHR4dFh/AmCAhByIjJBwlHhcmnaUGJ9woKSobKxwY2QgsLBQtLi8hMDHuFibZACgYKGMGjRca+I2ocWEgIRs3cOTQsSNGjBEjMBTi0cOHiB86MCDTWEhDDgAigIAMaQiAj0EiYga5MMhPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mail_generic-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBPT29Pz2/PTq9Ozq7Ozi7OTe5OTa5NzS3LSytIyKjKymrGRmZHRudKSepLxa/KwC/NTS1NSK/KSmpGxqbJSOlNza3NTO1NTK1KSapGReZMzKzJyanFRSVOTi5MTCxNzW3MzCzJyWnLy2vJSKlJSSlHx+fHx2fGRiZFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaOQIBwSCwaj8jkMCBgOptQplAwGBCqBUPhYDAgEgpAYMFoOLJbwwMSIQOo1iyBe5A8DhOKmFxJZA0WCBcIEQ4MbwVodIQRGBEZGnsUDQwGFBQOFxgYGxwdbx4FFgZcEQcfERsRFZ8BXCAHhI4bISEfIp8XIw4OIhW/JL8lGSSfABUmJw2UKCkdz9BK0tN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mail_get-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOz2/Mzm9MTi7MTa5Pz2/Pz+/KTW7HSuzFyavPT29Ozq7Oz+/Kzm9HSyzOTa5Nza3NzS3KSepFRSVKzq/HS21ESStDx+pKwC/NTS1KymrJzq/FSuzCyCtCRulLxa/PT6/OT+/HTS7EymzBxypBxijNzW3NTO1LTe7NTy/Mz6/CyOtAxqnAxSdNTK1JyWnKzS3IzK5HzC3HzC5HS+3Fyy1DSWvBx6rARWhAw2VCRunMzKzOzi7EyexDyWxARijFxaXIyKjCRafARCZERGRMzCzMTCxKSapER6lExufLSutFRWVFxWXFxeXERGTExGTIR+hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe2gACCg4SFhQECAwMEhgAFjwEGBgEHCAmPmAAKC5GSDA0OCQkPEBESEwWdkgYUFRYXCRgZGqgCq5IbHB0eFx+mtSCrISIjJCUeJienAQMoKQEqIhwrLC0kJy4vqDAxMjM0NTY3ODk6LjvaBTwcPT49Kzc/OUAuJydBqA88HcZCQzlENAApYkTbDg0SjnRAkgRJAiJAlAB5gQ/AhItLLk5gMgGikiYXGxFyMkHJEpGFnjSBglKkn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mail_replyall-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBPT29Pz2/Ozq7JxqNJRmLJxuNOzi7Nza3OTa5NTS1KymrFRSVOzGjPzWnPzapPzirPzerLxa/KQC/NzS3KSipHxWJOSydPTOlPTWnMyK/MRe/HxSJNSmZOy+hAQCBJyanNzW3MzKzNTK1AxOBBSCBPzepBy2BCS6BOS2dOS+hCTaBHRSJNyqbPTKjBSaBMTCxCT2BMyiXJSOlCTGBBz+BMSWVNSiXIReJDx+NMSKRMyaVKz+nLyGPKx6NOT+5CH5BAEAAAAALAAAAAAQABAAAAa1QIBwSCwCAgKkMslUAgQDQsFQIBwOCGxCsWAICg3HAxIpIBIIyYRS8VoumMzYgE5oNlxGgNPxND4OZhSDChQgXgZUiiEIFAgiIyQkJWAZJpdVhZAiJCcoFilxYwUqBJwkkSsnLC0qLh8ZU5EvJDAkMScWMhcqDVUzkzSSJDWrNjcXFw04OSUrMTXRxRY6Ox3JHgUoPDwn3t4cPTo+iQVCJz8nRBY+PT025kPeRRwsODjxRkJ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mail_reply-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPT29Pz2/PTq9Ozq7Ozi7Nza3OTa5NTS1KymrFRSVKSipGxqbHRudLxa/KQC/NzS3MyK/MRe/JyanJRqLJxqNJRmLJxuNMzKzNTK1AxOBBSCBOzGjPzWnPzepPzirBy2BCS6BHxWLOS2dPTOlBROBCTaBHRSJNSmZOy+hAQCBBSaBMTCxCT2BNSiXOS2fOS+hJSOlCTGBBz+BMSWVOSydOS+fDx+NHxWJLyGPMyaVKz+nHxSJMSSTOT+5Kx6NIReJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfGgACCg4SFAAECiIqJjIoAAgMDBJEFlQYFBgcICQoCCwwNC5WYBwYODxALnZEEo5eZERKbCgEJDKKVpRC7CBATnRQVFhcWBgYQCAYYGRoaGxYcHR4eHxYNu8sYGiAhIiMkHR0fF8kYJRrMJiAnKCkcKh0WGcwrGiwaLSAiLi8wHBYxYjiT0UzDjHU0XNSwkcLCjQ0mWsyYeBBHDh0oatRoGGLHDhAgQfLI0eOCSQuCQPgAQQjHjxwkUQ4CWYgHDyBALhgi5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mail_replylist-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBPT29Pz2/PTq9Ozu7Ozi7Nza3OTa5NTS1KymrFRSVKSipGxqbHRudLxa/KQC/NzS3JyanMyK/MRe/KyqrOTm5NTK1OTe5NTO1MTGxMS+xLSytAxOBBSCBNzW3Pz+/MzKzBy2BCS6BHx+fHx6fIR+hHx2fPTy9CTaBBSaBCT2BCTGBBz+BLy2rPz6/Ozq7Ozm7Dx+NKz+nNTW1Nze3MTCxIyKjOT+5Ly+vLSutJSOlAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAawQIBwSCwCAgKkMslUAgSDAWFQqBYM1wMioRAsGI2F1XAwOB6QSDdqvWYlEwil+6VUqmWI3pLuXgoYFhkaG3oGFhYcHB0BHh+PHwIbCBAgFiAcISICFiMkJSYnFIeKGBwoIQEgkFILiSkcGhwqIQIZoCYNBRGLK4ocLCEtFi4CLzAGMR0oKizOwQAYuQ0MCBEhMjIh29sAMwQwNAg1NgAhNyFFGRY4ORE6JELdRvRGfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mail_send-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPz2/PT29Ozq7PTq9Ozi7OTa5Nza3NzS3KSipFROVKyirGxqbHy2hLxa/KwC/NTS1FRSVISyhMyK/HRudIS6jPz+/NTO1JzGlOTe5Hy2jNTK1MzKzJyWnIS2jOTy5Ozy7Nzy3FyOZJTOhMzGzFyKXIzKhKTSnLzevNTm1JSSlER2TFyWXMS+xGymZGyyZHS6dHzCfJTKlFSiZDxmVISKhMTCxDRiRIyKjERuTFSSXFRiXISChJSOlJyanERCRExKTDQ2NEyCXDw6PFxWXFRWVDxyVBwmJERmVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhoeEAQKKjIuOjAACAwQEAwMFmAaaBwgJCgELDAwLBQ0FBgcFDg8QCxEBlJelEgeoEw6dnwkUpAUVFhUXCMMQng0YGRoNygIWGhAbHBsdCh4WDBIfICAhzRUcEBwdESIjJCUmJycoKSApEtIqCissLSsuLzAxMjM0NTY2VES4cQMHwRw6Ysy4sYNHDx84FAD4ASSIRSELhwCJQARIkQiGjBg5gqgQkpIoDfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 misc-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTe5Nze3MTGxOTm5MzGzMS+xKSepIyKjOzm7Nza3NTW1PTu9ISChFxaXDw6PNTS1MzOzLy2vKymrHRudCQiJKyqrJyanCwuLHx6fJyWnKSipERGRGRmZHRydExGTExOTDw2PDw+PFxWXFROVFRWVHx2fGxmbLSytJSWlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaJQIBwSCwaAQHB4DgkCJKFggFwQBQTigUhwVA2HA8jhJuISCaUSsUYSBQsF4oDjCEuJBJLRrNBODgcDx1DcR5zCAUSHh8gFQ8cQhwVIRwiHRcXDiMjICQORBgcJBwgICUdHRRGFR8eJicdGR4eVkWMsbIIDRcotUMOqCcgFKobG0wAuinIzM3IfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== move-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz2/GRmZNTW1ISChLy2vLSytLS2tGxmbPT29NzW3AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAREEMhJq5VBXBsG0Rs2FMYXTge4BZOhqiKqmiJ5GIVg7CUoECmBUIgQFAaJya+lGrAoKtfkucmdJAkFjhbKck8JxHXsjwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== news-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLy2vLS2tMS+xPTy9Pz2/PTu9JSSlHRudNTO1GRmZGxubMTCxIyKjPz+/Hx6fNTS1OTe5ISChHRydOzq7Hx+fHR2dMzKzNza3Hx2fLSytJSOlOzm7GReZPz6/FxaXOTi5KSmpJyanIR+hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAafQIBwSCwKA4JBAKlkFgeEKKFgKEwNh8AwQEAkEIoFA9FwPAgNIXQBWUQkE8eEIHFI1ASHfu8gUCoEFkcFF4WGFwQYEhQZeHwOVhQYDxgKgxkaGRsFD50QEm14DwwHBAYUHBgXDxAdgw4ekRmdDBIXH3gephQgERgQAQ8DuAABkr8JDAwCGiESAsQiDyOd1NTTDyHEQiIf3t/g20bjAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= news_subscribe-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLy+vLSytLy2vPz2/PTu9PT29JSOlHRudNTO1GxubGRmZHR2dIyKjPz+/Hx6fMzKzOTe5ISChIR+hNza3Ozm7Lz+fLS2tNTS1MT+fHzmBMTCxKT+ROTm5HziBFSmBCxWBPz6/PTy9FxaXNzW3Iz+FJyanKymrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAadQIBwSCwKA4LAAKlkFgeEQnRqMBQOgWHAgEgoFowAouF4GBpCqAKCiEgQDoRB4pgcDY683mE1M9IEEIKDEAUUExVaBXt8BhUUDw4Wdw8XkQQPmRgOGRppBQ8bDhwOFR0RnB4fRwR5HBqkkZ0fIGkGISIgHx6kHKogI0ePJBi6GiUatALBACYPE88Pur8PJ8xCJiPaI7rA20ZEtUV+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 news_unsubscribe-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Ly+vLS2tLy2vLSytPz2/PT29PTu9JSOlGxubNTO1HRudGRmZMTCxIyKjPz6/IR+hISGhOTe5Pz+/HRydOzm7Hx6fMzGzISChHx2fNzW3PzSzPzKxNTS1GxqbPTy9JSSlPyGfOwGBPwyFPw6HPxKLNTW1FxaXPza1PwGBGRiZPwSBPxGLPwOBPwiDPxeRJyanPxiVPwqBPxCJKymrORmXMwWHMQSFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAasQIBwSCwKA4LBIEAIKJPFQcFgOBSshiliMAwcEooFY9FYOB4QQ0QoBSckkcWEYoA81oCBYcLvTwwVFgYURwYXh4gXBxIYFRlse34FDxUaFhIMbAUZBBYIBRYbHBwYHR5HHxYXIB8HISIjJCUmJ5oTD1QoKRMjvCkqhVMHFRwpK7wsLbV5FRIaCgocLhMsEy8pyzAWENsQEDEyMy8rNMtCICfp6TU2N+pG8ER+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 next-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQGBLTStPz6/MzizOTy5Pz+/GyybJzKnKTOpOz27EySTGymbHSqdEx6TFyWXFyOXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU7ICCOZGmOQaqeqJqSAnsOcesGI0HLJFEYNZfpgEgoFjwAo8FwiG4v0ePhfEJHkGoSoLXitmBbNEwm+UMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== openterm1-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPz6/OTu5Nzq5MTezLTSvLTWvKzSvJzKrKTKtJzGrJTCrIy6pERyXJTCpGR+bJzCrHyujGyqhGyejGSmfFyifFSadEyCbIy+pDxeXDReVGyqjFyafFSOdERmVKTOtDxqXDRmVCxSVDRSVCxSPCxSTMzOzMTGxLS6tKy2tJyqpJyenISSjHyOhGyCdGR2bNTW1Pz+/MTKzFR2ZLSytKyurJyinHSOfFRyZFSWdJSinISWjHSOhKTKrLzCvLzaxKSupERqVDxeTFyefKzStERiVMzm1DRWVIy2nJzKtMzi1Oz29AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCg4SFhoeEAQIDBAQFBgcHCAkKCwwMDQYODxAREhMUFRajFxgWGQYSGgkRGxIVohwdHg4cGh8XICAhIRoaIiMkIiUiwgUNJiYnKCkqKywtLi8YHSIFIDAxMjM0NTYsNy44HzkiBtgxJjMoKjo7PA84PRzWGsk+7M838Ro/5QYaTuAD8g0ejiBCCAwRQUREimb64hURQsKIhSMGREzYGAEJhiQJDhBRsoTeAREoU6YkhlIYopcwC/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 openterm-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBMzKzLy6vLSytKSipJyanJyWnHyifGyibFSOVFRyVFRiVFROVFRWVFReVKyqrGyCbKzOrMTexFyWXERmRERWRDxSPDw+PFxaXGRmZHSudEx+TDQyNDxOPCw6LCQmJExGTJSOlKymrERORDxaPCxGLCQiJISChBQaFHRydGxmbJyenHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ+QIBwSCwaj8hkMSAQDAiEgkEqJQoOiIRisWA0GA4D8QGJSCYKSsVywYiHj8xBk9ikK5zGW0hoUBYVFR0XHh8gIUQiI2kUJBYlHiYgJ2NfIBccHygoHxyUcCkpKipdlxyeVg8rBiEnJyyhKilHBgQnKQwgSiEPtw26SsHCQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= openterm_old-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBPz+/Pz6/PTy9Ozq7Ozm7HRydDQyNDw2PEQ+RERCRExKTFxWXFxaXKymrISChDQ2NIyOjFROVCQmJAwODAQCBNze3JSOlJz+nGz+bAT+BASGBATOBASeBCwqLExGTIyKjFRSVHx2fAzqDCy+LBwaHGRmZBQSFATaBAS2BCSCJCRiJPTu9GxubOTm5IR+hHRudGRiZJyanGxmbOTi5GxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAasQIBwSCwCAsgkUjAYEAgFw/GASCgWjIZW63gcjpBH5GFoSCATSsXiPSoumIxmw+ls1IWH5/h5gMgNCwdpFQRtASEiGBojJCMdJWoCbQJaJloLEB4nFRWTX5ULGigpKiscG50BBhAALAwQEAeDkZ0Vq18sDRO8JSdqtgEtXy4vFgUEAwJKSCZfDi8P0dHSBjAmMQxfswcyLTNmHx+y3EQ0MiAvNQ0hEl9G8EZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 player_eject-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLTGlPz+/OTu1NTetLzOjLTGhJy2ZExqPJS2fLTClJyqfISWXHSKXFx2RFR2RDxeNMzenNTqpMTelHySVLzWjMTWlKTCdGx+PKS+dHyeTERmFIyqXMzWtISiTJSuZJSuXHSSRFx+JDRSDGyOPExuHGSCNDReBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZRQIBwSCwaj8ikcgkICAaEQsFgOCCMCcWC0XA8HgiIMsJgAiSCCWVZEUQsF0wyI7gYLgfN5sjpeD4gHB4hIiNFJCUlJiYkiyUbJ4Zmk5SVR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= player_end-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBESSPBRuFGSuXHy2jJzGnCx2JLTWtHzGfPz+/CyCLFyiVJTWlHSedNzu1ESKPLTurLTarITGfKTinKTenFyKXKTSlJTWjFyWXER2TJTOjFSOTIzKhER+PIzGfAxiDCRqJDxqRHS6bAxSBDxiRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZSQIBwSCwaj8gA8igYEAkFpOGAGBYSSMUiwRA2HMjHAJGAABqR8EAySVAqFjXiMsFkNNLFeAPIcKQBCx1CGR5IHwogQyEihyNEJCRIj0uVlpd+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 player_pause-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLze3JzOzGSOjLTe3Pz6/PT29EyCfPT2/KzW1Mzq7Ex6dMTq5KTW1MTm5DRqZDRmZOTy7JTOxBxWVOTy9IzGxHS6tCRWVFSqpBxWTHTCvHS2rDyajBxSTGSupFSalCx6dERybAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZiQIBwSCwaj8dAQDAQKplGQsFwEEoR1WKioFgItwxvsYFwPL4Gs1FgCECEbPc6IpkIJZS6saKwXIR8fkYWDRgZQhoChkYbGhwdQo2PRh4fIJAAlZdGHyEdmJ2fSKOkpaYAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== player_start-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBESSPJTGlHy2jGSqXBxyHPz+/JzGlHzCdLTWtCR2JNTu1HyqfJTWjFSiTDSCNLzetGyabKzqpJzOjFyOZKTelKTenITKhGSuZESKPER+PFySVKTinJzalIzGfER2TGy2ZIzKhDRiRCRqJCx+JAxiDAxSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZZQIBwSCwaj8hjACkYEAkFpOEwRCQUyAVD2DA4HkhIBCAxIAjg44RSMVgumAxyotlwOghM2uj5ADYIIF9IIX4AGg4BUUcgIkMjJCVIIo5DJpJJRSaZnJ1DfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== player_stop-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLzS5LTK3KzG3KTC1Jy6zJS2zIyyxIyuxHyetGyClKzK1Pz2/PT29Ozu9FRufKzG1NTi7Mze7MTa7MTW5LTO3GyetJy+zPT2/GyivFyOrDxebJy+1GyavEyCpCxSbJS2xOTq9KTG3IyyzHyivEyKrER2lBxGXIy21ISuxGySrFSKrER+nCxihCRKZER+pDx6nDRqhGyatDxylDRujCxadFSKpEx6jERyjDxqhCRSbFyGnERidCRKXAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaDQIBwSCwaj8aAYEAgFAwHREJRXDAaV4ZjO3gUIYxIRDKhVAoWL/GCCUgCcEJGsylyHBO4gIDoeD5FICEiIhwFIyQlJidFIxQoKCkZKissLS5FJBwZcyUvMDEtjEQkGTIaJSwzNDE1o0MqNjc4OS06oh+vQjs8Gx89J8HCSMTFxscAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== previous-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQGBLTStPT69NTm1Pz6/OTy5MTixFSOVKzSrJzKnGyybEx6TGSiZHSudFyaXFSWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU5ICCOZDkGaGqSqbq+pXC2KCkMsD0QZisKBcMhB0AMEorFjCZiNByNpa/5gBBHDMTKhb3CmN7w1R8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= queue-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJyanJyenKSepGxubJyWnPTy9PT29LS2tLy6vGRmZPz2/Pz6/HSuNPz+/GSqLISqPFxaXGyqNHRudFRWVByGFFSaJGSmLFyiJOz+hOTi5IyKjGxqbASOJPT6zPz+1Pz+zNT6PNzW3Ly2vNTyNMTyNMz2LMz2POT6jMTCxLSytJS2BJy2BLTaFARWHMzKzARmHISChIyGjKSipLy+vJSSlOTe5ARaHISGhNTO1KyurJSWlKyqrMzOzMTGxOzm7LSutKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfagAABAgEDg4UEAIqLAAUGB48GBggJCgEKjAELDA0MDg4JoAQJiYoBBw4PEAsOCJ8JEZWKBZsSDhAOAwQTBBSgERUWFhcYGbcHGggbERMcER0eHx4gIcYQGiIjFAnLHSQlJCYnISgeECIpESIqzyss7i0nLC4BLwkUGukwLvwu7y4xZMxgp4FGBAAUamxwsQJgjBop2NkYcdDSDBc3cMQIkCIHuxc6DtbQoIHehh0dc4R8wePgKWQBIPbI4aMljwEuf9hIUUNFghEqgAShEKEogAkUkiotynSRn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== redo-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBGyipPT6/Lzm7Pz+/KTe5Kzi7OT2/LTe5NTu9Ex6fFSanGSqrGy6xGSutDxaXDxibEyGjFSapEx6hDxeZERudDRKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU8ICCOZGmeKBAEaRkIbCsGAxG3QTHAcmAMBxsOMUgkhCjFgtFwPFqQiGTxbD0mEYoM8KhUZRbLdkwuj/whACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= reload-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCRSLCxeNCxaLCxWNERyRITOjITWnITSnGzKfGS2bFSiZFyKZFyybHSafGS6dGS2dMTmxDRqPEyGVFyqZKzivNzy5Pz+/DR6PFSeZFSaXJTapDRyPFy2bFyqbJTWnGSydFyibCxmNDSGRCxSNITSlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ9QIBwSCwOA4JBYBkgFIyAgOGAMCQUCwZUgFB4FY2GAzowPIgFSMPIXQsLDUPEPZSYhROKoWK5uJEYBg0LGRMTGgZebgIaCRt9CkIcBx1FAR4fEZFCEgh0RyAhRCJdUCMBJAMCIhwln0QBHQkJBggHm0YjYQ0dilC/wMFCfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== remove1-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDx23EyC3DRq3CRWtCQ+hFSO3Gyi5Hyq7FyW3CRWvBQ6hIy27KTG9LTO9FyW5CROrBwydER+1KTG7Pz+/GSCtMze/BxOrAwaNEx+3ISu7GyGtDRWpAwiTDx+3ERmrBQqXKzG9DRepBxGlBw+jBQuZCRaxBQmVAwSHBQ2dAwmVBQaPAwOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ8QIBwSCwaj0hAQBAYEApJwwGBSAQUi6OA0XA0GI8BJFKUICaUiqVBuWAxxIzGQaFs6hxsh+g5W+oUHx5YIEQDBgwhgCIDFwt7QwoBD3UfdSMkJXBDJCYDFBwCnwsLJyhFKW4KChcjKSqbqKSkJSCxRhgdIB0rLEm/wEd+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 remove-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Oy2TPy2NPymJPyaFOyeNOy+ZPzOXPzGTPzKVPyqJPyOFMx+RPzafPzqpPzefPzCRPx+FMRqZPzWbPzqvPz25PzqtPzWZORKPPymNPz+/PzmtPyCFNxGNMw+dPySHPy6PPzehPyeHPxuFNQyPNQCZPyKDPRmJNQiTLwCZPy6NORGNNwGdKwCXOR2RNQWVLQCZJQiXPxyHPRiJLQ+ZNw2RNQeRJQWXLQSbKQaZKwGZAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQIBwSCwaA4IBoWAcGg6IQ0KgWDCOiIaj8YAICBFJUTChVCiWCzWCIWYgD41mk5ZzOp7hB5QIyRtyIiMkJUMLAwIQCHIaBCYnKClDEQQDKgKMCyMrLC1DLiMmBIFyHS8wMUQrJ3IyIzNyKTBFNCgkNbc2JTAtN0YxOCnCsqhNQjktOi2pxs3Ozn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= revert-16:actions actions16 16:photo:16 16:R0lGODlhDwAQAIYAAKSepJyanJyenHRudPwCBASeBPT29Pz+/Ly6vMTCxASWBGT6ZPTy9Ly2vBz+HASKBAR+BASCBBSOFPz2/JT+lEz2TATyBIT+hLz+vASqBATOBKT+pPTu9OTm5AT+BNzW3ASiHATKBASGBOzq7OTi5ASmBERGRMzOzLSutKSipLSytLy+vGRmZExGTNza3FRWVMzGzNTS1ISChIR+hHR2dGRiZGxubFxaXISGhHx6fNTW1FRSVDw+PCwqLGxqbKyqrExKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAAPABAAAAe9gAABAgGCAwQFBIqLAQYHjwgJCguLiwIMjwcNBQsODxAQERIEAROZDxQVFgsXGAcQBACYjxMZGhYZuRuwjRMTDBwdtooZHhEEl78MHyAgGc0ZISKkBhwjJB2ZjxklCiay1yQkBycoKSorBywtpeIu49qPLyYCHS4wCTEAMjM0AzUDTJiw8eLGjRcxcOTQMWJCjB08WlQioCLHixE7RsAw0UNiJQA2fHD4QSIBjx4mJhJoAaSFS5cmPKqcaScQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= run-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMzOzBS2LASeFASiFBy+NHRydGyipJS6lJTqpJzypKT6rJz6rKTOpPT6/NTW1Ozu7Pz6/Pz+/GxqbLzm7GyirDw2PFRWVHx6fExGTFxaXNTO1GRiZKzi7NTS1FxeXOT2/ERGRLTe5MTm7NTu9Nza3PTy9Ly2vEx6fFSanGSqrGy6xGSutDxeZHR2dGxubExOTDxibEyGjFSapGxmbDw6PDxaXJyanMS+xOzm7KyurFRSVERudLS2tCQiJPTu9Nze3MzKzDQyNDRKTGRmZMzGzFROVISChOTm5MTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe8gACCg4SFgwECAwSKjIsFBoIHBwgJCgsMl5cMDZAABw4HDxAREqWmDxORFBEVFgYXGBkYGhIbHJEdFA4VHqOmtR+4FCASFRkGIbESARqRIiMUJMUlJqYnGYIoKSorLC0aEwYuL+EwgjEyMzMtGRcaNBwcEzQ1gjYoMjYZNzg5Jjk6dnyoB8AGD301evjg8ANIkAwahAgaMkSDhgwPfBDJAaRIBiMWBh3hoIEDkh//PCSpUUOioZcwYwryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== showmenu-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHRydIyGjHx+fHx6fHRudGRmZISChMTCxLy2vKyurKSmpKSepJyWnJSWlIyOjFxeXKymrJSSlIR+hFxWXGRiZFRSVExKTERCRDxqFEx+HEyKHFSOHFSeHGSyJGSmJFyaLFyaJGy6LITSRJzeXNTytHTGLJTeVLTqhNz2zFSSJJTeXOT21AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZoQIBwSCwaj8WAYLAcEALQQsFgEB4QiERCoVgwGo7HAyIcRBgMh0QgmAygBorQUIHYLZSLBXPB+JGAgUgZGRobHB0eHyAhG0aFHyIjJCQlIIMdJicoKSqBGR4rKY6CGSyegkKkqaysfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== spellcheck-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBOTi5MT+fHTiBKz+RFyqBER+BCxSBFSmBHziBHzmBJT+FAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARKEMhJqwwY4CAuvx33iWGpCSPaTZuImWyZfvE5m/PrdYPlAwOCr1AJGiwFwmFiRFQQCYUSkDQ4LdAFgUGw/gBQqfcLTozJ4OvEHwEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== sphere-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNzW3MzKzMS+xLy2vKSipNTS1Nza3MTCxLy6vLSutJyenJSSlHx6fJSOlKyqrJyWnIyGjHRudISChOzm7Ozu7OTm5GRiZFRWVPz+/KSepHx2fExOTIyKjDQ2NExKTEQ+RMzGzLSytJyanGReZERCRKymrFxWXCwqLIR+hGxmbHRydExGTFRSVDw+PCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAatQIAQEBAIBoTCcAkwHBCIhGLBaDiYTudBkHhAIpLJ8mCgVCwGxKMwaVwwwgDCUslUngkNY3PhxAUGdBRpChodEm8eAAIIBgFkXF5gFx8gAAlRCCFRIiNVEiQliggiJiIEIg8aEBOIGKKXBR0aI3oMbRcnHB4oQmwdDh0RKRsqJBwlvUIjEhvNEq7IKMpCKxcqFyQnJyzJ1EMcLRzIorwuTEMfoigvICXv6PFMfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== start-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy2hHy2jPz+/JTGlMzqxJzGlMzmxLzmtPT69Nzy1ISyhIzOhER2TLTarKzapJzSlJTOhGSSZHS6bDxqREx+VKTOrJzOnKTOnITGhIzKhDxiRHS2dHTCfFyeZDxiTFSmZER6TDxyXDxiXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZUQIBwSCwaj8hiIKkUMIeBgfNIWAKiBUFAoCUODNfBATEYJBQLIqMRPTgekHhEQpxQABXLBZPRTCYNRBsbQhUcHR6Dg0kfICFPQxsikEMjlJeYkH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= stop-16:actions actions16 16:photo:16 16:R0lGODlhDwAQAIYAAASC/KRWTKxWTJxKRJxSTIxKRLRORNRuZNxmVMReVJRGRHxGRMxyZOxiTOxONPxSNNRKNNReTKQ+NJxaXKxybORaPOxGJPROLPxGHNRCJMRKPJQ6NIRGRPxmRPx+XOw+HIQ+NPz+/LQ+LHw6NPxWLPyGbIQyJKReXNR6dORiTMROPIRCPHxaXLRqZJxGPGxKTGwuLMyGfGwmJIxWVFw2NFQyNDwaFEw2PHxaVFw+PEQyNDQuNGRmZKyqrGReZExKTFxaXGRiZJSOlIR+hDw6PCwuLDw+PFROVDQyNFQ+RGxmbGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAeogACCggECAwQFg4qCBgcICQYKC4sACQwNDg8QERIDExSKDBUWFxcYGRobHJQOFx0eFx+pIJSlHiEeHyIbI5QZFyQlFw4SJr2KJygpKRUqCQMrLKCDFC0GEiomLgUjL5QUMCsxMjIzNDSULzU27Dc4NzfpODQ2NTg5OjuLPD0+Pj0/gAD5EUSIIiFDiBRZaISHkSOUhgAxgiTJDx9IKA1SsgQJkiCL7AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= stop_old-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/PyajPSajPyOhOw2LNQWHNwqHNwmBOw+HPReROyKfNwqJMQCBNQSBOwmBPwqBPRSNOQuLMwKFOwqBMwuNNw6NOxGJOROLPQuBPxGJOwyDIQiJPSupPzSzPzKxPyejPy+tPxuXPze1PzGvIwiLORiROxONPzCvPx6bPzCtPy6tPRiVPQyFPyahPzu7PxiTORGHPyqnPxuVPQ+JPQyDPw+HPw2DPxmVPxyXPx2ZOxGPPx2VPQqBPw+LPxSPPxmRPROPJwuNORaPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAevgACCg4SFhgECiIiGgwMEBQUGBwgJjAoLDAwNDQcODxCFAxESmg0TEw6eoIICBA0UFQgWFxYYEBkaG6wLCgIcHR4fICEiIxAkux4lJgEnDh8oKSorugACLCUeCR8nDwEtLiAvyAAfMNwJAjECIAIeMgnVAQgQMzQ1NjchOCg5OuQAdmBwwONBDx8/ZMj4VyiBjQczgKyQkQNIEEZCIAKBsEJHNUYbSIgUyaikIT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 text-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBIyOjIyKjJSOlFxaXOTi5Nze3LS2tJyanPz+/PTu9OTm5CwqLOTe5GxubEQ+RDQyNMTCxPz2/MS+xGReZAQCBFxeXLy6vNTW1Nza3Ozu7MzKzNTS1ExKTPTy9ExGTLSutFxWXKSepDw6PLy2vKymrAwKDLSytAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAadQAAgIBgIiEaCcCkUFAzPwkGAUDIBzoQ2oRAkqlfBYqv1fhlMQYOcEDgcD0h6rI0kJIuJAL0crBMUFRZ3CxdyS2IJGBWMGRIaG3xNaw8VCRUPGgsRklgLHBUdHh8VIAWGTH4hFRsLIhUjGRedAiSMt4wlJLQQFQwPwAy+IIdNJiYLCwUZoKW0CBgbGxETBycCJZ0EEBAM3N7d3EJ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 thumbnail-16:actions actions16 16:photo:16 16:R0lGODlhEQASAIYAAJSOlIyKjIyOjHRydPwCBOzq7MzOzJyanFxWVPz+/PTu9FxaXNTS1ERCROzm7GxubPz2/OTi5Ly6vPz6/MS+xKymrDQ2LNza3MTGzLSytKSirARKdAxajAxalBx2rCx6tFyazCx2rCxmjFRaXAROjCyW5CyG1DSa5CyS7Hy67Oz2/ESS1BxajNzu/MTS5AxuvBx+zKTS9Eyi9DSO1PTy9AQOHLzW7FSq/CSCzGRmZFROTBwWFOza1DxmjFym5EyGvExynNTW1MTCxLS2tEQ6RAQCBDwyNIR+hDQqNCRGFCRWDCQ6HERGRDw+PBQ+BCQuJDw2RAxCBCRyBCySBByGBDw6PBxiBBR+BAQuBBRiBCyaBDSmBJSWlCQeHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAARABIAAAfygAABAgGChAMEiYqJAQWOjgYBBwiLigIFCZkJCgEJBwuVBAEKmpkBDJ4NlQAOpQkBDw8NqouNCwm3CRAREgG0lpgLuRMKERS/jAXCtxPEBRUWqwoTpRMQCgoXDBgUGRqNmRAJGxscHRweHyAhIiOXuuIkJSYlJygpKikrI43OCSwtXLyAUaJEDBkzFgAoQENBgQk1AGSwkQKEjBsocPBz6CCCAgs5dOzQwaOHjx9AdAQIIkTCEAZEihhpcARJEiVKljDxNasJBSdPoEB5EkXKFCpSqlSqYOVKFCxZqGjZchRJJS4jRiAYoUNHAyYNLHQpEAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== top-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJzGlPz+/JTOhHS6bDxiRHy2hER2TEyCVMTixKTOrMzmxLTarKTOnHS2dMzqxLzmtKzapHzCfFSmZDxiVHy2jJzSlFyeZDx+VDxyXDxeXIzKhPT69JTSjNzy1ISyhGSSZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZMQIBwSCwaj0hAQDAgFJJCQ+BQeEKj16FBgMhuE4pucrtgNBxW4/YBiTQkE4q6QhdYJBdMRoOs2DdpfRwdTlcVHk2BRxUfIFRZkJB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 undo-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBGyubGSqZPz+/MTyxKzqrOz67LTutNz23MzyzDRaNGS6ZGzKbFy2XFSmVER+RDReNEymTESORDxiPDxuPCxGLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAU7ICCOZGmeKBkIKSkMbAsEAxGnL1HcJ20QB17phUgkdi3FgtFwPGSQSEQykQEUkofCeqVsuZUKd0y2+kMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== unlock-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBKSmpNzW3OTi5LS2tHx2fNTO1KSepJyenLSutJSWlMzOzGxqbJyWnMS+xGRiZIyOjNTW1Hx+fPz2/JSOlKyqrExOTOzq7FRWVOzm7FRSVGxmbISGhCwqLLy2vAAAACH5BAEAAAAALAAAAAAQABAAAAVqICCOZGmOgTAMRHGORnAgifKKiwsogck0iYTjMbKRGBBHxBHQ+SQKw2TggDBODEpq4ahILCeo4zJYJBiYU0FBuAgcCAbYJKE4Mu/DQ4NVJDJLDRtzJhwJAwYODQ8dNxQeCQcFjTeVlid+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 up2-16:actions actions16 16:photo:16 16:R0lGODlhEgAVAIUAAPwCBExKTERCRAQCBIyKjNTS1OTi5IyGjOzq7OTm5JSSlNza3NzW3MzKzMTGxLy+vKymrFROVExGTDQyNOTe5NTO1LS2tLSutKyqrKSipOzm7Ly2vLSytJyWnHx6fKSepJSOlGRmZISGhFxeXMS+xJyenISChFRWVLy6vIyOjHx2fGxqbExOTGxubIR+hFxaXHx+fERGRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAASABUAAAbMQIBwSCwaj8ikEhAQNAdLgIBQMBgO0GSAgOgiEorsMbAwLBgNxwMiiDgDAUlgImF0DZRFoVFRWy4YGQQDEQsaVnoNAw8bFhwQGR0eAxIVeQV9A5oYgR8KICEDARV6mZqaH54gIiOUJA1pJBscAxklHQoHJh4nhCgVJLKPA7cpuh4qvRIcjBwXGRkDCgQEHh4rIRIDLBkPHBgQHx2nAx4tLSPaEhmctiAgJi4q5yMvJwKEKSYw8y0h9SfgxJAgAN8EcggTaorCsKFDLUEAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= up-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHy2hNzq3ERmVHy2jPz+/Ozy7FSiZDxiTJzOjFSmZNzy3MzmzJTKjJTKlPT69OTy3Nzu3LzevJTKhHy+fHzChDxyVNTm1KzSpITGfHS6bFSSXEyCXDxmVIS6jIzGhGyyZERyTKzapJTOhGSmZDRiRISyhGyWbFyKXFSCVDxiRJzGnLTarJTGhGSWbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZkQIBwSCwahYHjMSAYKImEguGAeAICUkFC4TxGDQtGw0E1Yh+QiGRCqSgsUAIhYLhgMpoNx9IxegwMCR8gIU8EECIjGiQlTx4mJygpISpWlkQrBQwsLRuNSgEeJC4cIZ+XqFZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 view_choose-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/JS+lIS+hGyubJSSlPz+/LTStFSeVPzuzPyaBPxaBESGRIQCDEySTDxuPIQCBGxqbHSydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVRICCOZCkGgjCMhCkKhXGwIpIooxAMCw3cjNHg0HD4bg/XUREEQJ5QUeunSCoBU+AVK6paASnBTKqEyXwmXcRIBthwomFx+XVNq01olLvtA/whACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= view_detailed-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBIS6hJS+lGyubPz+/LTStEyeTJTClHSydESGRGxqbEyWTDRqNFSiVAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQwEMhJq701iDAwFURheFNwIImkKMDqSoixMGRt3/jG2UE41hqUiuVawRoznHKJ80cAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= view_icon-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBIzCjIS6hHSydPz+/LTStFSeTJS+lEyKRFSWTDxqPGxqbAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ+EMhJ6wxBDIo1J4XxhZRwDEh5ptNgJArlwlZtLXgu5brt/7XO5pIZSgIg0SWpQjVZklms9ZoCb7zFLnut+CMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== view_left_right-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBIyKjExKTNTW1Nze3Nza3Pz6/FxaXKSipMzOzMTGxDQyNPT29Pz+/KyurPTu9Ozu7Ozm7OTm5MzGzLSutOTe5Pz2/NTS1JyWnAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV8ICCOZCkGaKqmwjkQRGEcyJDcynISDGM0B8cDEpFMdIAAz/A7UIaRyPEk+wEdjKgRGagwGs3nI5rgFiyWpnBcyVEflq+TWJwmB0O5oygh2AMXEWNACFEVFX8JURCEfYeJFUUzCIePXAoJEwlAGJkTCnYCC6OkpaQmqCR+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 viewmag--16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTq9Mzm9Lze7Oz2/Pz+/OT2/KTW7HSuzGymvOz+/Kzm9FyevEyKrKzq/HS21ESSvDx+pJzq/Fyy1CyGtCxmjIyKjPT6/AQCBEyexBxypARijNTy/Nz6/Mz6/HzW7FSuzCyOtAxqnAxSdJzK3IzK5HzC5HS+3DSWvARWhCRGXESaxDyWxBx6rAw2VExaZDSGrCRafARCZERCRKyurFxaXGyOnFR6hExidCQmJLy+vHx6fBwaHLSutPTy9AAAACH5BAEAAAAALAAAAAAQABAAAAaJQIBwSCwWA4LAwEgMEAoFwwGRYAKeUMUCwWgYsdCC4wGJGAVhqGRCqViKggtmPs9oNm/iYMDpeD4gISIjeUMkJSYmJxMoGikqhUMTKywZFC0bLi+RQzAaFTEyLjM0NUw2NzgvLzU5pKZFNDo0sjo7PK9FPWkFPjW4pUQ0FsTFFr8zsFZDNc0AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewmag-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNTq9Mzm9Lze7Oz2/Pz+/OT2/KTW7HSuzGymvOz+/Kzm9FyevEyKrKzq/HS21ESSvDx+pJzq/Fyy1CyGtCRulIyKjPT6/OT+/HTS7EyexBx2pBxijOTy/Nz6/Mz6/FSuzCyOtAxqnAxSdJzK3IzK5HS+3HzC5DSWvBx6rARWhAw2VDyWxESaxDyOtARijFxaXDSGrCRafARCZERCRLSutGyOnFR6hExidExaZCQmJKyurMS+xLy+vHx6fBwaHPTy9IyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeWgACCg4SFhQECAQOGhAEEBQUGBwgJjACPkAoLCAwNhpiQBQ4PEBGGAqGQEhMUFRaFAhehGBkaGxyvhAMDHR4fGSAhIiO5gyQlJicmEygpKivFgxMaLC0uKS8rMNGDMbcyMys0NTCMNjc4OTkwOjQ75YU7PDs7PT0+P+7wgzWpBUAw8r0jtCOIhYMIA9LYZ0kQjIcA/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= viewmag+-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTq9Mzm9Lze7Oz2/Pz+/OT2/KTW7HSuzGymvOz+/Kzm9FyevEyKrAQCBKzq/HS21ESSvDx+pJzq/Fyy1CyGtCxmjIyKjPT6/EyexBxypARijNTy/Nz6/HzW7FSuzCyOtAxqnAxSdJzK3IzK5HzC5DSWvARWhCRGXESaxBx6rAw2VFxaXCRafARCZERCRKyurGyOnFR6hExidExaZCQmJMS+xLy+vHx6fBwaHLSutPTy9IyOjAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaMQIBwSCwWA4LAwEgMEAoFwwGRYAKeUMUCwWgYsQVH4QGJSIwCaLgwoVQsl6IA46jXM5pNnDgYcDoOHh8gISJ7QyMkJSUOFCYaJyiHQxQZJikVKhsrLJNDFRoWLS4rLzAsTDEyMzQ0LDWmqEUwNjAwNzc4ObFFOmpQOyy7p0QwPBfIycIvslZDLNAAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== view_multicolumn-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBIzCjIS6hJS+lGyubIS+hPz+/KzSrFSeTLTStEyeTIy+jHy2fESGRGxqbJTClHSydFSiVEySRDRqNEyWTEySTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVKICCOZGmeZCAMRLkKrVgYB1IORqKMy8A0AIcQIHhAgEJCRDIpQRCUJmpKrVp7sJsgKwrkbCQBDUz0IYcFc9ABUUSdiorUSq9T/SEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== view_remove-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBIyKjHR2dNza3OTe5Nze3NTW1NTO1MzOzDQyNPz2/PT29PTu9Ozu7Ozm7OTm5MzGzPz+/Pz6/PTy9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV3ICCOZCkGaKqmwjkMREG8xnEgSOIqC68wjIbjAdEBAoRFRBJR/BoPR9ElYUp4Qej0mFw2fwyH1BgYOK9gIZE8YPgmCwd0fTIA7/LHo7ANHBqAQWIOBAR9CINRD4WFh4p6jIU5JxCVEAiXlpVGAgmen6CfJqMkfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== view_sidetree-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAIzCjIy+jIS+hGyybPwCBPz+/KzSrFSeVCwqLJS+lHy2fESGRHyitGyubEySTDxuPISmvHymvOzy9KSipISytNzu7ExyfHzCvIzKzHyyvDxOZDxabFSGjFySrFSSpCQ2PFR2jBwaLDxGZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAAQABAAAAZqQEBAMCAYj0hjoGA4GBFJpCChWDyPjGTj4HhcjYxs9AgFFyDjKyPCkBTEhIn8SpFIKm50FGq5XDAYGRoEQgINVxobHBgdgwRLTV8EHB4aH0ZTVZIgGiFHW12SIp5pBGWlSKdjchOormN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 view_text-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBERGRCH5BAEAAAAALAAAAAAQABAAAAIbhI+py50BQYTU2XvqpAH7pnVc95VIKHHm+vkFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= view_top_bottom-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBIyKjHR2dNza3OTe5Nze3NTW1NTO1MzOzDQyNPz2/PT29PTu9Ozu7Ozm7OTm5MzGzPz+/Pz6/FxaXLSutMTCxMTGxLy+vLy6vLy2vKSipPTy9Ozq7OTi5NTS1MzKzCH5BAEAAAAALAAAAAAQABAAAAWEICCOZCkGaKqmwjkMREG8xnEgSOIqC68wjIbjAdEBAoRFRBJR/BoPR9ElYUp4Qej0yIx4v1WvMTApm8/lMaUCqVgqlQsmQ9GMDcFNg8HhPDodWwEeDYVBDogEBB9jCIhDQx2KBYIIBEMPBJmKBDknEBAIEAegEBaiWwIJq6ytrCawJH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= view_tree-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBDw6PIzCjIS6hJS+lGyubIS+hPz+/KzSrFSeTIy+jHy2fESGRGxqbEySRDRqNLTStEyWTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVCIBAAZGme46mWqTAQxUqmxoEksjgqxMKQjQYgKEwVEo5HLpUzMZszqJP0GsRkKcIBgsOOXj6gkGg6RpTStHoN8IcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= webarchiver-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSSlOTi5MzKzMTStJyyjJyWnPz+/FSGxDSChLTerMz2lLzudIy+ZJSWlHS6XFyS3FymhEyqHGSyfOT2zPT65OT+tITOZEyavDx+3ESGxDyOdBRKbCx23FymnMTqrOz23Nz2zIzKzFyqrEyC1DRyzDRuvBxeLBRSDHzCpOz27Mzq/Gyy3EyetEySxBxexBxWTCxq1EyO3ITCxLTmvJTG7GSi5Ex+zCRevBxGZDRmzDx+zHSyxJTSjFymjHSurGyaxDx21AxOtBw6ZBRKHDRu1Gye3KzahITSNGy2TBxipAw2hBQ2ZAwuNEx+1LzepITKTDSOHBRGdAwqZBxWvGSanJTKbFSiLBQybAQeTBxKpExylJyenDRePAQCBAwiVAQaVAQSLLy+vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhgECAwMBhoQEBQYHBggJjQAKCwwNDg8QERKGExQVFgwXGBkaGxyEHR4fIBUhIiMkJSYnKIMdECkhKissLS4lLzC6gjEyLTM0NTYyJDc4OcgAOh07Njw9Pj9AQUJDRIMxJUUQRkdISElKS0xNgy86L04IT1ASUVJTU4VCqFApUcXKFRhMsGQxtESLli1cujCZksWLF0NfpnA5wAVMGIsXDwkQI4YLSEsoBfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 window_fullscreen-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBISChIyOjIyKjGx+1GRy1ExezDxSxCQ+vBQytAQitHx6fOTe5MzGzLzG9KS27KSq7Iye5HyS1GyGzFxuzFRqxMTGxHRydMzKzJSm7GyG5FRy5DRe3CxO1AwuzGxqbJyWnAQivIyGjOzu7Pz+/OTi5GReXAQCBGRiZJSWlJSSlLS2tFxaXOTi3LSytFRWVFxWXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaPQIBwSCwKA4IBoWA4IBIKxSCwEAoYDccDEpFMKBWG5SIcNDCZiGbD6Xg8FsvnCBIsm8+QQiSaAwQjJIKDhCUmZQwkJ4uMJ4IMKIiKKQIgKionKyQMLEctioSKLpudAAOJjoSZmy9HJaCqo5xHqI2LmgytAAstDCUWDcDCJbMAH8cmJi/LyzAvzkbR0tNDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== window_new-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBISChIyOjIyKjGx+1GRy1ExezDxSxCQ+vBQytAQitHx6fOTe5MzKzLzG9KS27KSq7JSi3HyS1GyGzFxuzFRqxMTGxHRydIyGjJSm7Iye5GyG5FRy5DRe3CxO1AwuzGxqbJyWnHSC1AQivPz6/Pz+/OTi5GReXAQCBGRiZLy2vFxWXLy6vFxaXLS2tFRWVOzq7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaLQIBwSCwKA4IBoWA4IBIKxSCwEAoYDccDEpFMKBWG5SLENCwZzYbT8Xw+FgvoGBKImJ7nSIHBzAECJCQlgyWGhyYnZYeMJSgoJQwpQgONho8qkSuLjpCdLIYMLZSGLo+YhwwvR4emKKCpowABjC6ZjKpCCzAMvb6+vLIgwyknLyvHyC/LRs3Oz0N+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 window_nofullscreen-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBISChIyOjIyKjGx+1GRy1ExezDxSxCQ+vBQytAQitHx6fOTe5MzKzLzG9KS27KSq7Iye5HyS1GyGzFxuzFRqxMTGxHRydIyGjJSm7GyG5FRy5DRe3CxO1AwuzGxqbJyWnHSC1AQivOzu7Pz+/OTi5GReXAQCBGRiZFxWXFxaXNze3FRWVOTi3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQIBwSCwKA4IBoWA4IBIKxSCwEAoYDccDEpFMKBWG5SLENCyZiGbD6Xg8FsvnCBKEmM6ESIHBzAEDIySDhIUlJkIDDIUnjY0kDCiJi4QnH5cnkCllJSSOj56QKokrnpcfmaEMLEeLqZ6Ooq2wsYSrQgstDCW7vQy9owCnJiYsxiksyMhGzM3OQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= wizard-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBPz+zPz+xPz+3Pz+7Pz+5Pz+/Pz+9Pz+1Pz2zOTizPTy1PTyxPz21Pz61NTSzMTGtLSulNzWrLS2tNzW1KyupISGfIyOdHR2dJSSlIyGjGxmZExKPFRWVCwqLBwaFFRSVDQuNAwKDIR+hISChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZOQIBwSCwaj8ikEhBoCpaBAaHQVAYIhgPiiUwksIZtUrFgNByB5EMBiUjSyAmlYrkoMRnNhnO3dDwfdxogISJKIyQgHoZKg4tLAIqMS35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= ark-16:apps apps16 16:photo:16 16:R0lGODlhDwAQAIUAAPwCBKyqrIyKjIR+hGxqbFxWXFRSVGxmbMzKzPz+/NTW1GxubJy2xKymrPT29LzGzHyerCRylAQ2bGyWrDRyhCxSZITC3Lza/KTO/Fyq5ARChISixISy1JTK3Mzi9PT2/LzW7Gyy7LTS3Mzm7OTy9Pz6/ISivMTm9Ozy9LTS9Eye5DSCtDSKrESKtAxatDRSdKSmpJSSlISChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAZxQIAQEBAMCAXDYcgUIhKKwbLZRAQWVCaDkWhkhwzHAxIpRyTUCaUSsVwwGQ11w+l4PglQSN7ciEYkJQ4XcVQmJyQODnmFfSMoih8pKnxMJissLSuaLpVDLxqhDaGeVAgwU18ATwgxqVQBMkdJr6pUdkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== background-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPz6/PT29Pz2/PTy9Ozu7PTu9Ozq7Ozm7PwCBMS+xHRydISChIR+fIR+hKyqrKSutNTi9Lze9JTK7Hy+5Gy+7Fyu5Eyi3LSutLS+xOz6/OT6/Nzy/Lzq/Kze/IzW/ITO9GzG9LSurLzCxOT2/Mzu/FSa3LzCzPT6/HS67Lzi/MTq/ESCxBxqxMzGxHzC7FSm3NTu/Jze9CyK3Aw+tCRexKyutHSy3GSu3Gyu7Jza/AwWLCxirCxqzBQmZKyurMTGzHTC9GSq3PT+/Jy23Bw2ZAweTLSytJy2vEyazDyGxPz+/JzK9DR2zBxaxBQ2nJy2zDx+vJzG3GSezIy+7ESO3PT2/Ly2tGyetGSy5Gy25BRStBRSvLyytGSWtCx6zCyC1DSK1EyS3DyG1ESK1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAgALAAAAAAQABAAAAfPgACCAQIDAwQFBooGBwAICAkKC5MMDQyXmI8IDg8QEBEREhITFBUVFpoXGBkaAxscHR4fHyAgmiEiABsjIxwQJCUVs6kmJygpGyQqGSssIB+3LSkuLxkwKjEyMzQUmjUtNjc4JxkQOTo7PD0Cjz4/E0BBI0JDHEQsPEXsCEZHJUhJOCgRsCQJkyZOBjwK8QRKFCklpiypgKMEFSpVHlm5giVCFhZNtDTZokVkgUdcunj58kUGGCpfwoj5MkahJk2CqhQyJGDBzZ9AgwrV5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= bell-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLzG1ExmhGRmbKzK5HSq1HR2fHRudKzC3KTS9FR6nHR2dIyKjIR+hDQuNKS+3LTa/Gyy9ExadJyWnKSipERCRJS61IzK/Gy+/DSO1FxeZLS2tExGTDyKxFyy5Dym9Cye7EyWxPTu9Ly+vMTCxNzW3FRSVCxqnBxmlCRupDx+rPTy9Ozq7CRKZCRWfBxajPT29Pz+/FRWVCw6TBxGXDx6nNTS1Pz6/Dw6PCw2PDxmjMzKzBwaHCRObOTi5AQCBFyCpCQmNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAd7gACCg4SFhoIBAgOHhQQFBgYHjIIICQoLDA0OjA8QERINExQVhxYXGBkaDBQbHIYdHh8gISIjJCUmhicoKCkqGyQrLBqHLS4vKQMsMDEyhzM0LjU2IjcwOIw5NDo7yyw8kzk9Dz4sJD+TADNANiMV6OlBFQ7w6fb3gn6BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= clock-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBISChKSepLSutMzKzNTS1FxaXKSipMS+xMTCxMzGzNzW3GxubJSOlPTy9Ozq7Nza3LSytJyWnGRmZHx6fIR+hJSSlPz6/Ozm7Ly2vGRiZPz2/Ly6vFxeXOTi5KyqrGxmbFRSVDw2PEQ+RCwuLJyanExKTDw+PLS2tGReZNTO1MTGxHx+fHRydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQIBwSCwaj0hAQDAgFAhIQyBwQCQUC0TAyGgUHIYHBBGRFCeUAsXheFQKB8uEyDg8HBc2BpKhaIgTCQYOGxcGEAYcDAZ0CQ9yHR4FCR8gISJDAREenBAECB8WISMkmSUEaQocFCUgJidEIB8fCSgpJRaLJqVEFgQccQEaEyGwRhIqKwMNLAYmSUoULYzQ1X5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= colors-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPzC/PzSpPy+hPyufORKVMwyXPzOlPzq1OxSRNw2bMQmfPzmrPz67Pzu3PzKhPyKLPQuDNwmnLw61PzmlPz+/OxyHOQOFMwe7IQy3AwWTPzutPzqrPzGZOQ2ZNw+7DQ67BQunPz2rPz2jPzmZPziVPzKPPyiLORm7HR29ER6/Bxq/ARi1Pz6lPz+XPT+XPz+bLT2nHy67Gy27Dya1MzylKzqZITmREzeTDzeXFTyxKTS/JTS/HTK/Eym7BRelIzqbGTiZBzaZBzmfFTy3JTi/HzK/AQSHDTedAzeZAzedATmnDzy7Gzi/HTO/FSq7CTijATajATmvBTu3ETG5Eyu5CxynAzOpAy6xBSCnBQ2TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeGgACCg4SFhoeIAAECAwQFiQAGBwEDCAkKiAsMDQ4PEAkREoYTmxQGFRYRFxgZhRqvGxwVHR4YHyCFISIjJCUmJygpKiu5LC0uLzAxMTIzxIQ0NTY3ODk6Ozw9PoU/QDhBQkNEOkU9RoZHSElKS0xNTtuHT1BRUlNUVZBWVldYWZAAAxbyEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== date-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBISChKSepLSutMzGzNTS1FxaXHx6fIyGjLy6vNzW3MTCxHRydJSOlPTy9Ozq7JyWnGxqbIR+hKyqrIyKjKSmpPz6/Pz2/OTi5GRmZFxeXExKTDQyNHx+fNze3Ly+xISGnHRyhHx6jJyanMzOzMzKzLTGvLzGxISinCwqXLy+vLS2tPT29PT2/JyyrFSCdCQiTJSSlKSipNTe3NTO1MTGxKS6tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAabQIBwSCwaj0hAQDAgFAhIwwEhSBAIikXAyGgUHIZHdgApRhiFgMPxkBQmlAgxUnk4LBcHRpE4ZIgZCwYOFxcGGAYJEQZzBA9xGhgECQIGGxxDHQMYnB4fICEiIRIhQwEjJAcFJQQmCycLKClDERMTKisBLBYtLi0vMEQxJSoyEzMzLTMuwEUQNDUJLC0tNiwvSAgHMRQUSd9CfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== earth-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrDxuxMTWvLTSnKzKnHSizGSetFyOzDSChLzepMz2lMT2fKTibHTGVHzKZGyaxFymhEyqHGSyfOT2zPT65OT+tLzyhIzSbEyetDR65ESGxDyOdBRKbCx23FymnMTqrOz23Nz2zIzKzFyqrEyC1DRyzDRuvBxeLBRSDHzCpOz27Mzq/Gyy3EySxBxexBxWTCxq1EyO3ITCxLTmvJTG7GSi5Ex+zCRevBxGZDRu1ER21HSyxJTSjHSurDx21BRKrBQ2ZBRKHCxu1FyS3KzahITSNITOPGy2TBxipAw2hAwuNDRmzEx+1FSKxFyuJDSOHAQqZAxOtCRWvBxWvGSanJTKbFSiLBQybAQeTBxKpERulFSKPDReRAQGFAQCBBQ+NAQeVAQOJAQGDAQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgACCg4SFhgABAgOHhAQFBgcICQqMCwwNDg8QERIThhQVFhcYGRobHB0ehB8gISIWIyQlJicoKSqDHwkrIywtLggvJzAxuIIyMxo0NTY3MyY4OTrGADsfPDc9PhI/EUBBQkODMidERTdGR0hJSktCTIMwTTBOTwsPUFEeUlKFU1RVmli5giWGkCxaDC3ZsoVLFy9CpGj5AsaQFn5htIgZA6bjITJjyJTp6JGRSQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== gimp-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBMy2hHxmPKySXFxONLSedJyCVIx6XHRiTHReNGxSNEQ2HLy6vOTe1NTKtIRqRFRGLBwWDISChDw2NIR+dMzKxNzW1HRydPTy9DQqFBQWDCwmLERCRExGTHxuVKyehLyyrLSunGxWPEw+JCQeFBwSDGRmZGRWRHRiPEQ2JGQ+HFQ2HBwWFCwaDLSSdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZkQIBwSCwaj8ikMZAUGAdHAcFYMBwQAEIioVgUGQ1Ho/FIQCCLyFAyoVQsF4wAndEMN5yOZ/ABhUQjCyQlRBwmJwkCKAR0hEUEKQuSIwoqKitIGiwkGyQtKi4MJkpGG6SnqKh+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 go-16:apps apps16 16:photo:16 16:R0lGODlhFAAQAIYAAPwCBOTi5GSmZMzKzNTS1Nza3JTClKTG1KzK1Ex2jPz+/KTGzFyGlJzKnGSGnDxifDRabBw6TLy2vJTOlLTqtJy6xGSKnIzKjMzuzOT25ISirDRedHR2dKSepMS+xLSutIzGjLzqvCRCVBwaHCwmLERCRHRydIyOlESCRGSuZGy+bGy2bDxiPHyOlBxKZEx6jBwmNBQSFBweHGRmZDxqPFSaVFSiVDxePCQiJBQuRAQCBAwKDDRaNJy2xExqfCwqLBxKXDw+PDRONKSipLS6vHx6fExKTFxWXFxeZJSSlISChKyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAUABAAAAe9gACCg4SFhoeDAQGIAogDBAWIBo2CBwgJAAMKCwwFnoQNCpQHDg+VEBGeEoQTFKIAFRYQAAuoCgMDhRcYGaIaDhsHthwdHh+EICEYGKIWDA4iCiMkJSYnHoMoKSorLC0MLi4ILzAxMTIlM4M0NTY3OL8uOS4LCTA6OzGENCg8Ojo9wAGYt8AHjhE7CPHwp+NHDwcuAJTIAQRIkBJBCAn5J2gIkRMAihg5gmSGOkSFkigpghLRkg5KWso0ZCAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= help_index-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSivISevHSexJSitPz6/Pz+/Pz2/PT2/Dx2zOzy/Oz2/Mzi9BxivAxKtARCrAQ6pAQidNzm7MTa7LzW7JzK7JTG9IS69GS2/ESu/CSa/AQqfOzy9Lze/KzW/JzO/JTO/HTC/CSO9MTi/JzS/JTS/ITK/BSG/AQqdISizPT6/PTy/DSa9AyG9CyO5HS27FzC/AR+/AQiXEzC/Jze/IzW/Fye1Fy+/ARe7HSi1FS2/Cy6/ESS7Axm9ARKxCRapARS3GSi1GTC/Cyu/IzG9CR27AROzAQ2tAxCnDSm/ARO1Fye3ASG7ARCxAQyrAQ+vEya3GSu5BSa/AR25ER23AQunAQqhCxipAQyjAROnARu3ISi3Fx+zAQqbAQybAQeZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfEgACCg4SFhAECAgOGhQQFBgcICYyCjgcKCgsMCQ0ODg8QEYICBxISExQVFhcYGRkaG5UGkBy1HR4fICEiogACBgUFCBwMIx4kJSYnKIIpBiorFSwiLS4vJjAxMoIDBggWMzQ1uw42NzixADkGDDo1OwY8PT4/GUDbAEEGHkIzQ0RFjBxBkkQJMwBLVBDRMYRJgSJNnCAR8aQXFBNRWEiZYoDKkSpWKh68ggVFFi0JtnBxEkFGBBRdDHnBgsXKF0o4C/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 hwinfo-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBBRGfBRClAw6dBxSjCRepByK1Cye3BxmvAwubCyKzDy+7EzG9Pz+/BRWrBRavBQybBQiPCRmrHTa9Jzq/CRutBRyxAweNBQ6fCyOzIzi/Lzy/Izm/CR6zBROrAwybBRKjFzW9Aw6jCRiHCyCDBxWBDSu5BwuVDRaTDSSHDQyNBxuxBRKlAwiTEReVPyCBMQCBAwmVBRWtCxeTFxaXCR2FBQmNBQqTCxSRKyutKyitAQCBESGTCQyRCRqNDyeJEyiTDx6TCx+PAwaLCRGRCxiRMzalEy6NDyiJDyaNDSOFPz+zPz+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfEgACCAAECAQODiYMEBQYHBggDCYqCAQoLDA0NDg8QEZQSCxMUmhUWDheKGBkMGhscDAcdHh+pgyAHCyGaDaYPIhcjJCQlAQYmmJoOCB4JJygpKSoJK44HmiwOAi0tLi8wKiMxMhYdmgLNLTMjNNI1Ni0yvA3cNzg5OjsqJDw9Fy0fEnC74OOHDhr6SAAJIuTChSEXiBQxgnBHwiNHkAjx4WNEEiQ/oqVQogJAiZMol5RQybJESUUrY6pk4pKSips4c/oJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 k3b-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPy2fOTKtPTGpOy6nPz+/PSWZNzq3MTe3NTe3Nzi3OTezOTe1PTSxOyyjMTGvMzm5Oz29OTu7Nze1OzCnKzKzNTa3NTKxLymnNy+rPzevPzWvOzGrMy6pPSOXJSanMzm3Nzq7NTazOTe3OTOxOTCtOTCpOSKXJyurLzSzLzSxNTi3OTWzPTazMy+rJyGdHyelKTCtNTm3Oz27My+tLyajLRyVLS6vKS+tLy6tKSelIR6bIxmVLRuTCQeHDwuLGRCNIRSPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeDgACCg4SFhoeIiYqLhwGMAgMEBQEGhwcICQoLDA0FAw6Vgg8QERISCROcAwUUBKEVCBASFhcYGQMDGhscHR4fIAghFiIjJBklHAMmHRgnACgpKiumIwwsLQ0NLi/OADAxMjMhICIMFxc0NTaFHzc3OA85Ojs8PYg+Pz9AQfaM/op+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kab-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBIR+hISGjISSlLS+tHyChIySlMS+zKyqtHyGjISChIyOjHyWfHyKlISSnLy6zKyytISGlIyOlJSOlCxOTLTGvOTu7OTi5Jy2rHyOlISGpCxCRMzW1MTSzPTy9Ozy9LzKxCQ6VGxqbMza1LzOzLzSzNza3KzGtExKTHx6fGRiZNTW1KzCtDROZHx+jHRudFxWXNze3NTS1KyqrJyWnIyKjHRydMzKzMzGzMTCxLy6vKSipGxmbExOTLSytKyurISGhFRSVERCRFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAehgACCg4SFhoeIAAECAwSJggUFBgcIBQkKCwyFBQ0ODxARAgISExSEFRYXFxgZnA0aFBuEFhwdFh64HyAhGxsigxYjJCUmtRgnISgpKoMXKyQgJiUWICwtLi8wgiYXMSsyIA8zNDUKNsyCFzI3ODk6Mzs0EwE8PYMm7j4/8TVAKS9BCMVbUCPAvxcqXvAQQiiACBVDYPQQgqIiw0cYMwryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== karchiver-16:apps apps16 16:photo:16 16:R0lGODlhDwAQAIUAAPwCBKyqrIyKjIR+hGxqbFxWXFRSVGxmbMzKzPz+/NTW1ISChJSivISexKymrPz6/ER+xOzy/KzO9DR+1CRmxARCrAQ6pPT2/Ozu/Ozu9OTm9Nzm7MTe7FS2/PT29Ozy9Lza/LTa/Gy+/Nzu/Mzi/LTW/KTS/Fyy/ARGtGyi1Mzm/JTK/CSO9ARGvEyS3JTC9GS2/DyW9Bx+/ARe5Cx+5BRm1ARWzKSmrAROxKSmpJSSlAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAZ0QIAQEBAMCAXDYcgUIhKKxbLZRASm1CGj4cgyGY8HxCsEPyKSCaVioTIumIxmw+m0mwzPJ5IBhUR3TA0PGCMkJSYnKFQpDxkqISsrLC1ULiAvMDEyMzOVTTQ1MzY3NjY4OGQIOVheTwg6rU0BC1JJsmRNBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kcmmemory-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Ly+vPzuzPyaBPxaBHx2fJSOlERCRDw6PIQCBPz+/GReZCwmLCQmJDw2PIQCDFRWVDQuNCwqLCwuLBwaHISChIwCDFxaXGRiZExGTGxubFRSVPzu1ExKTGxqbGRmZDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ+QIBwCAgQj0LBgFAwHBDI4TKhWDAajihg+YA0vo1IdCq5Nq5ZYmEKNoeHAcV0YkZThBVDhTuZlBsTFBEFeBUECRYRfwgUExd6QhIYCAgRfRmCGgpGQhQMBQdPG40ZkEQcSx0YjR6bSFMfjQcGhEiHCRQgGK5aQhMdpr1wUX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kcmnetwork-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLy+vMTCxLy6vLy2vLS2tLSytMzKzIyarHSOnHySpJSapJyanJSWlJyWnHyKlHSKnJSirExGTMzGzCxehAxWhAxOfFxyhIymvGyOpISWpAw6XARalHSitDQ2NCRehBRSfJymrGyWtHSGnFRmbDRWdBQ2THyirESOxARKdGRiZFRSVISmtDw2PMS+xAROhGR2fARmnISirBxSfKSipIR+hAQuRARqpIymtBQiNExaZCQyPARelARyrHyapISqvHSGjIyqtIySnCwqLISChHRudISKhHR2dIyOjKSmpJSSlKyqrKyurJyenOTm5OTi5OTe5NTS1Pz2/PTy9Ozq7NTW1Pz+/MzOzMz2zIzyjMTaxNza3KSqpGySbEQ+RDw6PIyKjBwaHGxmbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfMgAAAAQKFAgMDBAQFBoKOBwgJCgsMDQ4PEBESjgATFBUWFxgZGhscHR6cAh8gISIjJCUmHCepjhOsIigpKiumLC2cLh8vMBcqHismMTK2gqszNA41HjYvNzjOAKsvGzk6Oxs8PT7aAz8/PiPGQCxBQkOcDURFNUY1RypISUqbjktMkjRhoETJEidPoEQRJmXKFCpQqjihYsXJFVVYsmiZIKBAFChbJrjgZIBLl3sFCQhYwkAApxVevHjw8oWmCjAr4nHaKSiMGJ0A/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kcmpci-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAIyyjISqhHymfGyebGyabFySXFSOVDyCPDx+PCx2LCRuJBRmFPwCBHyqfHzefGzabGTaZFTWVETSRDTKNCzKLBTGFARaBGyybMTCxMS+xJyanESeRCyWLLSyvKyqrKyqtHRydAyGDAReBFyqXISChDw6PDSWNFxeXDQyNAwmDASCBFSqVGRmZERCRByOHGxmbBQSFAQCBLSytBSGFGyWbCSSJKyutLSutIwODKSipESGRDzOPPz+zGSyTNTqpPT2tHy6XOz2rBSKFPz+xBxqHNza3Ozm7PTy9Pz6/MzGzLy6vJyWnJSWlHx2fFxWXExOTExGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAwALAAAAAAQABAAAAfDgAABAgMEBQYHCAkJCgoLDAwNDg8QERESExQUFZwWkAIQFxgZGhscHR4fICEikAMQIxkkJSYcHicoKSqeDAQRKywtKBwuLzAxMbuQBhEbHhsyLi4zNCrWvAYS0DU2NzM4OeHKDDo7NdHT1urjijU8PT7wPT9AQeMMCi48QkMq/f/3FhBZIMJCwYIWEvKCxLChQ0gaihgxcuQIEkhGiiRRcgLSEgwgQ2JQ4iEHExItPJIg0QQECxZOnDyBQjPlw5sN/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kcmprocessor-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBGxubKSipLSutJSSlHx6fGxqbLSytLy+vLy2vKyqrISChHx+fMzKzMTCxIyKjHR2fHRudFxaXMS+xKSirHx2fExKTIR+hHx+hDQyNPz+/Nza3Ozm7Ly+xOTe5OTi5CH5BAEAAAAALAAAAAAQABAAAAVwICCOZGme6BgEqSoMRGGgwYEkCrEUDKsiDYejoXgsIJHAQiKSFCaOSYLyKFQCEYmF6VwsDgPBBRMxSM4WQEZyuXh1WXRGs5mvF+2z1r6ZAOoad3uBHAAdIg4AHHZ2HgB+JX6LGR+GLQgikC2bnCN+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kcmsound-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLzG1ExmhGRmbKzK5HSq1HR2fHRudKzC3KTS9FR6nHR2dIyKjIR+hDQuNKS+3LTa/Gyy9ExadJyWnKSipERCRJS61IzK/Gy+/DSO1FxeZLS2tExGTDyKxFyy5Dym9Cye7EyWxPTu9Ly+vMTCxNzW3FRSVCxqnBxmlCRupDx+rPTy9Ozq7CRKZCRWfBxajPT29Pz+/FRWVCw6TBxGXDx6nNTS1Pz6/Dw6PCw2PDxmjMzKzBwaHCRObOTi5AQCBFyCpCQmNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAd7gACCg4SFhoIBAgOHhQQFBgYHjIIICQoLDA0OjA8QERINExQVhxYXGBkaDBQbHIYdHh8gISIjJCUmhicoKCkqGyQrLBqHLS4vKQMsMDEyhzM0LjU2IjcwOIw5NDo7yyw8kzk9Dz4sJD+TADNANiMV6OlBFQ7w6fb3gn6BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kcmx-16:apps apps16 16:photo:16 16:R0lGODlhEAANAIQAAPwCBExKTFROVGRmZIyGjBweHHR2dFxaXISChJyanLy6vERCRIR+hLSytMzOzOzq7Pz+/IyOjCwqLJSSlNTW1Nza3AwKDOTi5GxqbFxWXPT29Hx2fGxubAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA0AAAVQICCOZAkEwkAUJmCw4oEkylIy8Ig0zjPoOVLiAfEBIpKWqPFwBCZJpYhySCCCpsoAQRgELMrLD4DJBL6mB4bkPYNHmo2Jc0YD4kq6W6q0hwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kcontrol_2-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMzGzLy+vMS+xLS2tLSytKyurKyqrPTu9Ozq7Ozm7OTe5Nze3NTW1NTO1IR+jARKZARObARWfBRilCx2tLSutGxubLy2vPz+/GyqzDSGtCx+tBx6tCyGvFSe3JyanNzm5HSyzBR2rCyCvGym5GRmZCSCrESGxHSu7KSWpGxmbKSmpARehDxunEQ2RGx2nGxebDSOzDxCXFRKVJSKlKSerHxyfIyOjHRyfFxSZExCTFRWXJyipMzS1HRydDQyNDw2PFQ+VERGTMzOzOzu7JyapGRWZAz+DKSupNTW3GReZLy6vJyenHx+hDwuPJSOlHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCg4SFhAECAwQFBgYHjoUBCAgJCgsMCw0NDg+EAwgQERASEhMTFBUWhBcJEBgZGhscHR4fqoMVIBAhIr0bIyQfJYQVCxImIhwjIycoKSqEKwssvcstLi8wt4IVDckxMTIzKTQ1NoQHAysfNzg5Fzo7PD0+hTs/QEE1Qj87QwMwBjlAQMTSgyI4igwAYeTQgiNIVuCoQCCJAgRKCC0xwITdgyaIlChxQugJlBIod+wQYuSHS0MwC/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kcontrol-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBMzKzMS+xNTS1KSepLS2tISChGxmbISGhFROVJyKlNzW1FTGdKyenIyGjERGRCzCVExiPDTG9ER2hGxiZCwqLEQ+THSGTMTyhBSqPFRaRASy3FRqdHRybKyurHx6fKyqrMTCxIyOfKTCbLTOlDRKNARidOTe3OTm5Ly2vMzWxPzu9Pz+/PTy9NzW3KSmpJSSlNTO1LSutKymrExKTGxqbIyKjHRudFxaXFxWXBwWHAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIAwIBAaj8gBoVBEOg0HRMJJBSiMC4ChCmAYG44HFxKRTCiFitNywWQ0G07HU/mAAoBQoCAakUomBA4nCygDIUIeBSkFKisnJywtLiEvH0IvMAQvAiGELTEyMFtGowYOMyADAR4OHTRHB641HQcFMjY3akg0OAk5NII4XEI6OgqwxMrLR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kdf-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBPzy1PyaBPxaBExOTFxWXIQCBExKTERCRDw6PDQyNKymrKSipJSWlJSSlIyGjHx6fHRydBQWFFRSVNza3MzOzMS+xLS2tLSutCwuLBwWHLy2vPyeBIyOjFROVJyWnHyCfAT+BARuBGxqbCQmJIyKjCwqLNTO1Dw+PGRmZMTCxLSytExGTCwmLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQIBwSCwaj8iAYIAcEgpLA+GAqCYSCiFhwYg2HI8HBBJRSCaUdLRisVwwjEhGU6hsLpyBgdHoiCMEZh4VGBhRHw8gISIjHiQSBRYLGHkGJYlkIwQmZycFBHoGVShXKQQkdCoUFWxuK1wNIyiPHgQsU1UIVwq8j0ItJCRKA8EkJsVGUU1EocvORH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kdisknav-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCSeJCyWLCymLCyOLCSCJCx6LLT+tPz+/IT6hFTyVCTGJCyyLGxqbMT+xFT6VCzeLFxeXFRWVLSutLS2tMz+zJSOlIyGjExOTDw6POTi5Nza3MzKzLy+vLy2vNTS1MTCxKSepISGhERGRGxubKSmpCz+LExGTHRudGxmbGRiZHx+fMzGzLSytIR+hExKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIBwSCwaj8aAYBAYEAiFgsFgHBwQCcWCEaAaGwMH4gFhFCIRCbExoQQqiEXBYrlgMsKGZr8ZVAocHR0ed3kfIB0UEwEhIXQiI3gAJB+DExMljiYFFyeSKB8NKSkqKmhpK5GGGxytLIktIS6qAA22ESloEmkYL5JCI8EjJ8PFI0jIycrLAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= keditbookmarks-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLy+vLy6vExKTFRWVDw6PLy2vKymrLS2tAQCBKSmpMzGzLSytKSipIyGjKyqrLSutHR2dIyOjHx2fGxqbJyanISChGxubGxmbGRiZHx+fJSOlAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVeICACwWieY1CibCCsrBkMA3wSeGEcSGKbigVj0HAsGr+R4gFZLAaOSFKkkEwoFYkFMgVULwNGw7LofjEZDNmMuTQEkUk5pshmNBuOw5yRXCgaCjFUfYGDSoaHSiZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 key_bindings-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBISChMTCxPz+/AQCBFRWVFxaXGRmZFxWXGxmbPTy9NTO1KyurAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAROEMgZ6rw4iB1w3kPYeYAmhITomWioUuBAzOmruWntCl1x464BJ2A4/GQ7HkKCMJ6CHMMFkThGPcUbZ0kqVBU8KUlSXBDHlwKDi56wMf4IACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= keyboard-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBISChMTCxPz+/AQCBFRWVFxaXGRmZFxWXGxmbPTy9NTO1KyurAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAROEMgZ6rw4iB1w3kPYeYAmhITomWioUuBAzOmruWntCl1x464BJ2A4/GQ7HkKCMJ6CHMMFkThGPcUbZ0kqVBU8KUlSXBDHlwKDi56wMf4IACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kfind-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMzm9LTW5KzS3Oz6/Pz+/Nzy/Kza7HSuzGyivKzi9Hy21FyavEyCpNzu9PT+/Kzu/GSy1EySvDyCpJzq9CyCrCxqlIyKjNz6/HTS7ESixBx6rBRehLze9OT+/NTy/ITa9FSuzCySvAxqnARWhITG3HS+3HzC3DSaxBRynBxCXGyuzESaxDySvBR2pAxmlAQ2TExaZBRWfARCbERGTKyurFxaXISWpGSClExebCQmJLSutMTCxMS+xLy6vHx6fBwWHPTu9GRiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeSgACCAAGFAoOIgwMEBQUGBwgJiYOMjQUKCwwNkw6WBQ8QERITkwGeBRQRFRYXiQGVBRgZGhscrYgDHQYeHyAhIiMkt4glJicmISgpJCrDgyssKCgtLi8wMc6DFSkWMjMwNDU2kwA3ODkx6Trh44k7PDs1PT4/QOyJNadBNvbiiDsXAgq8wI9GO3KIbNgQgrChn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kfm-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xLy6vLy+vAQCBKS2xPz6/PTy/OTm7LzK1Pz+/ER2pER2rJSqvKzCzKS+xCxmfARGlGyWrDxyjFSKrAw+dGSKpKTK5LTa/Lza/JzK9GSu7MTa9LTa5MTi7OTu9LTS7KTO/EySxJy6zMTm7NTu9OTu/PT2/Mzi9Hy27DRWfHSWtGSKrLzi7MTq9Ozy9Oz29Fyu7HyetNTq7JTC7DSCvOzy/GSq5CROfMTi5ESW5Cx2nDyGrESKtDyKrCx6tBRitAQ+hAQybAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAevgACCg4SFggGIAQACAwSGAAUGBwgJAgqXCwyagw0ODw+Wl5cQpBGCEhMQAgaiohQUFacWoa0XGBkZGhobEqsKHB0eHwbECgcgISISFgojJCUmBifFKBkpKisWLC0uJS8wxMQYIDEAEiwyMzMwMC/hHyA0NQDZFwgfHyY2Jye/IDc4zFnIoQ7GhxcHDhjQcEGHoBU7eEjk0cOHDxE8fgAJMkiIx48gPT4aSbIkAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kfm_home-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGx+lHSCnJSerOz2/DxWdExmhNTa5Pz+/Pz2/Ky2xFxqjExifJSirPz6/NTe5Ozm7NTS3LS6xHyOpMTK1KyyvGR2lOzu9MzO3LzCzJyirJSetISSpCxKbLS+xKSuvISSnGR6lFRujFRqhJSulNzm3JSilKSypLzKvKy6rISahHySfGyObGSCZExqTIyejNTe1NTa1IyWPKyyNMzGLFR2VERiRIyijMzazNTi1Nzi7IyiNMzSHPz+BDRWNMzWzHSKdMzKzFx2XGyGbLSytCxOLASyBAT+BJSSlAT2BAR2BCRuJAS2BARmBARqBJyqnFyaXASKBASiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe5gACCgwABAoSIhAMEBQaJggYHAAMICQoFC48MBw0IDgQPA42JBpSeEBESE5iIlAkIBBAUFQMWo4KUFwkOFxgZGhscFh2ZDRAevh4fGyACIRYiDAUjgiQlJSYnKCkqKywtLoQvMDErCSUnMjM0NTaENzg5KxA6Jzs8PTU+hCo/OEBB0KloIcTFvkEr/A0hEoOECiA1XBQhtMLIkRZIUNxYkUSJkSWEmDRx4gLJEyhGokSRYuSRy0F+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== khelpcenter-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBDyCxCyCzCyS1Fy+/ITO/IzS/Gy+/Fyu/DSS5BxatFS6/Iza/LTm/MTq/LTi/JzW/HS+/Eyu/Cx65AQmTGS6/Lzm/Nzy/Jza/ITK/HS6/Eya9CR+/AROvAQaTDyO1KTe/Pz+/Mzq/DyS/Bxy9BRe3AQylGS+/MTm/Oz6/Mzu/Bxi3AxKxAQ2nAQWTCSCzHzK/NTy/KTS/Hy29EyS7BxSzBRGvAQypAQibBSa7HTK/LTe/EyK7Cxm3Aw6tAQulByKzFzG/HTG/ITC/IS+/Dx25CRe3AQifBRqlCye/HzG/ES2/Eym7Fym9BRSxAQmjAQSTAx+3DSS7DSG5DyC5BRCvAwunAQihAQKJAyC3BSK/BR25ISexERmvAxWlAxmzBRezBRSvAxGtAQeVAQubAw6jAQ6nAQaXAQmZAQqdAQSNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfEgACCgwABAoSIggMEBQYHCAkKiQALDA0ODxAREhMUiBUWFxcWGBkaGxwdHoMfIBchFyIhIRsjJCUmgycoFykhKrMjEyssLS4ALzAqKjGxMjM0EzU2NzgAOTooDBg7syE8PSw+P9ZACw9BQkNEs0VGNuNHAEhJSktMTRuzK04+N09QBEWRkETKFCqzalS5YeUKlkFZtGzh4i1Elx9HAg7y8gUMizBi/P0A+JDQGDJlzNww8eTImUmCXKBJgwOKGpg4CfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kicker-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBHR2dIR+hHx2fKSipPz+/CwuLMzKzMTCxJSOlMzGzMTGxEyqBJSSlFROVHx6fExOTOT+xLSytKz+ZHTuBGTaBESCBFy+BLy2vHx+fKymrAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV7ICCOZGmeZSAEg+q2q2ASRW3XhCEeyJEUB4UieFgkdAAGr1FQDByLB+TwQEYYip8TIpUoBMjJVRuAQCTFqohSsfwOA0hcsgCLLhYEE1GWxKlIeVlABxIYhgh2AAgKek2NQQt1OgQNGQIPGgkCnA+YdgahoqOkKKanJX4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kjobviewer-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNTS1KSenKSinKympIR+fNTSzMTCxKyqpKyupJSShOzq5Nza1OTe1OTi1MzCpJyWjOzq7Pz+/Pz+9Pz+3KSifPz2/Pz6/Pz29Pz65Pz61Pz+7Pz+5PTuzKSmpPTy9OTi5Ozq3OTmzPz21NTSrKSilPT27OTe3Oz2vKSelJyalNzW3MS+vLS2rLy6pNTSvNzWtKymjMzGtLSulNTOrIyKhLS2tJSSlISGfISGdHx6dIyGhLy2vIyKjHRubHR2bOTatOzivISChFRSVDw6PMzKxPz27FxeXHx6fDw2PHRudMzKzIyOjIyGjFRWVFxWXJyanMzGzKymrDQuNAwKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfQgACCggECAwQFg4qCBgcBAwgJCgYIi4ILAgsMDQ4GDxCWABESEhMTFKgPFYoWFxYYGBkaFBscGh0egx8gISAOIiMTpRokJQqCJiAnDAwOHRukKCQpKoIrLCwtLi8dHSMjMDEqx6IrjQYNMjMPNC0KNeQRNjceBgk4OSklEDo7O4IReEC40cPHjwdAgkDwoaMHoR5ChhD5USSEESM7jiARIujGjiFJlCwxQUoCkyFIBG2UqKTIh5ISbihq4iTJEyg2DhyIcqCIFEVDplAJZclPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 klpq-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNTS1KSenKSinKympIR+fNTSzMTCxKyqpKyupJSShOzq5Nza1OTe1OTi1MzCpJyWjOzq7Pz+/Pz+9Pz+3KSifPz2/Pz6/Pz29Pz65Pz61Pz+7Pz+5PTuzKSmpPTy9OTi5Ozq3OTmzPz21NTSrKSilPT27OTe3Oz2vKSelJyalNzW3MS+vLS2rLy6pNTSvNzWtKymjMzGtLSulNTOrIyKhLS2tJSSlISGfISGdHx6dIyGhLy2vIyKjHRubHR2bOTatOzivISChFRSVDw6PMzKxPz27FxeXHx6fDw2PHRudMzKzIyOjIyGjFRWVFxWXJyanMzGzKymrDQuNAwKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfQgACCggECAwQFg4qCBgcBAwgJCgYIi4ILAgsMDQ4GDxCWABESEhMTFKgPFYoWFxYYGBkaFBscGh0egx8gISAOIiMTpRokJQqCJiAnDAwOHRukKCQpKoIrLCwtLi8dHSMjMDEqx6IrjQYNMjMPNC0KNeQRNjceBgk4OSklEDo7O4IReEC40cPHjwdAgkDwoaMHoR5ChhD5USSEESM7jiARIujGjiFJlCwxQUoCkyFIBG2UqKTIh5ISbihq4iTJEyg2DhyIcqCIFEVDplAJZclPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kmail-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOzm7LS2tPTu9PT29PTy9Ozu7MzKzLSytNTS1OTe5Pz2/Pz+/Pz6/Nza3OzG/NyG/MTGxOTi5MzezNzq3LTStLS6tJyinJSqjJyylMzmzJzGnKyyrMzOzNTi1JS2lGyKbJTClOzq7LzCvFx+XGx+bLzivHSadERaRHyqfMTCxLy6vLzOvGReZKzerFR2VExuTGyebKymrJSylIyWjKTSpJTOlGyWbGSSZJSOlISGhJyWnJzanIS6hHSmdExuVHx+fGxqbGRiZFxaXNTW1MTKxLTGrFyGXBQeFIyKjBwmHAwSDDQyNGxybIyejISmhHymfFRiVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfGgACCg4SFhQGIiYkChQMEAQUDBQaRBwiECQoBBAsMng0OCZeDCQ6IDAsPEAyIEYQHDhKbDQSPDhMUFaQJsgMBAxYXFxgZGhuCBwkJiAYcHR4TGh8gIQCxDqEiByMiJCUmJygpAAEHByoHASsOLC0YLi8wMQAJESsIMgQjATM0NTYobuAAICNHDh07ylGosYFHjxs+fgAAEkTIkBZEihjZcOOIjxsokBhK0gEDiBckUChZYggAkyZOnkC5EaUlISRKlIgc5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kmenuedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBDw+PERCREQ+RPz+/NTS1NzW3Dyq/ESu/BSe/Aye/KSepJyenASC5IyKjKSipOzm7ISGhGxubASC3HRudKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWDICAGwkAKpCmugEC88BuwY2EYdiGUgSoKB8RhiBjEBKtAQsFkBnKG2YIxaFivAaFQ4HhAHjFZUzGISBYQRmG9DlwnyAgFXVnUK0bYQGRGM2BPbEh8cxAVawMDPIMAZRIFDgwPCw8zNAEVDhEOMXs0A2yhBZYsmHandZ4sJqw9Aa8rfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kmenu-16:apps apps16 16:photo:16 16:R0lGODlhFAAQAIYAAPwCBOTi5GSmZMzKzNTS1Nza3JTClKTG1KzK1Ex2jPz+/KTGzFyGlJzKnGSGnDxifDRabBw6TLy2vJTOlLTqtJy6xGSKnIzKjMzuzOT25ISirDRedHR2dKSepMS+xLSutIzGjLzqvCRCVBwaHCwmLERCRHRydIyOlESCRGSuZGy+bGy2bDxiPHyOlBxKZEx6jBwmNBQSFBweHGRmZDxqPFSaVFSiVDxePCQiJBQuRAQCBAwKDDRaNJy2xExqfCwqLBxKXDw+PDRONKSipLS6vHx6fExKTFxWXFxeZJSSlISChKyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAUABAAAAe9gACCg4SFhoeDAQGIAogDBAWIBo2CBwgJAAMKCwwFnoQNCpQHDg+VEBGeEoQTFKIAFRYQAAuoCgMDhRcYGaIaDhsHthwdHh+EICEYGKIWDA4iCiMkJSYnHoMoKSorLC0MLi4ILzAxMTIlM4M0NTY3OL8uOS4LCTA6OzGENCg8Ojo9wAGYt8AHjhE7CPHwp+NHDwcuAJTIAQRIkBJBCAn5J2gIkRMAihg5gmSGOkSFkigpghLRkg5KWso0ZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= knode-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLy6vLS2tLSutPz2/PTy9PT29JSOlGxqbNTO1HRydGReZHRudIyKjPz6/IR+hOTe5ISChHR2dPz+/Ozq7Hx6fJRmLJxuNMS+xMzGzNza3OzGjPTSnPzerPzepNze3NTS1HxWJOS2dPzapPzirHx2fHRSJNyqbOS+fPTKjAQCBPzWnKymrMyaVOS6fKSmpHxSJMSSTNSiXOSydOy+hMTGxLy2vHx+fFRWVHxWLMSKRNSmZKSepFxaXLyGPKRyNFROVKx6NDw2PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfYgACCg4SFggECAYoDiogBhQEEBQYGBJSXB4+HBggJCgsKAQwNDg8GDZudDBAREg4KBQ8TD4cUDg4EDhO7BBQVBhKCFhfDFgEYGRkFGg8UwRYbHB0eHRYfFAYUIA8aCAAhIhwcIyQWAwoSJSARIN4mJygpKisWLBkQEBnsC98tLigbLBx4gUBCBQwPMvCDEUPGDBQ0zNUAAcLGDQw4AOTQ0WLHjBkReQwYwCOCgB4ATPiI8eOHBQtAFpSQ8OAGi4wwguhYaUGIECA4cPTAsSBjShgwTBgq5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= knotes-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBPz+5Pz+3Pz+xPz+vPz+pPz+nPz+lPz+jPz+fPz+bPzqBPz+1CwuHDw6HFROLFxeLHx6NJyWPOzqXPz+VPTWDPz+hPz+dPz+ZPz+ROTGBFRSJGxqLHx+LJyaNOzqRNy6BPz+XPz+PPz+LNSyBDQuFIR+LLSuPPz6VPz+NMSmBPz+TPz+FLSWBERCFFxeFJSOHKyqHOzqJPz+BPz+DPz6BKSKBOzKDLyeBJR6BAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ5QIBwSCwaj8hkMSAYEAqGAyKhWBQZjYbjAYlIJpRK0Qm1JC6YDEVTJGg3nI7nk8mAitBEAhOiiDIjJEUGJRAmJygZIikjKkUWaBQriyksLC1FCSUuLzAxMpYzmEQKFBmMIyw0MzU2RQsVNyAkKio4OC05Sru8vUV+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 komba2-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Hx6fGRiZFxeXGReZPz+/PTy9Ozq7OTi5OTe5Nze3NTS1CQmJAQCBKyqrDw6PIyKjPz6/OTm5Nza3CwmLPweBNwCBAQC5AQCtGxubPz+BPyaBATOBASaBASeBLSutHRudMS+xKymrKSmpJSSlCwqLBwaHKSepAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAabQIBQGBAMBAQjUjAcEgoFwwGRUCwYTeEg0eh6HVhAgDAomwePLiQ8gEYkieqEoqYIBYlCxVK4YMBdGWwJFoUYh2sQAQ9sCgUaGwUcHRAUBAxhAFsbnB0eHYILHyBhBAohHyIjJBmMGWiZDJZlBCWYt2wFVVULDqQmWVsnigEZAg8UwE0DsrcUt8pZQiYRUFDR0iYmEAUQJg1NfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== koncd-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGRiZPz+xNTO1Pz+BOzq7MTCBKyypGxubHR2dIySfNzexMTGtLSytKSipJSSlISChPz+/OzW7ISGlISCpMS6xLS2xOzu3MzKzGxmfHx+lNTS3Nza3MTCxLS2zOTS5OTe5AQCBLy2vKymtNzS3Ly6vKyqzKyqrFxWXMzGzLy6xDQyNNTWzISCjIyOpJSarMTKvGxudHR2fIR6hISGjJyenAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAafQIBwSAwIiMSB0DgIEABGZGFAdRoIV+QBkVAsGAaB2EBsOB4QiIBAEETWbYBkQqlYGJdAeDzEZDQWGxwBEViGQx0QDh4fhAIgIQQdIUcAIiMVJIQcECGUJSVDD5kBIIkhJhoIDyNCJyiNKRABISoeFLMBQhEjAYkrISwtLi+zQxEBGBDABzAxMjMoRb8hNDUOuUiywFAB3khCyyHg5H5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= konqueror-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrDxuxMTWvLTSnKzKnHSizGSetFyOzDSChLzepMz2lMT2fKTibHTGVHzKZGyaxFymhEyqHGSyfOT2zPT65OT+tLzyhIzSbEyetDR65ESGxDyOdBRKbCx23FymnMTqrOz23Nz2zIzKzFyqrEyC1DRyzDRuvBxeLBRSDHzCpOz27Mzq/Gyy3EySxBxexBxWTCxq1EyO3ITCxLTmvJTG7GSi5Ex+zCRevBxGZDRu1ER21HSyxJTSjHSurDx21BRKrBQ2ZBRKHCxu1FyS3KzahITSNITOPGy2TBxipAw2hAwuNDRmzEx+1FSKxFyuJDSOHAQqZAxOtCRWvBxWvGSanJTKbFSiLBQybAQeTBxKpERulFSKPDReRAQGFAQCBBQ+NAQeVAQOJAQGDAQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgACCg4SFhgABAgOHhAQFBgcICQqMCwwNDg8QERIThhQVFhcYGRobHB0ehB8gISIWIyQlJicoKSqDHwkrIywtLggvJzAxuIIyMxo0NTY3MyY4OTrGADsfPDc9PhI/EUBBQkODMidERTdGR0hJSktCTIMwTTBOTwsPUFEeUlKFU1RVmli5giWGkCxaDC3ZsoVLFy9CpGj5AsaQFn5htIgZA6bjITJjyJTp6JGRSQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== konsole-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOzq7Nze3NTS1MzKzNzW3KyqrISGhISWhIyGjIR+hIyOjJSOlJyanJzGnHyKfFxyXFxmXERWRExKTEQ+RERCRLS2tHR6dJyunLS+tGyGbExiTDQ+NGSGZCwyLCQqJFRWVMTCxGxmbHRydFRSVERKRCwmLBwWHFxeXCwqLDw6PBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIBwSCwaj8aAYEAYDAoEpMBwQBwSigWD0aAOBweD4wGJSCaUClY4sFwwGc1GQuFwKIwIexG5dCBzHB4fIAoTQiEiIIt0goMiI0MGJCVodh6DJhcgQxYNCYqCHx8nFCIURCJZC1giJSUoIClGIluKILGoRgsWAwogFCorJ0gLCyjBH0jLzMx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kontour-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAOTi5Nze3Nza3GySrNzW3NTO1MTGxMTCxLy+vLy2vLSytKSepPwCBNTW1EySvMzGzLy6vKyurKyqrKSipJyenJyanIR+hNTS1FyqzISWrMS+xHx2fKSmpJyWnJSSlIyOjHx6fMTS3PTu9GSy1DSOxNzi5IyGjOTm7MzOzGRiZEzC9HSivPz+/PTy9Gy+3GTa9JTWlGS6ZISChFRWVMzKzJzO5Kze9Jze9GzCbGSeZHx+fGReZJTK5GzO7AySvLSutOzu7BS65GSWrLS2tKymrGS23Dx+tHTO5IyKjGxubKTK3Lzm9HyivHRudFxaXHy2zKTC3FTW9AyCrGzG5Gzi/DxqfGxqbCxulCRWhARWhBRmjFxWXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAwALAAAAAAQABAAAAflgAABAgMEBQUGBwgJCgsMjwIEDQ4GDwgQERITFBUWkBcXGBkPGhsbHAsdHh8gDA0hIiMkJSImFicBBCgmKa4PsSorLMMNwwEWvQ8PLS4vLiLDLDAxKDIzDDQIIjU2N8LDODk0OjsMDwknPBg9PtDDBAcW1xo/QC4OPEFCxh0SG71DiAQoYuTEERchWPxggSTJNQUUAtxjoWQJExYCGjVxwoADhQc8nkBxEEVKNA4OGSzwkOBJjylUogSp0sRKiibXGFgwcQULlixZtGRJ0oRoTp07UszY4cTJFqczoj6aSrXqVD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kpackage-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMTGxMTCxLy6vLSytLSutKyqrPTy9PTu9Ozu7OTi5Nza3NTW1NzW3MzKzIR+hGxmbFxaXFROVExKTERCRHRudGRiZKS6tPT2/JympHSOjGSSjFSKjGxqbJyenGxubHyanEx2bDx2bJTGvLTe3ITKzKSepJSytMzi1Ozy9MTi5ITGxJSWlFRSVIyurMze3HzGxJSOlFRWVEyKfEyGfESOjCyCjIyKjKSipHSChDRqZDxuVBxGRDxORFRqXNTq3Nzu3IS+hCwyLMza1JzKpMTixITCfFyeZHx6fNTS1ISChKzStKzWpHS2bDRGNCwqLIyijGSCbFxyZExOTJTClFySXDw2PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe0gACCAQIDAwQFBokFgo0BBwgJCgoLCwwNDg+NAAIIEBEREhITFBEGFZsFCRYXGBkaGxwdHh+pChEgISIjJCUdJhCbJgoSJycoKSorFSzBjQ8NLS4vGBgkMBUxzo0NMi4zGzQ1NhU324IDODk6KDs8PBUVPZuNPj9AQTtC9I5DRChFjBzxcQMJvyQNlCxh0sTJExky+AkoYAJKFCkyIEyhwC/GBwhEqFTpQcHKE34oU6qk5ycQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kpf-16:apps apps16 16:photo:16 16:R0lGODlhEAARAIYAAPwCBHyWpJy6vHySpGyClKyunNzWxLTm7MT+/Hy63GSWtKS6xPz+/Nzm3KSyrJza7JTi/ExidHSatLy+vMTW1Kzu/Jzm/HSmxCw2RHSmvJS2xOzu3Kz6/IzW9DxKVHymvKTO3Ky+vITG7DROZHyqxKTu/ITO5JS6zLTGxIzG5HSy3FyKrBwqNJzi/LyqlPzyxJSShGyexEx2lHy+7JyalOzKnKSGbAQCBExmfIRqXEw+LCQeHLSadEQ+LHRiTNzGpMSefEQ2LOzevNSyjFxOPPzy1LyujLSafHRqVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABEAAAeHgACCg4SFhgABAgMDh4MEBQYHCAkKjQALDAwNDg8QEYcSE5kMFBUWFxiGGRoMGxQIHB0ZHoYfICEfCAgQIgojhiQdJSYnKCkqKyyGIyodLS4vMDG/hzIqMzQ1NiM3lh4EODk63ZY7PDk9PuSNNz82QEGWg0JDQETygkVGR/f4SEQ9duDDZycQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kppp-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrER2vMTWvLTSnKzKnHSizGSetFyOzDSChLTerMz2lMT2fKTibHTGVGSa1FymhEyqHGSyfOT2zPT65OT+tLzyhIzSbEyetDR65ESGxDyOdBRKbCx23FymnMTqrOz23IzKzFyqrEyG3Cxu1DRuvBxeLBRSDFSW1HzCpNz2zOz27Mzq/Gyy3EySxDx21CRevBxWTITCxLTmvJTG7GSi5EyK3EyC1Ex+zBw6ZBxaDDx+zHSyxJTSjHSurGyaxBRKrBQ2ZBRGFLy2vKSmpJyWnIyKjHx6fGxubFxWXITOPGy2TBxipAw2hAwuNLy6vKSipIyGjIR+hHRudGRiZFRWVERCRDSOHAwqZISGhHx2fFxaXDw6PAQeTExOTDQ2PAQCBFxeXCwqLAQSLCQmLCwuPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe8gACCg4SFhgABAgOHhAQFBgcICQqMCwwNDg8PEBEShhMUFRYXGBkaGxwdhB4fICEVFCIjJCUmJyiDHikqKywtLggvMDEyuIIlJBkzNDU2Nzg5MTo7gyUwPDY9PhE/QDBBQkODREVGR0hJSktMTU5CT4JQUUZSU1RVVldYHVlZg1pThmwZkmQIly4y3HkZtKXKBS4XvlwAA0ZIFi9hwggSUwXLF49YwIzxQiajRkFjUo4pY2YMGJMnGcn0EwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kpresenter-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIcAAPzy/PTy/PTu/Ozm/PTm/Oze/OTS/NzK/NzC/NS+/KyG/PwCBNzS9NTC9Myy9MSi9LSO/KyC/KR2/Kx2/IxG9NzK9My69Myy/LSO9KyC9Kxy/KRu/KRq/IQ6/Lyq1IRupGRedFRKZERCVExCZFQ+dGRGlGxKpJRW7FQurLSi1IR6jIyGlJyanKyqrHSu1HSy5IyqxKSarHRufFxChEwqlMSy3KSepMTCxNTe7KTO7CyS3ARivARixJSOlEQ2ZOTa9JSGrIyCjNzW3Pz+/ITG7ARy1ARGlAQaNNTS1ARSnGy67MTW7NTS3LSqvHRyfLSyvAQiRAQCBAQePDye5LTW7JyOpAQWJESm7Oz2/KyirJyStJSGpLza9Fy27ARWtARatHS27Nzu/MzGzIR6lIRqrKymtJy+3ISu1JSqzIyitFxGhJRqzIxexHxarHRenHxylJSSlIyKjGRiZGQ6lDwCpMyq/Kx6/JRi7IxW1HROtGQ6pGQyrFwevGwS9GwS7EwCvJxi7JRS/HxC9HQe/GwW/EQCtGQ2rFQerFQStEwGvDwCtEQCvEwCtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAj/AAEEACBAwAACBQwcQJBAwYKHAhhIbJDAwQMIESRImEDhIQADDCogsHDhAYYMGjZw4NBhgYAKFQ54+AAihIgRJEqYOIHCZYUUKlawaOHihQsYMWTMoLGAQA0ZNm7gyKFjBw8dOVr08LHgB5AgQoYQKWLkCJIkSpYwAbGgiZMnQ8TygBIgipQpVIZUWVAlRtghOchasWLkCpYhWRZo2ZKFyRAuXXh4+VIETBgxYxakIPOhShkkZs6IRpPmSRA1CxysYdPGzZsgVVjYgBNHzhw6C+rY0XAHT548Jkzo2cOnj58/D0/cARQokKAOgwYRItSHUKGHC04YMnQIEaJEihQtC1qkiBH28+jR+wkIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= krayon-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIcAAPzu9Pzy9Pzu7Pzq7Pzm5Pze3PzW1PzOzPzKzPzGxPyOjASC/PzGzPy+vPyyrPyqpPyWlPySjPyGfPxaTPzO1MS6vNTO1MzOzMzGzMTGxMS+xJyKjOR+bPxKRPz6/Pz2/PT29PTy9Ozq7PTu9OTi5OTe5IyGhLRWTNwiJNTKzDTyNIzOjPz+/IzulOT25Nza3IyChLRaTPzm7MzGxCzqLBSuFCTSJCyyNMTqxNTS1IR6fLRSRPy6vJT6lBTuFBTeFLTutMzKzHxydLRKRNwuJPy2tMTCxHzyfATCDJTulMzizHTObFSybDSGXFRmVLwmFPzW3PympOTm5ITqhATGBPT69HzGfCzKLISqdGzONGTSLFTaLDyqRExaNPTOzLSqrKTipLTmtKSipOTi3KTafGSyRFxKJPzKxPyOhKSepJSSlISGhISChIyOjNzm1HSqVPy6tJySlHR2dGRiZExOTOTq5ISadFRCNPyurPyShOx6dLxeVLRWVKxSRKxCPLQ+NHxubFw+PPxqXPRyXPRqZNxmVORaTORKNJw2NHxeXISmdGQiFNRCNOweBOQSBMQSBKQOBIQKBHQSBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAj/AAEACCBgAAECBQwcQJBAwYKHABQeYNDAwQMIESRonACRQgULFi6AtIAhg4YNHDosAEDhgocPHkCEEDGCRAkTJ1AsEHAghQcVK1i0cPHyBYwYOmUwmPGBRg0bN3Cw+JBDx46kPFKM6OHjBxAWYIMIGUJkQYEiRkYc+VEDSRIlS5g0cfJkAZQoGqRMoVLFyhUsWbRs4dJlgRcFX16AseKBRRgxGcaQKWNmwRk0adKoWZNGDJs2Lzy4eVMZjoQ4anTIkTOHzpogH+rYubMATx49e/j0GeLnD6AKIqTYCfRQ0CBChQoZOnQIUaINisoseriA0CFGjRo5cvQIUqRIkiJRBh9PnryfgAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kreatecd-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLy6xKy2xMzGxGxudHx6fLSyvNzazPTy5Ozq7HR2dKyutMTCxOzq3MzKzKyqrJyWnJSSjLS2vMzOzPT29PT21Pz21NzatPTy7OTi5MTCvPz23Pz+/Pz+7LSytNTO1NzW3KSirOTezPTuzMS+pISCdGxuhISClKyqvIyKlLy6pLSunFxabHRyjJyetMzG3IyGhJyerGRmZLy61Dw2PFRWVHRudKyqxFxWXGxqbJyanLSy1ISGhIR+hJyepISChMTO3ExKTLy2vMS+xMzS3CQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAejgACCg4SFhgABAgOHhAQFBgIHCAmMBQoFCwwJCA0Hhg4PEBESExQVFBYXhBgYGQMaDBkIGxwdFxGDHh8JFCAhDyIjGyMkJYMmJyggASkqBysqKiksgywtLi8oJyEwEQcDMTKDKSEBMzElNDUOvBk2hOY3Jzg5DzoBHyA0hDc7EAQ8AjzoAUOHuEI+fkBwAESAAhtBGOEQMoRIjBpFGGncuNFPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kshowmail-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMTCxNzW3PTu9Ozq7NzK5MS+xLSytLy+vLy2vOzm7Ozi7MSW5MSyzKyqrLS2tMzCzOTe5Mya5LSKzKSipLy6vJymvNTS1NTC3KzGpMTipIzCjGSetGyifIyepHSerExKTHyWrJzOrOT2zKTarEyOxDR6pFR6bFSOnGymrGSGjExytFyexLTa1IS61CxitDxmZFyGjGyepKyytBxOlDx61GyizFymdESGlHSSlIyOlJSWlBxWtER2xHyybDx6RAwubAQSLBQWHCRGVAwqRAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAd/gACCg4SFhoeIiYqLAAEBAgMEkgUGhgcICY8ECgsMDYYOBgEPEBEEERESE4UUCRUUFhcLBRcYn4QUGRobHB0IHh8HASCEISIjJCUmJygpKg/EgyssLS4lLzAxMjMN0YI0NTYbNzQ4Mjk6O96CPD0+P0BBQvOIQENEQUWM+/x+gQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kspread-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIcAANzm5NTm3MTi1MTqzLTmzLTmxKTivJTetIzetITapGTSlPwC/LzixKzevKTevJTWrIzWrHzWpHTWnGTOlFzOlFTKjESydPz+/Pz6/PT29Pz2/PTu9FTOhETKjDyuZKyqrJSOlIyOjJSSlJyenJyWnKymrKSipJyanJSWlDzCfDR2TIyKjFy6ZGTGdESmTKy6rHx6jNTO9Dy+fCR6TISChGReZCxyROTi5HR2dKyipLy6vNza3MzOzDS2dDR6VGxmbLy2vMTCpMzKdFx6xGyGtDSybKSepNze3OTelPz6dPz6bDx29BxW3BROpCRqXGxqbNzWnPz6rPz+5Pz6xHym/BRKzAQ6hGRmZPTuhPz+1Jy2/FyO/Bxe5AwynAQWRGzOlEy+hES6fPRGTPx2dPyurNzaxMTWxLSytCwqLGzSlEzOjEzKhDzCdDy6dDy2dKxWPPw+RMyifIzujGzqdGy+dFRWVBQSFESqdDS6dDS+dEyWXGx2PCzONBSmHBxmJBxGLDxyVCSCLByKJBR6HBRKJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAj/AAEECCBgAIECBgwcQJBAwYKHAgQwYNDAwQMIESRMoFDBwkMADARcGHkBA4YMGjZw6OBhwQcQIUSMIPGhZgkTJ1CkULFgBYsWLl7AOBHjQwwTMUjImLGAxokTJj7UgPEhhIkVJFDIsNETAIkbJHDkuKFjhw4eH3r46IkC7I0fI3QACSJkCJEiXEHcEAEWh5EjSJIoWcKkiZOeIk7k+PDkBJQoUqZQWVLFSs8rNa78CHECS5aSWrZw6eLlC5gwYUzkKCFmDJkyZs6IqIEmjZo1bNi0cfMGThw5c+jgqGNnwR08bPDk8aBnD5/nffz8ebigCCBAM7LbCCRokB9C06mLBR8v3k9AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= ksysv-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBISO/Iya/IyW/HyO/AxCzAwuzAQizAQe3Fxq/BxK1BQ6zAQqzAwe7BxGxAQyxAQmzBQq7AQutBxGzBQ+zBw23BQu3Pz+/DRK9DRG7ERW9Exi9FRSVFxWXISS/BQ27ISOhISChERGRDQyNGxqbCQ27DRS7MTCxMS+xKyqrIR+hGRiZNTW1FRm/CxC7JyanIyKjGRmZDw+PMzOzCT+JBx+HGReZEQ+RNTO1KyurLS2tKSipIyGjHx6fFxaXNTS1GxmbFRWVHR2dMzKzLSytFROVExKTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfHgACCAQIDhYKIiQAEBQYHCAgJiogECgsGDJANkooDBQ4LDwwQCA0REooCExQVCxYVFxcYqIkDEwWusBcZGrSIAguxurwbBhwdHBwAHh8WsRcfxBIgISEiIyQJEREXJRgmGxInKCkq1yssLREfLia9LzDVMTLYMygtBhL5LyA0NSo2boxYgSOHDh0pdrzgQS1EDx/0SPwAsiKGj4s+giQTYoNejCEsfgyZMU4HkYRCOESMYdHGRQ4+OBQRYYSeIBk4c+rMKchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 kteatime-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBKxeNNSGXMyOXOyyhOyqhNSKXMR2TKRWNNyabOSmfKROLNSKZMyCVLxyRLRmPIxSNLxqRNSWZLRqRJxOLIQ+JIxCJKxmPJxKLGwyHAQCBIw+HGQqFIQ2HFQqFLRePCH5BAEAAAAALAAAAAAQABAAAAViICCOZGmeZyAMRGEcAYocCaEMMLocTJE0jsUDYlpEBAlJY0KpWIqPRuJ1wQAyxQBP4AhYNNjSQss4BDecMGmxcDRggU7HU1x83p9FR3NaYAIOMHooFmMTARgdaiiMjY6PfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== ktip-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPz67Pz2nPz2ZPz6XPz+3Pz6ZPz+lPz+vPz+rPz+pPz63Pz6tPz+/Pz21Pz+tPz6pPzqVPz2lPz6fPz23PzuhPzylPzWPPzutPz2jPz+zOzWLPz+nPzidPSyBPTebPzyjOzCFPzeXPSeBPzSXPzufPTGFNyiBOSCBPzijPz+7PzWVPzujNySDPz6/OSyPPzePOSqFMRyBOTm5OTGfPzSJOSqBLxyHLyGXPzm5PT29HRydKyurLy2vISChGRiZGxubMzGzIyGjFxaXGxmbOzq7FRSVFxeXKSipERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAebgACCg4SFhQECAwQDAgGGggUGBwgICQoGC4YBBAwNDg0PChARjoQSEwsBDRQVEBYXGIUDGRqrDRscHR4fhQQglh8KIRYiIySFICUcCSYKJxEeKCmFKissAiEKLR4tKKWDLgsvKzAmMTIoFC6PMzQ1Njc4OeuPOjs8PT4/Oo+DQEEuhAzpN4hIjyI+jBAUdARJviQLBRkBAtGQn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kview-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBIS2JKziBJzuBHzaBITaBJTaBGy+BFSeDKzGBNzqBOTuBOz2BNTyBKTmDHzSBDyGBISChMzeBKS+BLzSBMziBPz+DLzuBKz+BEyGBDxqBHR2dJSSlLSytLy6vMzCnNzeNMS+nMTOPGRiVEQ+RHx2fKymrMTCxMzOzOTi3MzKNMTGxLy+LFxaXERGROTe5Nza3LS6VLSyJFxeXIyqvGyu3GSOtER6nCxahBRCZLS2lLy2vKSiHPz+/DyOxCR2rBRWjAQ+dKSipLy2rIyOLGReXEyGtJTC5BxqpAxKhAQ+fAQqbIyOjJyanBxqvAQ2fAQeXHx+fIyOXGReZMS+xJSOlGxqbISGdGRmZJyehHx+dFRSVDQyNKSmpKy+PJSiTBwiDGx6LLS6PExaJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe8gACCg4SFhQECAwQFBgcIhgAJCgsMDAoNDg8Qj4QREhITFBUWFxgZGoUbHB0eHh8gISIjJIUlJicoKSkqKywtLoInKyspLy8pMC8xKDIztAAwNDU2Nzg5rDo7PDPAACk1PT4/QEEcQkMdREXPMEZHSElKS0xN6ETOgi84TkpPS1BRmngwIWUKOyodTAipssFKExRCruAbNGXGlClYVHnIomULF0MzsFjh0MWDly9bIBECE0aMlzEqYwryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kwikdisk-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBISChHR2dPzy1PyaBPxaBGxubGxmbFxaXFRWVIR+hMTCxMzKzIQCBKyurKSipJSelJSSlBQSFPz+/PyeBOTe5Nza3NTS1IyKjBweHOzq7ATGBARmBPTy9HRydHRudHx+fOzm7Pz6/LS2tLSutKSmpJyanJyWnOTi5MzGzJSOlGReZFxWXGxqbNTO1MTGxLSytISGhBQWFPxeBGRiZExKTDw6PBwaHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaWQIBwSCwaj8aAYEAoGA4IRKKoWDCaDccDEolIhoGJmFJoVCwXBiYzVGguFyxkw8EYvsJAx2MgNz4HgVFSACAhIh1YCyMkJQ8mJ14eBwYBWBMdGihoKV4AGRkKZQ2LDnMcKgd4AHoHgCsILAkJAS2rCiiYKBcuLwswMQgyQ0sEMzRRCTXLNqsAWBkSMhI3EtZFo0jaSH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= kword-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPTy/PT2/Ozy/Oz2/OTu/Nzq/NTm/Mzi/MTa/LzW/Iyy/PwCBMza9JyanHSm/Hyq/ESC9Pz2/PTu9Ly2vKSepGye9GyW/ESO9PTy9Pz+/Pz6/Ly6vFyS9FyK/CxmrMze/NTO1MzOzHR2dFxWXDRirOzu/JyWnOTe5KSmpGR6bIzKtGS6jHy2nMTS9OTi5KTCtIzKvESShGSmpFyapLTK9IyevFxaXNTS1Ozu7Ozq7KTOvFSWpGyqxEyKtDxedJy67HR2hFRWVIR+hMTGxMza1FyWrGyOpEx2zCRGjHSKvHR2fHRydMzGzIyurISapExGTCxexAxGnMTW/FxidJSSlNzW3GRudIyWpJSOlBxi5ARGtFRWbKymrKyqrIyOjBRi/KzG/Dw6PLSytKSipARCtExurDQ6TCQiJCwqLARCrCxCdBxGlBxSrBRGtARKtAQ+tARKvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfsgAAAAQIDBAQFBgcICQoLjwAGDA2UlQ0ODg8QkAYGDRGgEhETFBUVFhcLGAyTEhkaGRkbGQ0cHR4LAB+TESAgIbQNIiMdJAslrCYRGswZEScoKSorLCUJLcohvhESLi8wMTIzJTQ1Njcayzg5OjI7PD0+BT9AQUJDvxJEMkVGR0gLPiRRsmQEkwg5TjTZ4eQJlCgLpEyhQiXIkionqli5giVIFi0LaGzZwGXEky5VvFBBQSHIF5BgtghZ8iSMFzEmTFAY45LMozJmzpxB8yTIkxFBtrhM82jBETVq1rBp4+YNHDdaqjbdypWrn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kwrite-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHTSnFzCjGTClGTCnESejEyenESerESSpHR2dFSilEyarEyevEyOrDxebJyanPz2/Pz+/KyqrFSOpERabKSepPTy9MTS1FSGlERuhDQ6PPz6/IyOjIyWnGRiZLSytISChLy+vNTW1JyWnIyKjLy6vNza3MTCxPTu9OTi5NTO1FxeXHx2fHx6fOTe5GxubMzKzIR+hExKTKyurJyenHRudFROVBweHGxqbGxmbERGRDQyNCwqLAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQIBwSAQEBIOiEkAoGA6IZUKoWDAaDuUDEpEoEBOKsmKJmC+YjEZp2ZjNnI5n+dm4zaCQaKQkWSAQGxYlJicnIEofKBaMKSoeKxUsRS0uKSkuLiMkLx5zRQ8qKjAfMRIgMkstMzM0NSAwJDY3Ugk4MjkkNTq0Sh6pADc7PDxLxsfIQn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= licq-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJzenBy2HHy+fKT+pBTuFAROBCxSLHTKdCzOLJTGlMz2zBTCFAR6BLTatJT+lAzSDAReBITKhGT2ZASaBAQuBBT+FAS6BKz6rBSSFGSaZHTydAymDAQqBCyGLARqBAxiDFSKVAxSDFy+XBx2HLT2tARaBIyWLNzWbLyiFEyKNFS2VARmBETKRATCBAR2BOTibPz+xOzKLKSmZNT+1FTeVASGBCxqLNyOBGRyJITWhCz6LFymXEz+TERuFGSmZARiBBTeFLz2vCymLDyePCy2LARGBAQOBARKBAQ+BKzmrFTuVBRiFFSaVIT+hCSuJAwaDDxyPBzmHARCBAQGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeggACCg4SFhoIBAoeGAwQFBgcICYUKCwwNDg8QERITFBWEEg8WFwMYGRobHB2FHh8UECAhIiMkrIUlAhEmJygpKisst4MaLS4vMDEyMzQ1NoU3Hx8RKTI4OTo7Bc+CPAs9ECI3Pjk/QBEsoIIrJUFAJEJDRBhFRkeFSEkiSksvTEI7OBg51MTJkyRQouiQEoEgkSlUBHVIsgiAuooYC/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mplayer-16:apps apps16 16:photo:16 16:R0lGODlhEAAPAIUAAPwCBFxaXMzKzLy+vLS2tLSytKyurFxWXOTi5MTCxFRSVPTu9OTm5Nza3LSutHx6fISGhLy2vARGZAROfARShGxqbPz+/Fym3ByCxARyzOzm7GxubKyqrARuvOTe5Ax+xBR6zGxmbKSipAR61Bx61ARutByG5ESS9MS+xJSSlIyGjFRWVHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA8AAAZ9QIBwOAwYA0ShYDAgFAwHREKRFCyujEYj4HgEIMTIQkKeUI6BSnhsuWAyAU0isCFyGJJLpwPneNVDDh4TH3wgaCFEIg0TGRkjJAEIAwqAQg4NJRkmJicKBn92KCIpKSoqASsBlUlCIqQpcQkrra0BHCxUtUQKvbq7wMGtBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== noatun-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLy6vLSutKSipJyanJyWnJSOlIyOjIyKjJSSlLSytKSmpHx+fHx6fHRudGxmbGRiZFRaVKyqrJyenGxqbFxWXHRydFxaXIR+hMTGxLy2vOzm7MTCxIyGjMzGzPTy9Ozu7OTm5OTe5Nza3ISGhGRqZLy+vARGbAROfARWjPz+/FSi1CSGxARyxOTi5LS+tHR2dARGdGSu3ARyzAR2xGSSbISChKyurARKdARuvDyitFSaVGx2bARyvDTKfCR+3MTOxGS2ZFxmXFSWVHyKhIyWjNTW1ARqtAR+1CSavFzmbETKVGSqdCTCJEzCVDSiPDymVHT2lMz61IT6pFTydNz+5LzexETabFyibISqjETSVBTCJFRiXITClFzOXCSmTAymFBSKFExqVAx6DBx2PExOTCxmLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfhgACCAAECAwQFBgcICYODCgsDDA0ODg8QERCOABITBRQQDw+KEBWbAwUJFhesEQUYpoIZGRoaCgIVGxwXCB0Rgh4fIBshIiMREg0RJCWaACYgJ9IoKRWsFw4NJYIaGycqKywtFy4vEQ4wDoIKITEyMzQzFwI1ERQ2DRgANy44NDk6aFyIsCMCjw4dbAAQMCJFDxo+fpQAEkTIECJFCnAycgRJEiVLhDBp4uQJFE8LTaCKImUKFSpVpFi5giWLowk1tGzh0sWLlydfNg0CAyBCkTBixpARKigMgDJlzJTZ5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= package_applications-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMzGzLy6vMTCxLS2tLSytKyurKyqrMzKzPzu9PTy9Ozq7OTm5Nza3OTa3NTSzISChPTu9DxmBDxqBER2BER+DFSOFFSaHGSuLHRudOzm7ERqBPz+/LzanIy+VHy2PGSyHGy6LITaVKSepGxubDxuBLTWlFyiDFyqFGSuFJTibJyWnGRmZLSutJTGbKTWhLTejLTmlGxmbESGBNTS1Nza1Nze3GSqFIyGjJSWhNzixKSipMS+xMTCvNzS3IyGlKyuvOzu3OTS5NTK1HR2fFxWXISGlLy6zMSuxMS6xOzu7NzW3LymvHRuhLyyzKymrAz+DKyyrJSOlKyqxISClExGTJyenHx+hExOTIyOjGRiZGReZJSOjDQ2NEQ+RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfHgACCg4SFhAECAwQFBgYHjoUICQoLDA0NDg0PDxCEAhESEhMUFRYXGAcZnhobHB0eHyAhIiMkhAYMJSYnKCkhISorLIQtDhQeKCAuLzAxKzKEBw0zICgvDzQ1NgLDgy0PNyAwAzg5OgwaO9E8Iz0+P0A9QQlCQ0SFRRBDRkdESEJJBnQS9CCCEgU8kixh0sTJjyeqBCFwACWKFB8RHAyZQiVDlUECDFhZQbLBgCgQrmAhlIWEDC1btmTIwmVLlS6GCnnBSchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 package_development-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLy2vLS2tNTS1Ozq7Nza3MzGzIyKjJSSlKymrJyWlJSOlJyanKSmpPz2vPz+pNzapMzKlPz6jGxmZGxmbKSafHxyXGxiTMyyTNSyRGRCJLSupOzqdPz2VKSiZGReVMzGVPz2RLSuRDw2NFRSVLSeHDwWFFw+DLyWBJxOBHx2ZOzmZJySTFxKPMS6PPTiNKySLNyyDLSGDDwOBGQqBPTuhOzaTIx6NEQuLOTCHIRSBMyWBKxuBEQCBFwSBPzyfOTCNOzOLIReJFxaXIxGBNzW3FQGBLSutHRydMS+xEQuFIRmFHxaDCwODCSGRCzSXDyOVCwCBPz+/ByuRIzqpDSuVERCRByePDymXMTCxCyCRHx2fDRqREyCXEx+XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCgwECg4eIhwMEBAWJigMBBpONjwAHBwgJCgsMDQQADg8QChESExQVCxMWFxgZGhscHR4fICEiIwckJSYnKCkbKisdLC0uLzALJDEyMzQpNa02Lzc4KDnLOjs8PT4/BQUtQEFCJjIHQz1ERQVGBUdISUpLTE1OT05QUfEMg/JJkkiZQmVKFUeISFhZmOTKkytYkAzKcoCClUNapuizQmLLEAALEXG5wqULyIuWuEDh4sXSoZIsD/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 package_games1-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/GQCBPwaHOwaHPz+/MwaHLQaHJQaHDQuNDw6PBwaHCwmLDw2PERCREQ+RPxGTDQyNDQ2NDw+PGxqbFRWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVwICCOQTmeaCAIQ4CmAsEW7isGQz4Yta3qh56vUAjaUIiE4ohUMpOJxELJiCJOyUbCgeg6tokroMsYPAoQRMRc6F4hDUdhUJBo54VE45qQTP6AgRQMV0kUh4iJFGEADBFakHp6DloRIhBpmElqnGJ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 package_games-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLy+vKymrIR+hJyWnGxmbGxuXGRiZFxaXPT21IyepERKTJSOlIyqrGyetFx6hERCRHRydFSClISyxIy2vEx2lHyuvFRmbLSytCxKZERujERyhDRWbBwuRBweLNza3CQ+XBQiPAwSHAwWLBQaLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZLQIBwSCwaj8ikcgkICJjCQYBQYBqkhAMimVAsBgIGYntsOB6QCEGMlEwoizQVWXFYLosFAoPMaDYcHR4QH0kgIB0hIkwjJFCPkH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= package_graphics-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBEyCTESyNDSqVDSmVCSOZCSCbBxiZBxqXFySRFzqBFz2DFTuFGTmLFTaLFTSPCx6ZISChHSCbGSiREy6DEzCBGziLFyuRFSuZDRiTCRKRHx6fIyKjLS2tLy6vMS+xKzGnHziPKS+nHTSRFRiVERGRLy2vMzGzNza3PTy9OTq5GzOLMzKzGTCLFxaXERCRIR+hNTO1OTe5Pz6/Pz2/ITGXFy2LLSytPT29KzOpMTCxFSmHKyurNTe1FSWLGxubGSORKymrHSSZExKTOzq7LSutGReZDw2PJyenKyqrNzW3IymhJyanFy+PFRSVBQmDDx+NCxaJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAehgACCg4SFhAECAgMEBQYHCIYJCgsMDQ4PjAgQhRESExQVFRYXGBkahRscHR4fICEiIyQlqCYnKCkqKywtLi+FMB0xMjM0NSw2JL6EGzfCODM5Oju9qDzOOD0dPtSEPx06Mjg0PR9A3IMuQTo9KTgqHULngkNBHzFEOERFEkZHhkhJWMVQsiSCC3+cmDD58EFHkwlODBV6AqVJkygSMxbyEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== package_multimedia-16:apps apps16 16:photo:16 16:R0lGODlhEgAQAIYAAPwCBJSOlISGhIyGjGRmZARafBxKbHRudMTCxLSytExKTKzOtNTO1KTSpJyWnCyCtHRydHzWlOTi5Ozq7IzSjCSaxAyu3FxaXFROVETeZNzW3Ly2vDTGNByOtFzK7HTa9JSenJyenGTanBzyLEyuTBzWHBzOHAQ6XAyy1FSyzCziLGTGfFTufBTuNNz63CS+JKTypASqBAyKDARujBRihAxynDyCpOzu7ATCBATeBARiBExOTASWBAxKbCxqhOTm5AS6BARqBARyBAwuRAx6DIyajHSSdARaBKyqrHx2fESCRISKhJyanDRqNJSSlFxeXGReZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAASABAAAAe5gACCg4SFhoeIhgECAwSJgwUGBwgJCgsMmA0OhQUPAhACBAoREhMTFBCEBRUWDhAXGAoZExobHI6CBR0eHyAhEhsiIyQIJSYXgicoHhYpISorLC0uJi8wMTLJMzQ1Ngg3Chg4OTo7MTzIySc9PggTP5VAChdBQumCQycGCAwBFwpECBQxcuQevhMMkCSJpWQJEyZNDOIDIQCYgiIJNiQoIhGAAyYEnIhS8OSCyY6CoGDYoeCRy0J2AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== package_network-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrER2vMTWvLTSnKzKnGyaxGSetFyOzDSChLTerMz2lMT2fKTibHTGVHzKZGSa1FymhEyqHGSyfOT2zPT65OT+tLzyhIzSbFSevDR65ESGxDyOdBRKbFymnMTqrOz23IzKzFyqrEyC1DRyzDRuvBxeLBRSDMTCxPz2/Ozm7Nze3OTe5EySxCRevBxWTARCbARyvARKfAQ2XKyurBxGZAR2xPT6/ARenKSepBRKrBQ2ZBRKHARWlIS63AROhAw2hIyKjGy2TBxipAwuNBROfARCdAQuTIR+hDSOHBQydAwqZLy+vLSytKSipKymrJSSlHRydGRmZBQ2bAQeTFxWXGRiZFSKPDReRAQGDAQCBNTS1OTi5HRudAQeVAQSLKSmpHx2fHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhgABAgOHhAQFBgcICQqMCwwNDg8QERIThhQVFhcYGRobHB0ehBsfICEWFSIjJCUmJyiDKSkqKyssLSwuJS8wuIItMTIzMzE0NSQkLzbGACw3ODI5zDoHJTs8PYMsPj85QDNBQkNEQTxF4kY3y0dISUoxS0yELE1OT1BRpEyBQYVJFUNWpli5giULD4NatgziQpFFFy41vHwBs6WjuDBCxIzxorCjR0YoAfgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 package_settings-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSepJyanNze3OTe5Ly6vNTO1MzOzMS+xLSutKSipHRudHRydHx6fJSOlExOTExKTHx2fDw+PCx6RCzOVDyOTLy+vJyWnGReZByiPJTqtDSqVFxaXISGhKyqrCyaRCSKPBy6RDyWVByqRDyKTCxiPEx2VDRePFSGXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ3QIBwGBAMj0jhgFAwHBDJYyGhSFgPhShgwWg4GmDHIfp4bCHaZESSRi7Y7WEDLoUeJ5RJBVCAWi4YCkcZGhkbfxwdQxxUHgoZFBkfGEkSlpYgISAiaEIeCw90ABMjEySWGGyWSCUfJSYAq1onJK9xACUoJ7BDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== package_system-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBIyKjISChIR+hHRydGxqbGxmbMzOzMTGxLy2vKyyrKyqrKymrKSipJyanCwqLJSOlPz+/PTu9OTm5NzW3NTS1OTe5MzGzJymnATiBASOBJSSlHx6fPT29Hx2fFxeXOzm7Pz6/Ly+vLS2tLSytIyOjNTW1NTO1DQyNGReZGRiZExKTDQuNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQIBwSCwaj8ZAQCAYEAoFQ/JwQCQUC0bD8SBCIuCIZEKhHLjEgKRiuSgwGc2G0x1COhwOgSPw6J8FH0ICICEdAVUiIyQLCw5oTR4lESERHSATFiYnaAAoKCUgFggiCgxxGwR1QiUdHgRPBoFzqwAQEx1kJokBBbUDToApKh8fK7WeKCwsD83OSNDRR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= package_toys-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBJRqLJxqNPTKjPTWnPzapPzirHxSJOS2fNSmZOzChAQCBPzWnPTOlPzepJRmLOSydOS2dMSSTNyybLyKRMyaVOS+fLSCPMSKRKRyNNSiXKx6NIReJIxeLLyGPAAAACH5BAEAAAAALAAAAAAQABAAAAVqICCOZGmeZhAIKioGA1EYheAeSDyra1AeCYViwRA0HMgHCQgRBiINmcE3OkgSE4RCgGgQlVVKZZLdWhTU6gWTETwCGogWLDpsKBRMAFNJQJppAAcHHB0BeRltdCZ2FB56LnWEHIGRlpZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 package_utilities_old-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPz67Pz2nPz2ZPz6XPz+3Pz6ZPz+lPz+vPz+rPz+pPz63Pz6tPz+/Pz21Pz+tPz6pPzqVPz2lPz6fPz23PzuhPzylPzWPPzutPz2jPz+zOzWLPz+nPzidPSyBPTebPzyjOzCFPzeXPSeBPzSXPzufPTGFNyiBOSCBPzijPz+7PzWVPzujNySDPz6/OSyPPzePOSqFMRyBOTm5OTGfPzSJOSqBLxyHLyGXPzm5PT29HRydKyurLy2vISChGRiZGxubMzGzIyGjFxaXGxmbOzq7FRSVFxeXKSipERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAebgACCg4SFhQECAwQDAgGGggUGBwgICQoGC4YBBAwNDg0PChARjoQSEwsBDRQVEBYXGIUDGRqrDRscHR4fhQQglh8KIRYiIySFICUcCSYKJxEeKCmFKissAiEKLR4tKKWDLgsvKzAmMTIoFC6PMzQ1Njc4OeuPOjs8PT4/Oo+DQEEuhAzpN4hIjyI+jBAUdARJviQLBRkBAtGQn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== panel-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJSWlJyWnJyenJyanKSipPz+/KSmpHx6fPTu9MzKzMTCxJSOlMzGzHRydPz6/FSqBIyOjMTGxExKTHR2dGRiZPz2/Nz+vFSuBJSSlFROVLSytOzu7LT+bOT+zIR+hFxaXOTi5HTuBGzaBDyCBNTW1Fy+BDx+BExOTLy2vLS2tCwuLHx+fDQyNCQmJCQiJCwqLDQuNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaaQIBwSCwaj8ZAQKAUCAZOgsBYMFiv1gMCkFAsFAyDojFWjBkOwAOyWEQMEsREQZksEBWA5YKRZMRyDhobCngAHB0eEG9xE4NeHyAAISIjJH+FGnIbDQiSJSYnEm8KDigbggsfEwAKJA0SYWYpG7SFrCoSCw1vDb5ekCsAHwwfLB8DGQgfy8ssLUIuL9PTMC8xMCvZwkjd3kV+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 penguin-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBBQSFAwKDBQODCQiJExGRFxSRHRuXDQ2NGRKFMymHMyuLEw+JMyqXNS2fHx2bLSytOzu7Pz69MzOzDw2POTi5Pz+/Pz6/Ozq7GRiZJyenMTGxBwaHMzKzCQeDAQGBMyaDKyadMyqZPS2DPS+DMyWFMSODOSqDMSiXLy6vGRaVIxmDKR6DHxWDJxyBLyKDGxOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZsQIBwSCwahYGA4FgcEAoEJtFwQCSkQ8WC0QhgAQfHAzLACiKSCUXgZVYsF0xG0zYSNvHLhcM+djwYGHocHyBHISIZghgjHw1GJCUmEHoZCycokCUkKRQqKyYkJCFFLC0nLgIDAy8wMV+wsH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= people-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJxqNJRqLOzGhPTSnPzapPzirPzepJRmLHxSJOSydPTKjNSqZPTGjAQCBNSiXNy2dOS+fHxWJMSSTNyubOy+hPzWnMyaVNyqbLyCPLR6PLyGPMSORNSaXBxyRGR+TGxuPIReLFxyPKR2PARaZAxufAzGxASWnAR+fARmdAS+vAS6vASGlCymVKRyNJxyNARWXAR+VASyZAzSdBSmXAyaVAR+TARSVARSTARqfARibARmPASSVASGVAR6VARePCH5BAEAAAAALAAAAAAQABAAAAakQAAgICAGhMjkcEAoGA4IZTKhWBScxawywWgsHIQA4UCOIhMPSKQRgCyahiNSMnlQIpFA5WsxCxMTFxh3eRELAlsZEwEBCAEPChEVfgAJGhscHAEbHZAKFYhIHh8gISIbEyOMoUIkJSYmJyiXqCFKJCkqKywoLS4uL3JIMCksJykxMjM0NTZKNzg5KDo7PDI8PT47STgwJDg3Pzs2Nto+UuhSfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== power-16:apps apps16 16:photo:16 16:R0lGODlhFAAUAIUAAPwCBMTCxHRydDQyNERCRExKTFRSVFxaXKymrISChAQK9AQO5AQKzAQKtAQGpAQGhAQGZAQGVAQCTNze3MTG/FRW3BwixAQKpAQGdAQCPOzm7AwStAQCLOzq7ExOTAQOxBQavAQGNAQCHPz6/IR+hFxWXAQCFPz+/AQGlAQCRAQCBAQCJHR2dGxubOzu7Pz2/GRiZHRudGRmZJyanFROVExGTDw6PIyKjGxqbGReZAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAUABQAAAaxQIBwSCwaj8ik8hhoOp9PQTEwGBAIBcNhu0UkBtOBYsFoOBwPSEQy+U4JC0rFcnlg1BmNmxggMCobaGkRGRwde0MBHh8gghAQGSEiIyRgfCVmD4ORIiYniEIBBw4oaRApGZ0qJwKWiQaljxIhKyq2JyyuoQd2ELMcIrarLboAASQTGhouLyfOzzDFXiQJ1dUkAjEyMCXFVQMzAjAHNDUENt/FiTM3JDg5BgXqS/T19ktBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= q3-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBJyanHx2fHRydGxmbHx6fFxaXDQ2NERCRFxWXExOTBQSFISChMTCxAwGDGRiZBweHExGTIR+hCwqLCQmJFRWVAwODCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAViICCKwQgIpjkQKVC0hNGKR4q8c6KYCzMDBpao4fDNHkIRZKc0HQamCBOyAFQZC9mIAZE5HACHZDJBpAaLBeVQsSwgxhSBsnBYLBP0b3BQFA4PPyMQYBCCIxdVNYc0jI4AfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== remote-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBISChLSutNze3OTe5LS2tIyKjERCRKSepNza3JyenKSmpDw2PFxWXKSipNTS1JSSlGRiZDQyNHx2fKymrDQuNGxmbLy6vHx6fFxaXJyGPGReLHx+fNzW3My+hNS+hKSKRERCHMzKzGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQIBQGCgah0iiYEBgFgyHZABBSFQJ2IQiOlxUAwfGoeEgPCDcSCIRkCADiuoEEAkkKJUkwKJ4XA4YFwQZQxobQ3YEDBwdBHkAGgQehwABTRKJjxsfICFEVhUTIgQNQyGUlVUMERAJEI8Ljw0ICX8AHGsBeQp5Aa0JhAANBlUJALEAxbpDFXFCvEIEy0hiQsgAI496z9pIfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== samba-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwC/Hx6fGRiZFxeXGReZPz+/PTy9Ozq7OTi5OTe5Nze3NTS1CQmJAQCBKyqrCwqLGRmZDw6PIyKjPz6/OTm5Nza3CwmLPweBNwCBAQC5AQCtGxubPz+BPyaBATOBASaBASeBLSutHRudMS+xKymrKSmpJSSlHRydBwaHKSepAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAafQIBQGBAMBAQjUjAcEgoFwwGRUCwYTeEg0eh6HQ8ihDAomyNdCRYggE4oiWrFkrYIBYnCBVPIaBwMXRtrWxiGGohqEgERdgADCgUcHQUeHxIWBAyOjwkdnx8gH4MLISKOBAojISQlJhsRDBsDsUMWFmYEDwy8vUJPcVULDicMKFlbKYsBGwSNx00Dm70WvdBZQihQ29fYKCgSBRLfTX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= showimg-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2pKS6pJy2nPz+/Ozu7PT69PTy9Nzm3CRaRNzi5KTCvIyurJSqtJS6tMTi1KzKtBRSPKS2pOzy9LzGvEymLEzKJDy2VCyeXCSOZBxuZDxudMTW1ISefFTWDGzuHFzaJFTSLDyuPDyaZCx2XER+dKzKnBxSRHx6fHyOfHyaZGS+LGziLFy6PFS2TER+PExuVOzy7IyGjJyenKy2rHzWRJzChExyNFxqVKzKrKyqrMzKzMzaxLS+tFyeNFxaXBRGNHRydKSmpMS+xOzq7HSKZFRuTJy+pLTOtGRmZLSutExSTKSepNze3OTe5Jy2lHSWbERGRBQ2LMTCxHy+ZGymTFRaVBwaHJSOlFSKRGTKPDReJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCAQIBgoeIhwMEjAOJiQEEBQYFBISXhYeRB5wHjJ8ECAmDBJwKCwwNDg8GBBARghIEExQVFhcYGRobHAuwAJsdHh8gISIjJCUmJ6QHKCkqKywtLi8wFL+RMTIzNCY1Nis3ODm/ss46OwY8PT43PzlApBNBQkMHRDRFRj9H8sAFkCQRogSfPhxLUvwDECFCEiY6mjh5AuVHFCmPZMgQMmUIlSpWrjw6hEVGFi0rtoxcmchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 speaker-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBLy2vLSutKSipJyWnIyKjJSOlKSmpHx+fGxqbGxubGRiZFRSVJyanJSSlHRudHR2dISChFxWXIyGjIR+hHx2fGReZHx6fMS+xMzOzMzGzMTCxNTS1KymrNzW3AAAACH5BAEAAAAALAAAAAAQABAAAAWLICCOZGmeaCAMBFEYrxkcA4IkirIwS3kcjcRioYDtSizHA8GAKBoRSanhmFAKjEGggS05CoiCg5FwRHSlQqFCbVgYj0tv9KVUfg7uBAIhfREQATMGDRM2CCNqFQgYGAMUQAUTE4lrExkaGwgUE1QElRcGHByZAh0DDQ0jqQUNHhwZGxgCAgcBKLh+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 style-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxqbOzqBGRiZLS2BPz+JPz+tPz+BPz+lPz+zPz+1Pz+9Pz+3Pz+pPz+hJSOVMTGtLSytJyeZMTCBKSipJyanJyWnERGRMzKzMTCxLy6vJSSlIyKjISGhERCRAQCBNza3ISChHRydFxeXBQSFOTe5Pz2/PTy9Hx2fJSOlHx6fFRWVFRSVFROVHR2dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAafQIAQEBgaj8KAYEAkMJHCQcEQOBwI0CQigTgIitCBQbFgNMDIasHBcFif6QekcRUc0MZARHKYBCgVgRYVFhYAAxEXA18YGRoRgBscHXoeHxt6jxogISIDIyMRlgAVGhokJSQmnZ4jowAWGREgJCAnHa0jH0MWpqgkCyEoAZ9GpSALJ8qdnyNGvRQbKSEqxCssLUYcKCoqLircLiIoIn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= suspend-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAERCRHRydHx2fGxmbGxqbHRudGReXGRiZKSenHyCfISCjHRqXGReZGRmZFxadGRijExKhFRWfFxaXFxaZCwuPExONLSurDQuHBwiNBweRAwSTAwKZGxmZFRSVDw+PCwyNDQyPHx2bOTm5MS+xHx+hBQObBQWdCwuNIyKjPTu9NTS1CQqXBwedHR2fFxWTLSiZOzmfKyibGRWVERGTDw+VCwyTCQmhCQihHx6fIR6TNzSbPz6lPz2jNzSfIRyVERGZDxCZCwydCwujHRqRJyaRPzyhPz61KSWXDxCfDQ2jIR+hGRiXHx6RNTGXPz+7My+fIR2XExKbIyGTOTeZPz+xPz+/OTajIx6bFxabOTadPz+5Pz2pFRSdERGnDw2PExGRHRiVLyuZPTutPz6xOzqpLy6lHRubFRSnDw6TLyudNzWjMS6lIR+fGRidFxWhFxWlFRWnDQ6XFxWXISKhHR6fGRmhFRarHx6dIyGhIyGjIyOlJSSlISGhPwCBAAAAAAAACH5BAEAAH0ALAAAAAAQABAAAAfygAABAgMEhYeGBQYHAAcICQoLBY8MDQ4PDhAREgcEEwAUFRYLFxgZGhupHB0eFB8gISIjJBSmGiUmBAwYFCcAKCkqCKArKywsLR0nvi4vMDAxMjM0NTY3OAYgAC45Ojs8PT4uP0BBQi0GHhVDREVGOzBHBh1ASElKS9tMTTxOO0VPoHSIYk+BgW1SplCpQoWHlStYfhTM1yFHFiNVtGx5iIULhC74vHwBE0aMkTFkypjJdAbkgRpoOvhIo8bKGjZt3Lw5A4dEgxVxfsgpkGAOnTpc4NhZqgTEgAZ3WijAk0cPij179PBRAKCP169gw/bxEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== terminal-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOzq7Nze3NTS1MzKzNzW3KyqrISGhISWhIyGjIR+hIyOjJSOlJyanJzGnHyKfFxyXFxmXERWRExKTEQ+RERCRLS2tHR6dJyunLS+tGyGbExiTDQ+NGSGZCwyLCQqJFRWVMTCxGxmbHRydFRSVERKRCwmLBwWHFxeXCwqLDw6PBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIBwSCwaj8aAYEAYDAoEpMBwQBwSigWD0aAOBweD4wGJSCaUClY4sFwwGc1GQuFwKIwIexG5dCBzHB4fIAoTQiEiIIt0goMiI0MGJCVodh6DJhcgQxYNCYqCHx8nFCIURCJZC1giJSUoIClGIluKILGoRgsWAwogFCorJ0gLCyjBH0jLzMx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 trees-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCyGFEymJDR2FFy2NHTCRHzaVFymLCxeHByGHESCJIzWZJzufEy6LCx2BCyiNByiLKz6hFTKNBw+DDy6PEzOXCSOJHyqVIzmdHTSNCySBCxmBGzmfByeHEyONDyaDEzaVGTedCR+HHS2RFzCJCRuBCy6PAxqDEyeJBxSBCSmLCSyNAxaDBRGBAwiBAw6BFx2PBRWBERaLAwqBAw2BGRmRAwSBAQKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZqQIBwSCwah4GjUjBQFgmEpHNYMBwQ04RiwWg4nA+IohCRBCZKSsVywWQ0G2WF0/EsMp+vkQIKQUQjJBolRyYgIB0nKHkpRyorECcsDhstLkoJJy8vMC9oSjEyMzQ1My00TjY3N6pTrgB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 user-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJRqLJxqNOzChPzWnPzepPzirJRmLHxSJOS6fPTKlPzapNSqZAQCBNSiZNyydMSSTNSiXOy+hMyaVNyqbLR6PMSSVJxyNLyKRMSKRBxyRGR+TGxuPIReLFxyPARaZAxufAzGxASWnAyGjARmdAS6vASGlAR+fARSTASanARqdARaXARqfARibARWXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZxQIBQGAgIisPkUDAgFAyFgzKJSCgIC0NgOkQwBoMGYcsFIBwPsKAsREAij4REWnZPKJRBgjxFVCwXAQdrdRUYGRl8ZRobHB0ebAAfICEhIiORHyQlJSYnkSgkJikkKiRsKCssJy0sq2UoLrKxspGRfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== vmware-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBByW/BxutNTq/Fyu9GSu/CR25Axq5ASO/CSa/HzC/Pz+/AyS/ITG/HRydJyWnAyO/JSWlIyOjFye7JSSlASK/ISChGSK1KS25KS67ERyzARS1FR6zDxq1ARe3CxmnHx2fAROzGSC1DxyzERy1Bxe1AQ6nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ0QIBwSCwWA0ikwDgMDAgFwwHBFCYUi+yCUQUEGlnHAxKRPIyJSVZCqZgtEuIlYcBk7IjweagJbDgcHR55Cw5xfAEQFQiLH1kge0IaF1oSIQ6YhkQaIloWGxQPFBRFI51aIV0aGiQlJRupXbCwISZdt7hdfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== window_list-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBKSipLS2tNTS1KyurIyKjISChHRydGRiZGxqbFRSVLSytNza3Ozm7MTCxKyqrJSSlJyanERCRMS+xHx6fJym3Jyi5JSe5ISW5ISO5GyC3Gx63FRi1FxmvOTi5Mza/MTO9LzG9Ky67Jyu5Iyi3HyS5HSC3Pz+/Ly+5JSu9HSS9Fx+/Dxm9DRa9CRK5Dxa3KymrHR6rFRq1ERWzDRKxCxCxBQuvBw2xBwytIyGjPz6/PTy9Ozq7Nze7Pz2/PTu9NzW3NTO1Ly6vFxWXOTm5ExKTMzKzKSepIR+hGxubFxaXFROVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCg4SFggECAwQBBQYHBwgJCoQLDA0MAw4PARAREBKEDwsTmxCNFI+ggwEBCxUWFxgZGhscHB0JghEeDh4fICEiIyQlGiYIghAnCygpKSorLC0uLi/IAMowMTIcMzQ1Njc2OJMAOScRJ+onOuw7PD3lBSfK6yc+PzxAA6oGDPPqdPjg0aBHECHlhkg4d8+HBw+YhCxQJcjAvR9EPAzIJCRCEUI53nnoMcCIgwVHPhEygCQJAiUKiiwpQrOcoZuC/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= windows-16:apps apps16 16:photo:16 16:R0lGODlhEAAPAIYAAPwCBOSSXOyCPORmHPx+LPyaTPyCNPReBMw+BOxyJPyKNPxuFOxSBKwuBFRGDExyDGSSBPySRNRGBJQqDExeDFyCBHSqBJTKJJzaHITKDGwiBHy6DIzWFHS2BNRuLKRmPJROLMQ+DFQ2DHSiDITCFJzaJFRy3HyW7Iyi9GyK/Exe1CwuZDxODIzKHIzODFyC/JSm/GyC/ERS7CQqpGSGFHSiHGR6FJyu/HyW/Fx2/Cw2zJR+BLyWDMSeBMyuJNyyDExu7ISa/JSu/Exq9FRKJKSCBMyiBOy+FPzOFPzKDKyKBFR69ISa7HxqDNSqDPTCDCQqdIx2BLyaDPzOHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA8AAAeZgACCg4SFhgECA4aGBAUGBwiLgwkKBQsMDQ4PhBCTERELEhMUFRYXGBmbgo2PCBoPEBscGB2EHh8gIQ0iDyMkJRydgiYnKCkqKyylLSUuqgAvMDAxMjMAFDQjNTaEMTc4OTorOzw9Pj89g0BBQjhDOkRFRkdISUqDS0wnL9VNSk5PkDyRBAVKFCk/piBxIknQwYBPijScaCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= xapp-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBExKTGRmZIyGjBweHHR2dIR+hJyanLy6vERCRISChLSytMzOzOzq7JSSlPz+/IyOjCwqLNTW1FxaXNza3GRiZGxmbAwKDOTi5HRudPz2/FRSVAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVRICCOZGmeaDoGgTAQZwGLgnEgSWnMo7IwDUGPR3I0HkEAJJJaNBgBB1MlmRwURBOlohhYAhcURggQTFjhUiNDErDAJE3BJNigRXKU+67q9/0hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= xmms-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLy2vLSutKSipJyWnISKhJSSlIyGjJSOlLSytKSmpISChHx6fGxqbHRudGRiZFxaXKyqrFRSVHRydIyKjLy6vGx6dFSOVHymhKymrGSqbFzOXJymnFSuXJSelGSqZGySdFzmbETKVLS+tBTCJFzCXDyiVHT2lMz61IT6pFTydNz+5MTmxETabFSWZIyOjFSCXETSVLzKxHSyhFTObCSmTJyenJyanBSmHNTW1LzGxKSupByOHJSulGSebBxyHCH5BAEAAAAALAAAAAAQABAAAAafQIBwSCwaj8iAYEAgFAwHhDGhGCwYDUfjAXkUIwPDttFAFB6SIlPMkDQmhEWaSIAuKJJBhYCYD+1PEBYIC1tFFBQLdQQXEhNYRAYFCxgDGQYaBQWQfwgMGwEJHB0eHxYMC0OJICEiIx8kJSUmB6lCCBQnKCkqKisoLC0uIEMvBTAxJDIzGzQdNR42QwQ3DDg5Ojs8PT4wEQFGPEM/Rn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= 3floppy_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAPAIYAANzW3BS6LASiHHR2dPwCBOTi5KTOrJz6rJzOpOzm7NTS1Pz+/GxubHx6fERGRFxaXMzOzGxmbNTO1FxeXOTe5ExGTLSutFROVNze3KymrJSSlIyOjISGhISChNza3KSipKSmpJyenJyanIyKjIyGjIR+hHRydGxqbERCRGRiZDw6PGReZPz6/OTm5DQyNEzqVJSWlHx+fCQiJPTu9FRSVCwuLBy+JDyuPExKTGRmZOzq7MzKzDSuPASSNASCBFxWXPTy9Ly+vAR2BARyBARqBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAAQAA8AAAe6gAABAoSFhgEDBAQFBgeOj5AIiQQJCguXmJkKDIqVCw0ODQ+gogsQEYoFEpmsCxITihSrDRWitKCmsAQUEK2ZFheKGBkaGhsbHB0NAwwRAw6KHh8gISLFIyQlDSYnKIoAHyIjHSUD3BEPDCkqigoiHSsDGAksLC0eFxMuii8wMRcPCsiIMKMABBo0aiiycWMAjhUJZOTQ4WEHChoyFPHo4ePHiRk7gCSQEESFiowEfAgZQkSRy5cuDQQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= 3floppy_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAANzW3BS6LASiHHR2dPwCBOTi5KTOrJz6rJzOpOzm7NTS1Pz+/GxubHx6fERGRFxaXMzOzGxmbNTO1FxeXOTe5ExGTLSutFROVNze3KymrJSSlIyOjISGhISChNza3KSipKSmpJyenJyanIyKjIyGjIR+hHRydGxqbERCRGRiZDw6PGReZPz6/OTm5DQyNMzKzJSWlHx+fCQiJPTu9FRSVCwuLLy2vExKTOzq7GRmZFxWXPTy9Ly+vAAAAAAAAAAAACH5BAEAAAQALAAAAAAQABAAAAapQEBAQCwaAwMCoWA4OJ9QRJKQUCyu2KyCoawuGo7GAyxeQCLKgiTLXkgmSsq6URHTwWY4gQJpZy0XShgZGhobGxwdDQMMEQMOSh4fICEihSMkJQ0mJyhKAB8iIx0lA5wRDwwpKkoKIh0rAxgJLCwtHhcTLkovMDEXDwUyETMFEDQ0NUo2GwM3KzgyOTgeLyg0MkofJAw6ETszMwkSPCoq2Urp6uvs7ex+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 amd-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBASGPASCRAR2NAR+PASKRASuVASqVASeVASORASWTASeTAQ+HAReLARmLASWRASSRARSJAQ2HARWLARiNARuNASSTASaTARGJAQyFARaLAQ6HAQmFAQiFAQWDAQuFARSLARCJASyXATCbAS6ZASCPAyaTARyNARKJATSdAzGbASmVAR6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAakQEBAMCAUDAdEoJBQLAYAAKPRcAQeBYIg8YA8IlGAZEIhECqEgOXyuGDCgExEQ3dUBoWLYgMHcDoeHR8dIAQLCyFwDn0ADhYGImBRBJJ9ByMkE1ElFYmMIyORACYFJyiMACkqK4lsBBqoKSIPfCsLBRqVYQYPFXwHDwMVFQUHB7AAGg4NHwArAcMsS55REhoZACUOyhUazX0bzRuBHYCo5+hRfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== cdaudio_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOzm7MzOzMzGzMzKzNTO1OTe3LSytGRqbHR2dJSWhNzexMTOtOTi3Pz6/KSipJSSlIyGjKyynNzmzPTy7Pz+/Oza7Hx+lIyKpMS6xLS2xMTGtOzy3Pz2/PTi9OTW5NzO3GRmfNzS3Nze3OTK5My2zLSmtNzS5JySnLy2vKyqrAS2HASyFASiFASGHAQ6DMS+xPzu/AS2FDT+ZDT+bFRWVOzi5NzW1Nza1LSqrNTWzDz+bISGhARqFGRiZKyypMTKvARaFBSeNIyKjASKHAx+JPT+/CziXCS2RDTqXCyuTCSaPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCg4SFhgECAwQFBoaDBwgJCgsMDQQOhgcPEBESExMUFQMBhBYXGBkaGxwUHR4fICCDAyEXGiIjAR0WJCWKsxcmGicIKB+9JgMDgykqGSAWKAgr1CwtLi+CKDAWATEWFjIVMzQzM9kANSC6Njc4K+cvL+eCOREOAQ0bOiw7Lzw96AnywUPfDyAtZgTpIUTgQB9DiBRxMaOHkRlH0BHy4eLikYAzkGgkRDGJEoZLlowcRCSlEGzyXvgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 cdaudio_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOzm7MzKzNTO1OTe3LSytGRqbHR2dJSWhNzexMTOtOTi3Pz6/KSipJySnISGhKyynNzizPTy7Pz+/Oza7Hx+lIyKpLy6xLS2xMTGtOzy3PTi9OTO5NzO5MTCxGRmfNzW1Pz2/My2zISGlKSitOTW5GxubOTK5LSqrMzGzMS6xNTG5LyyzISCjPzu/OTe7GRiZExGTExKTERGRFRWVLS6xISCpIyCjNza1ISGjJyarGReZNze1Hx6fFxeXIyKjHRudLS2tIyGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCg4SFhgECA4kEhoMFBgcICQoLAgyGBQ0ODxARERITAwGEFBUWFxgZGhIMGxwdA4MeHxUYICABIRQcIh6xggIjJBclJg4lJyIoHimDGCgqHSUOBissJC0qKoMOKiUBLiUvHTAxMjMzgzS4LgG3NTM2LTDpgig3DBIlGTg5MTo3btQTtOMBDwUFMhiY0cMHgIEEYfxo0OBBDBgqgMRo5ANGkB/phKBrJEiIj40nIRZKWchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 cd-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNTO1MzOzPTq7NTS1MzKxNTG3MTKvPTi7LSutGxubHR2bJSWhNTexMzOtNzi1Pz6/KSipIyOjIyKjKyunOTqzNzizPTy7OzW7IyKnISGnMS6xLS2vOzu1PTe9NTS3OTS5MzGzGRidIR+nLSyvNTS5NTW1NzK3My6zMzCzMTCxISCjKSerLy6zGxudJSOnKyirLy2zIyCjLy2vPTm7Pzu9Oza7KyqzGxmdJySpFxaXNzW1OTa5Ly61GRiZKyqrNTWzIyKlIyOpJyatGRqbHx2fIyGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeqgACCAAGDAAKGiQADBAUGBwiKgwkKCwwNDg8BEIoJERITFBUWFxABkYMYGRobHAcdpR4fIIiCISIjJCUmsScoKYWCKissLR8uLxgnKTAGKoMbMCoBGC8KBjEwMjMbgy8pIDQ1GDYfNyM4OTCCETogCBAIOzwkPSMrPjqDPysQNTsFgAQRMkSGj0Q+ZFgoQKEAkSJF9CnKNyFCBCM+DkoSlFGHxo0gQ4b0EwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== cdrom_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5Ozq7PTu9OTi5NTW1PTq7KyqrJSSlMTGtNTSzNze3Pz2/LSutKSerKSmpNzaxOzu5NzS3MS2xIyKnJyerNTG3NTO1PTm9NzK3My+zKyurHx6fISChGxqbKymrMS+zIR+hLyuvHR2dKSipJyanFxWXCwuLMS+xOzi5MS+1Hx6hJSOlLSytKyqpERCRKSenJSSpHRudExKTFxeXHRydDw6PHx+fGxmbEQ+RFROVFRSVLy6vIyKhIyKjISGhARqBAT+BARuBCQiJGxubGReZEzqVDQuNBy+JDyuPDSuPASSNASCBAR2BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gAAAAQIDBAWCiYoABgcICQoLCouJDA0ODxARAxITlAACFBUWFxgZGhscHasdHqAfICAhFiIfDSMkJSUdJicoEykYEioUKx0sLQ0uJS8vFDADEAoxMTIzNDUyITU2MwA3Hco1ODk5OjsjPDgn3ggfHiMjHSQoKBb2NCc2ACUJuz0dfPzwASSIkB1DhvBrgaBDiBFEPNAoctCGQiMzytmwceREwo8KASBJ8umTkiVMSi5i0kQIEJUwVfoJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 cdrom_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxqbHR2dHx+fISChJyWnKSepJSSlJyenJyanFxaXCwuLOTi5Nza3NTO1MTCxLy2vLSytLSutKyqrEQ+RERCRHRydHRudDw6PExKTFRWVFxWXFRSVMzKzMTGxGReZKymrIyGjARqBAT+BCQiJHx2fARuBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQIBwSCwaj8ikMRAQDAjQKCEgLBgOBoQhgUhkCwTFAoBgNByOxwMCiUgmCUqFzAhABwKBxXIhWDAZZA4EGgoaGxyIAhABC4EJDQQNZw4dHh0QDh8LGAAJDhMgEwcHBCEiIyIcJCQABRGlAiVMHx8mHBitABwVGL4LC6zCukrFxsfIRH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= cdwriter_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPz69Pz+/Pz27PTu3NzOlNS+XPTunPzyzPTy5Pzu1NzSrMzClNzOhPz6vPz+7Pz6/PTq5OTWrLyqdMS+pOzm1OzqxPz2/PTi5PTWzNTGpHx6fISChGxqbNzGlOzaxLyaTPTe7OTKtHx+fKSepJyanFxWXCwuLOzOvPzy9OTe3LSmhKySTLSaVJSOlLSytLSutKyqrERCRMSuXNS6fMS2dMSyhJx+PExGPFxeXHRydDw2NExKTIR6ZMSqTOTajKSOPIx2NDw6PFRSVHx2fLy6vGxmbJSSlHxqRIx6TMS+xMzGzNTO1MTGxIyKjARqBAT+BCQiJGReZCwmLEzqVBy+JDyuPDSuPASSNASCBAR2BARuBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gAAAAQECAwSCiYqDBQYHCAkKi4oLDA0ODxAREpODExQVFhcYGRobHKgcHYMeHxkgISIeGiMkJSUcJicSKCkpCSorLC0uLzAxJTIyMzQQCgQ1Njc4OR06HDo7PAA9Pg0/QEE7QkNDREVGJ9tHJEhJSBwkSkpLSkw5J0IAJE24Thz/nDyB8mRIlCgAjrw4wmEEkQ4dckgpKGQKACo8cAgZd+LEwY8IAVSx0qnTFSxZSi7KomXLE5UwVfoJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 cdwriter_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxqbHR2dHx+fISChJyWnKSepJSSlJyenJyanFxaXCwuLOTi5Nza3NTO1MTCxLy2vLSytLSutKyqrEQ+RERCRHRydHRudDw6PExKTFRWVFxWXFRSVMzKzMTGxGReZKymrIyGjARqBAT+BCQiJHx2fARuBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQIBwSCwaj8ikMRAQDAjQKCEgLBgOBoQhgUhkCwTFAoBgNByOxwMCiUgmCUqFzAhABwKBxXIhWDAZZA4EGgoaGxyIAhABC4EJDQQNZw4dHh0QDh8LGAAJDhMgEwcHBCEiIyIcJCQABRGlAiVMHx8mHBitABwVGL4LC6zCukrFxsfIRH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= dvd_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAPAIUAAPwCBMzOzNTO1Ozm7MzKzNze3LSytGRqbHx6fJSWhNzexMTOtOTi3Pz6/LSqrKSmnJSOjISGhKyunOzu5ASyBGT+ZASCBPz+/ASGBFz+XFRWbHRydIyKjARWBJSKlGRifARaBAQCBHx6hISGlERCRFRWVMzCxMzKxKyqnGxubHx6jGxufEzqVFxWXNTWzMTGvLy6rBy+JDSuPGRiZKSipASSNARyBARqBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA8AAAabQIBQGBgCBMYkYEBoCgrKoeGASCgWDEJD6XhAIhKFYtIgDIYUQKVioVww78vaIqRkMJqMhc2nQO4AdhYbFRh3hxQRbIFsHHp8exSOGIEZax0eFhkdH5YVICEAGx0gHQ4OEB0iI6UdJEMIJQYmJygPKSorJa8ALEItCC4vDzAHKbpDMTJCMzMcNDQRzUYyNXTMzTNKGDY2N1FJBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== dvd_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAPAIUAAPwCBMzOzNTO1Ozm7MzGzNze3LSytGxubHRydIyKjMS+xPz6/KSipISGhNTW1FRWVERCRFxWXPz+/ERGRLSutFxeXKyurJSSlCwqLJSOlAQCBHx6fMTGxKSepISChLy+vLS2tGRiZHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA8AAAaMQIBQGBgCBMYkYBAgBAQF5dBwQCQEigJhoTQwEg2GwzFYBAbDB8BggEQkEMlEwoYIH208pE3ZVxIWdnoIbQYThREJbQARgReFe3uJgQB4bBgZEBQYB2wGGBoAGxikFBYJGBuopHZCCHgcBAwdCB6vE0kRGw4fDCAhIgdqSiEhHgwMDcVSQ8XLzNBGBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== hdd_games-16:devices devices16 16:photo:16 16:R0lGODlhEAAOAIUAAPwCBDRGNExiTERmRExWTExKTFRSVISChJSSlFxWXCw6LERWRDxuPDx+PFReVGxubJSajIyKjGxmbHx6fDQ6NDRaNCSKJESyRCx2LHSarFxudHRudAT+BDxaPExyhFR2hDQyNIyGjKSipHx+fDRiNCxqLERCRCQyRKyqrCwuLDw+PFROVDw6PBweHCQeJCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA4AAAZzQIBwSCwaj8ikUhkQDASEguGASEgLCYBiwWgMHI4H5BCRTA4FAKViuWAWhERG85hsDlkFm4PpFAoeHyAhIiNpCgEkJRUBBSYmJycJKBMEACkKiAqPJiqPCQkPK5cgLBQqLJ1/Ug5WQi2wsbEusC9Lt0t0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 hdd_gfx-16:devices devices16 16:photo:16 16:R0lGODlhEAAOAIUAAPwCBEy6RDSyTDSeZBxyZGyiTFTOFFzWHESmXCRiTDRGNExiTERmRExWTFRSVIyOjMzGzMzOzKTafJTGdCw6LDxaPDxuPDR6NFReVJSSlNTS1PTy9MTevIy6dISChDQ6NDRaNCSKJESyRCx2LOzu7Ozq5IymfExOTAT+BERaROTi5Ozq7JSejHx6fCxqLExGTLy6vISSfGRiZCwuLERCRFRWVHRudGS6RDw6PExKTFROVFxaXCQeJBweHCQiJCQmJCH5BAEAAAAALAAAAAAQAA4AAAaDQIBwSCwaj0hiQDAgJIUFw8GASBAVC8ai4XhAIpKJYwygVCwXBgaT0Ww4HYfHAfiAQqJRxdEmlUwnc2V3KCMpJxkQKissDi10FAogLiAKLw8wGioxDjJ0M5EKFDQ0NTYtMTc1ngAzMzgfODikNDk5OjsONEI8Pb6/PT69PT9PxscAdkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== hdd_kde-16:devices devices16 16:photo:16 16:R0lGODlhEAAOAIUAAPwCBOTi5DRGNExiTERmRExWTExKTFRSVLSutMS+xNza3Ly6vHx6fFxWXCw6LERWRDxuPDx+PFxeXGxqbKymrIyKjDQ6NDRaNCSKJESyRCx2LJSSlHR2dISChERCRAT+BCwuLGRiZGReZDRiNCxqLFROVDw6PCQeJBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA4AAAZwQIBwSCwaj8ikchgwCgaEQcFwQCQUC4ahAXA8IJGoZEIJLCqGNMBywWQ0j8Jmw6F0PGpH+wPfggwhIRIiHl0CIyQXAh6MDRwcHR0lACAODgKLjB4FE4EhBpQgJhajjAYeDakNhQAnKK+wsa9LtEt0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 hdd_linux-16:devices devices16 16:photo:16 16:R0lGODlhEAAOAIUAAPwCBCwuLERCPExiTERmRExWTExOTFROVExGTJR6PJyKTDQyLFxWXCw6LERWRCxqLDx+PDxuPFxeXGxqbOTe5Ozq5HRydISChDQ+NDRaNCSKJESyRCx2LPz6/Pz+/FRSVAT+BExKTJR2LMSeJNzW1PT29KR+LHx6fDRGNDRiNIxuJNSeFIx6VFxWVMSSDGRiZERCRDw+PDw6PDQuNDQ6NERGRBweHCQeJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA4AAAZ6QIBwSCwaj8ikUhgIGAUDwqBgOCASisXBwAA0HA9IpCCZICiVgOViAGAymg2nQLd0PObLxwsHcRwhIiMkJSYiJ20NKCkPGSgCKissLS4iLwcAAQ2KKDAxAgsyMgIIL20zATI0NKOkNQgFDC0IQjY3Nri5N7e4S75LdkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== hdd_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAPAIUAAPwCBDRGNExiTERmRERWRFROVExKTFxWXFRSVCw6LDxuPDR6NERqRFReVGRiZGRmZGxqbHRydHx6fISChDQ6NDRaNCSKJESyRCx2LERaRFRWVAT+BDRiNCxqLERCRFxeXCwuLDQyNDw6PEzqVBweHCQmJBy+JDyuPDSuPASSNASCBAR2BARqBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA8AAAZ3QIBwSCwaj8ikUhkQDASEguFgQEyngARBsWA0Go4HJCKRTAwASsVywWQ0B4cDMp4gsusNhlCNzyFnWQEcHRUBBh4GBgRxH2ggCQkBAR6Vh1MIDncgISIJIhSViX0HHgAjJKmqq6klQiYnS0MoKSqyACorLCyydkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== hdd_system-16:devices devices16 16:photo:16 16:R0lGODlhEAAOAIUAAPwCBNTW1MzOzMTCxKSipDRGNExiTERmRERWRFRSVNTS1ERilCxOnBRCrDRSvISGhEQ+RCw6LDxuPDR6NFReVFxeXCROvFRm1IR+hGReZDQ6NDRaNCSKJESyRCx2LCxWxIyS7Hx6fAT+BDxaPExOTHRydFxaXDRiNCxqLExGTIyGjLTytLy6vCwuLERCRHR2dExKTDw2PDQyNDw6PBweHCQeJCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA4AAAZ5QIBwSCwaj8ikMhAQDAYEYsFwMCASigWj4XhAEoAIQjI5UCqDreWCyYA1G07Hcx00PhdQyB2OizwjJCElGSYJCXwRBScoGwUpKissDyoUfC0RigUuEC8PLxkwMRRgLTIzETMaEBAzpxopCRBCNLW2tTW2Nkq8vQAGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 hdd_umount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxqbHRydGRiZFxeXFRSVFROVMzOzMTGxMzGzLy+vLS2tLSytKymrKSipJyWnJSelERGRBQSFHRudPz+/PT29PTy9OTm5NTW1JSOlDw6PNzW3NTS1Ly2vEQ+ROzq7KSqpATGBARmBISGhBwWHOzu7GxmbOTe5GxubFxaXExOTBweHCQiJBwaHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaLQIBwSCwaj8hkMSAIOAMDgrRQMAgDB0QCoVgwGo4H5BGRTChodMVyuWAwiIxGIqhsNpxtpwN+ZAQeEgEfb1kKHSAPISIjARokAiUJeVx9fhmOghZPJgRRBFQjA3MCFxQVJScnG3AICyMFcygTJiYDAymgBSoREXNCKywtK8MSJBItEisSSs3Oz0R+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 hdd_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBDw6PFRSVERGRFxaXGRiZGxubHx6fDw2PFRWVExOTISChDQyNFROVExGTCwuLEQ+RERCRExKTBweHCQeJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVXICCOZGmeaKqqgeC+8AsEg0DYRFEYxuELAMSAcEgoXLqdYQFkBIiChiIh0PEOTZpjQBvUkIUG4IFAQAKR7uBYBT4egTgtIPnaBqKJfq+n8FeAgYKDAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= hdd_win-16:devices devices16 16:photo:16 16:R0lGODlhEAAOAIYAAPwCBPySPPRqHJw2DDRGNExiTERmRFRSPFROVJxiPORWDGxKHGyaDJTGLGSKHFRSVCw6LERWRDxuPDR6NFxeXJxuZJxKPFxiHHyyDJTWHGR+PDQ6NDRaNCSKJESyRFRWZHSO7HyS/DxKrHyaJIyiJGRqXFRORAT+BCx2LDxaPExSfIye/GR+9ERGhKyOBOS6JMyiDHRubDRiNCxqLFRehEROlFRKPPzKHJyCJCwuLERCRDw6PHxuJJR6LGRiZDw+PExGTFReVCQeJBweHCQiJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA4AAAd+gACCg4SFhoeIiYoAAQIDhgQFBgUHCAkBCgsMDQ4PABAREhOTFBUVFhcYGRqeGxwdHhMRHyAhIhcjJCUmn68nKCkqKywtLi8wMZ4QBDIzHAQqNDU2MDc4D545ywQQOjs7EDY8PQc+2do7PzveQO3YQUCCQkP09ET19Yv6i3aBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= hdd_www-16:devices devices16 16:photo:16 16:R0lGODlhEAAOAIYAAPwCBDRGNExiTERmRExWTFROVISSfLzenIy+jGyerEyCVExOTFxWXCw6LERWRDxuPDx2PFxeXFxqhJzKpOz23FSOxDx2nDQ6NDRaNCSKJESyRCx2LERaRExmlGSexLzezIy65FyOxDxqtERKVAT+BExejERyvHSizITCbHSqfCRKlDRGVDRiNCxqLExGTDRarIS2fBw2bDQ6TCwuLERCRDw+PCRGRBQqTBQiNDQyNDw2PDRCNEQ+RERGRCQeJBweHCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA4AAAd/gACCg4SFhoeIiYqKAQIDAgQFBQYHCAkKCwwADQ4PEA8EERITFBMVFgIFABcYGRobHAQdHh8gISIYI5utJBsOIyUmJygpKiuqDQEsLRgBLiMvJjAPMTK6Mw3JATQ0NTIxNjc43AAzORcNOjvcPDrpOj06gj4/9fb3P0CL+4sGgQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 memory-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBLy+vHx+fJSOlERCRDQ2NPz+/GReZCwmLISChExOTCwqLCQmJGRmZCwuLDw2PJSSlBwaHDQyNIyKjDw6PCQeJEQ+RFRWVGRiZERGRGxubHR2dFRSVGxqbAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVzICCOQECepzAQBXoGxoEgrQskg7Iwe/0aDQdv+DglIIfdIrLsjWDJhXSHWEgiomOiwJ32mInsREEpLByLioV5GYQBCwxLIs0wNQaTiLkhsDgRDgpuJ3wKDUwdeS4REgdMBAMbNgAREQWKepQLgwKULy5+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 nfs_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAPAIYAAPwCBMzGzMS+xLy2vLS2tKyurLSutKyqrMzOzOzu7PTy9Ozm7Nze3Nza3NzW3NTS1ISChPTu9DxuBERqBER2DEx+DFSOFFSaHGSyLHRydDxqBPz+/LzWlIS6VHy2PGSyHGy6LITaVKSipGRiZFymDJTmbJyanGxqbER2BIy+VGy+PHTCRJTqdJyWnOTe5EyGBGSuFHTGNKT2jJSOlHzORIziZJzyhNT+zIyKjKSqpFRSVDw6PDQyNDw2PNTO1Ly+vHx6fEzqVMTGxAT+BDQ2NBy+JDSuPExKTERCRASSNASCBFRWVAR2BARyBARqBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA8AAAe8gAAAAQICAwQFBgeKgo0ICQoLCwwNDg4PCBCNAAMREhMSFBUWFxgHGZsDCxobHB0eHyAhIiObBgsSHCQksSAlJie2DCgpvCAqKywttY0FLi8fMCAgMSsyM8GNBgi8MTQhNTY3OMyCOQIiJjM4OBAZGSfZmzo7PPY8PTybgg4JEQkMLiFA4OMHkEZBhDAYkkMEDiL3RuhoVMSIARPqIADJMGLEESSNjCRRcqLjEh0f6+kTpIRJEyf7YgIwEAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== nfs_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMzGzMS+xLy2vLS2tKyurLSutKyqrOzu7PTy9Ozm7Nze3Nza3NzW3NTS1MzOzISChPTu9DRGHDxGJDRKHERSLERWLExmNFRuPGSCTGxubPz+/KSujGyGVFx2RFx6PGSCRISqdKSipGxqbIyedFRyNFx2PHSOXJS6hJyanGRmZDxSJGyCTGyOVHSWZJzCjJyWnOTe5ERaJHSSXHSaZKzOpJSOlIyudJS6fKTKlMzqzIyKjJyenHx2fHRydFxaXDw6PDQ2NDQyNNTO1Ly+vFRSVLy6vIyGjHx6fExKTERCRFRWVFROVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe0gAAAAQICAwQFBgeKgo0BCAkKCgsMDQ0ODxCNAAIREhMUFRYXGBkHGpsEChIbHB0eHyAhIiObBqskJSYgHScoKSq2CyssJbEtLi8wwY0FMTLGHR0zNDU2zIIHDSUg1Dc4OTo72AAHAjwwNjs7ED0+I6ibAD9AQUL39/IADQgRCJQOMA0h0mNTgAU/RPDYgU+IiiKbjBiAkcLGESQaVPxIomTTEQ0jNC5hwrFJPn0oU6rc5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= printer1-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTS1JyanHRudNzW3MTCxGxqbMzGzJSSlOzm7PTu9NTO1Ly+vPz+/Hx2fPz2/Pz6/PTy9Ozq7OTi5ISChOTm5MzKzMS+xKyurIyGjIR+hMzOzHy+fNT+zCSyJHR2dLy6vKyqrKymrIyKjFRSVHx6fLy2vLSutGRiZLS2tISGhHRydFxeXOTWrOTevNzWrIyGhPz27PT27FxaXMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAakQIBQGBAYB8OkkFAoGg0HhFKYECgWiwBDYJgCFI2wuOFQPiCRh2KtkCQmBMpQUZEQ7gHLhYHJaORfE3AbFgcXHB0eFB8ZSwwgISICCCMaHwYkJYAKBAEHICYYJwgIGSgOI0IKKQgqGiUlDiUrKywfgAkFLS4vvC+7MCyoqhcxMgoyMhAxMRQzmkIHBWNjCCQaSQfUYlJKCwUWBQcHNOAiXuhKfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== print_printer-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBNTS1JyanHRudNzW3MTCxGxqbMzGzJSSlOzm7PTu9NTO1Ly+vPz+/Hx2fPz2/Pz6/PTy9Ozq7OTi5ISChOTm5MzKzMS+xKyurIyGjIR+hMzOzHy+fNT+zCSyJHR2dLy6vKyqrKymrIyKjFRSVHx6fLy2vLSutGRiZLS2tISGhHRydFxeXOTWrOTevNzWrIyGhPz27PT27FxaXMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAakQIBQGBAYB8OkkFAoGg0HhFKYECgWiwBDYJgCFI2wuOFQPiCRh2KtkCQmBMpQUZEQ7gHLhYHJaORfE3AbFgcXHB0eFB8ZSwwgISICCCMaHwYkJYAKBAEHICYYJwgIGSgOI0IKKQgqGiUlDiUrKywfgAkFLS4vvC+7MCyoqhcxMgoyMhAxMRQzmkIHBWNjCCQaSQfUYlJKCwUWBQcHNOAiXuhKfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== blockdevice-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPzivPzetPzi1PzezPzevPzmrPzinPzmnPyidPyyjPzOpPzitPzOfPR+JNRmBPymbPymZPyybOxeBNRSBPSaVOyeVPRaBNxWBMRGBLxSBOyWTOymXOSaRLRCBJxCBMzW9NTCtNSmVNSWPKROFJySbMTitJzCjNTe9NTW/MTK9Ly69LSenLx+TMTOrNTuvMTinMTmrKTenIzKhJzC9KzK7KSq7GSO3LTahLzmrIzGbGSeLIyy7Jyu5Iyq5GSS5DR65CxqzKzafKTOfJzKfHyyPFyCLISi3Iye3HyW1CxivJTGbIy+bIS6TExuJISSzHyKzCxy1CRWnIS2bISubGSiNFyKLGx6tAwaNDxSNGyiVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeWgACCg4SFhoIBAoeFAwQFBgcIiwAJCgsMCA0OD4sQERESDhMUFIsVERYWFxgZGosbHBYdrB4fiyAhIiMeJCUmJ4UoKCkqKywtLi8wMTIzgjQ1IMU2NzjLOTI6O4I8PT49P0BBQkNEQ0U7RoJHR0hJ4kpLOkxN6U6DT1BQUUpSU1NUqli5R+jKlSBYBGXRMnCSw4eF/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= bug-folder-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQASAIUAAPwCBBQubCQ2VDR2zDSG9AxGvCxSjAxa3IyWrGxubFxaXGSGvHyOvOTe5GxqbKSepMTCxMzOzMTGxNTW1ISGhJSOlLy6vLy2vMS+xMzKzNTS1LSutExGTKyurKSipKSmpLSytGRiZCwuLDQyNJyanKymrHRudJSSlJyWnJyenKyqrBwaHIyKjEQ+RISChHx6fDw6PDQuNExKTHx+fHRydERGRBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABIAAAalQIBwSCwajwHB0RgYEApLooFwKCASUYBiUWA0Go6lQvGARCSTCcU4rlguGEkmotlgh5xKx/PZgCwWEBAaIUMiIx4kJB4eJSB/EhgmhiImFRUnKCkPJSobEBRYKyMKIhUsmCgnJB2dFwoAKy0jIiEuLy4uJCwnHhQKhbEwMSMvLyy5JwkcMi1EoyIKMyYuNC0yI0fQCSEyNc5RKzYy2FlDKzDm6kVBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= chardevice-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNzy/Kze/JTS/HzG/Gy+/FS2/FSy/Eyy/Eyq/Dya/DSW/CyK/CSC9Cx69AQilFS6/CRCnBR27Axq5ARm5ARS1ARO1ARKxARCvBQ6pCSK/AROzAwSdBRy5AwKbDyq/ARe3ARW3AQ+xAwafAQCZAQ2rAQehAwybCw6jGxqnGxqlAQCXAQGZKyyvKyyxJzGfJy6lPTy9Pz6/MTCxERafKTCfMzmpLTibMTylMTerOzm7Hx+fDxObCxSfAQWbIS6TKziZLTuXKTqRLTmhJzChNzW3KSepCQ2TCxKfDye/ARSzBxmHDR6HESWHFSqLHSKbLy2vOTe5JyenBQ6bGS6/AwCZAQKZDxeTCRGNBxeLFReVHRydNTW1JyWnBQmRHy+/Ey2/FxqdDxGVDRKRNTS1NTO1IyKjAQmXBRCvBRGlCRCdGRyhGRyfDx2pMzm/AQCVAQCRAQCPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfOgACCg4SFhoeEAQIDBAUGBwgJCgoLDA0ODxANEQsSExQUFRYXGBkaGxwQHR4fnhMgIaMiIw0VJAYlJiYnKCkpKiokJCvDLBAPLS4vMDEyMTMqNDQNGCQIDzU2Nzg5OjozOzw9HxskED4/QEFCQ0RFOkZHSElKKwY+S0xNTk1PUFFSjkyhsqEKBCtXsGRZomVLCy5dvJz4YgvMijBisozZAoVMGTNezhAoCIEEGgxp1KxZyWZNmy9ulNwaRuLNGzhxcsZ5Q2xFFURAgxbyEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== connecting-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqlGSGtER2vMTatLTSlKTKnGSavGymtFSOxDSGZHy6bMTmrMz2nMTyfJzebHTGXGy6hFyW1FSmbDyaHOT2xPT63Nz6tHzGfESKxDx+1ESKtCx6dBRKXCx23FyqnOz23NT2zHS61FyqpESG3CxqzCxqnBRSDCxy1FyazHS+rNTuxOTy7Lze/Fym1FSavCRerBxSNEySzITCxKzetJy61GSe5EyC1Dx21BxOrBxORIymxMTG1JyuvHyOdFyibIS6nDRqzBQ+lBw+ZBRGFISavLSytMTCxHSOVHS+LFSiRBROnBQybAwuVISGlMzKzJyapKyKvKRmxJR6nFSeJCRyLBQ2fAwmXHR6hIw61MyG9LQ+7GRGfAQSLGxmbCwuNIwm1LxK9GQmrAQCBCwSPJQizLRa7KxC5CwSZAQSNDwKZCwGRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAergACCg4SFhgABAgOHhAQFBgcICQqHCwwNDg8QERITFIYRFRYXDhgZGhscHYQeHwwgFiEiIyQlJieEKCkqKywtLi8ZKDAxuIIoJDIzNDU2JDc4OTrGACUaOzw9Pj9AB0FCQ0SDJUVGR0ZISUlKS0xNhU5PUFFSU1RVVlZXhVhOU1latnDpwORKl0JevnABoyWMmCsGx4wxRKaMmTNo0kiUeIiMmjUTGYks5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= connection_failed-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/JyenIyGjHx6fMTCxLSutJSWlIyOjFxaXLy6vKSipJyWnFROVNze3Ozu7NTW1IR+hGRiZDw+POTm5NzW3KymrIyKjJSOlGxqbCwqLNTS1ISGhDw2PKyurLy2vHRydGReZExGTMzKzIxeXLxWTLRiVGReXJR2dNRGROxaRJQ+NEQ+RBQWFKyqrIRSVNxOPPzGxPSKdKQuLDQyNAQCBDwmJNRSPOxuZFQaFAwKDEwKDGQODAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQIBwSCwaAQHB4EgkFAoGwwFxFBAICYXgsBgwjIeG45EwCASQiIQIORAmDkrFchlgMuxFQBO/XDYbERx4QhAXAh0JCYZ/CBKEABBoHg1pAV0Mj0MQCx8gCwcYdgghkEIiFREjJCUmIRKaRAcKJygoKSorEhwsRC0YIS4vMDEyMxksNDRFNDU2KTc4LDnKy0Y6OzrWTNxEfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== desktop_flat-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAAT+BOSWBPz+xNQ2BOSSBPz+vKTKzJzGxJzKzKTOzFR+hJTCzGSetJzKxPz+/Pz2/Ozu9NTi5IS6xFxujOTi5NTa3Mza5LTK1KTGzGSmvExmfNze5MzW1HSGhJyapKTCxJS2xFRmhPT6/MTW3MTW1ISGhKyurGRqfHySpExmhOzy9LzS1JyarFxmdGRibPT29GRmfHSKpIyuvGSStKTG1Nzm7JyetKSipGRqhPz6/HSetFyGtGxyhGyGpGyevJzGzMTa3JyivGxqhFSGrGSCpGyStGSCtIySpGxuhHSWtGySvFyCrHSqvFR+rFR6rFx+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCg4QBAgOEiYMEBYiDBgcICAmTCIYDCgsMgg0Ong4PEIyYERITggkOFBUUFpcKFxgZGoIGDhsVHKMdHh8gDCG1IhYjJCUDJg8nKL8pggsqKywtLi4PLzAxMjO0ADQ1Ng43Djg5DicxOjvBAAsb4eYwPDAwPT7rgj9AQZ9CPT1DiBQxwk4CkCNITuCopyNJESVLnAGQwMTHkCZNnDgZYsTIjifshqTQoGFkyRQmSypaybIlIT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 desktop-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBISCfJyWlLSytHR2dKSipMzGvPTu7NTWxKSelLSypPSOPGxqbISGlISOrHSGpGx6jOyGLHQuDJyqxKSuxGRyrHSSzLS+zNTW3Ky2vIySpNR+RGw6LDRCVERSdJyqzJyuzJSmxISetHSKfJSqpJSynOzKrMSahIySlExafHySrJSixHyWrHSKtHSCrGR+pIyatFRifERahDRGbBweJFxuhIymxISavGR6nGx+pFxulBwmPBQaNERSZHyOtCw6XAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeEgACCg4SFhoeIAQIDAYiEBAWMjoMBBgcIk4IECQqZmoYLhwwMDQ4PEAAREoUTFBUWFxgZGhscHR6DHyAhIiMkJRgmJygQKR64ACogKywtLi8wFwMNMR4yMwA0NSs2Ny0tODk6Otc7PIM9PjbdPjgyPzxAhjs4LTozO0DyiEA0+56T/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= dialup-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqlGSGvER2vMzevLTSlKzOpGSaxHSqvFSOxDyKbHy6bMTmtMz2nMz2fJzebHzKXHS6fFSW1FSmbDyaHHS+jOz2xPz+5OT6tHzGfDx+3ESOvCx6dBRKZCx25FyqnMzqtOz23Pz+7NT2zHS+3ESG5DRuzCxqpBRSDGSe1HS+rOzy9MTi/Fyi1ESKxER63CRerBxSNCxy3ESG3EyavJy+vLTSxKy+zGx+pBxOtBxORDRu3MS6xOTa5IyOjEyCTIS6nBQ+lBQybBRGFGySxDxmtFxeZKSapGy2LHTGNFSiRBROnBQ2fAwuVNTO1JSizERajIRSXMRaVKx+PFyiHCRyLAwmZIx2hNxGRNxOPOxeRIxSJBQuZAQSLKyurHRudExKTORORPzKzPyKdKQuPBQqXAQCBAwOFDQiLPRaRPRuZEwKDEQaFGwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAesgACCg4SFhgABAgOHhAQFBgcICQqHCwwNDg8QERITFIYVFhcYDhkSGhscHYQeHyAhIiMkHyUmJyisKSoWKywtEi4vMDG4gjIzNDU2NzgzGgM5OsUAO888PT4/QAcyQUJDgztERUZHPkhJSktMTYVOT1BRUlNUVUxWVoU+R1dYWVpbOgjh0oWQly9gooQRM4ZMGStdzJgpdAYNljRq1kSUONEQmzZrOjIaSchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 disconnect-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqlGSGtER2vMTatLTSlKTKnGSevFSOxDSGZHy6bLzirMz2nMTyfJzebHTGXHS6fFSmbDyaHGy6hOT2xPT63Nz6tHzGfEySzDx+1ESKtCx6dBRKXDR65FyqnNTipPT25NT2zHS61ESG3DRqxCxqnBRSDCxy1FyazHS+rNTuxOTy7Lze/FymzFSavESKxCRerBxSNFSatIy6rKzetJy+1HyWvEyC1BxOrBxORDRqzJyqvOTi5KS6vJyelFSCTIS2lGyavBQ+lBw+ZBRGFKyurKSmnNTOzISWbIzGRITKRFymTBRSnBQ2fAwuVGRqdMTCxKSmpKTOZHS2RDyCPAwmXFxmfJSOjJyWhLSylIyyZExqbCxGdAQSLISGjDQ+RJSWhNzezExifAQCBFxiZLy6nGRubHR2XHx+ZFxaTDw6LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAesgACCg4SFhgABAgOHhAQFBgcHCAmHCgsMDQ4PEAgREoYTFBUWDRcYGRobHIQdHh8gFSEiHiMkJSaEJygpKissLS4vJzAxuIInIzIzNDU2IzcZODnGADoZOzw9Pj9AQSRCQ0SDJDtFRkdISUpLTE1OhU9QUUZFUlNUTU1VhVZXRlhZPmjZwqVKl0JevjwBEwaEDzFDuowZY+gLGTBlzHyROJHRGTRp1DAaWchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 documents_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQ6lAw+lGyW3GSO3Ly6vMTCxFyS3Pz+/AQ2nBRClGyS5Bxq3Bxm3BRezBRi1OTq/NTe9LzW7KzS/KTK7JTG9ITC/HS2/GSy/FSu/ESi/Dye/Bx65KS+5Pz6/PTy/Ozy/MTe/LTW/JzO9CyC5BRaxHye3PT2/OTy/Nzu/KTO/EyW9KS69Mzm/Lza/KTS/Cxu5Nzi/NTq/NTm/JTO/HS6/BRWxMzi/Lze/EyS7MTS/LTC9JSu7ISi7FyO5CRizAw+nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAekgACCg4SFgwECiIaFAQMEAwUGBosAjQQHBQiaiIgJgwoDC5mamgwNDgKHkKSsDw8BnwMIEBESExQVFhcYGRobHAELHQgeHh8gECEiEyMXJCUKJhCaHicoKcoTKisllSyaJycgKC0uLyoWMLAKMdQnHzIz5jQ1NoIC4Ci0NyE4IjQ5YAHAR0vHDhY8eizwAePHIAEKBAgAkkgBxQAKBFLayNGQn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== documents-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xLy6vMTCxKS2xPz6/PTy/OTm7LzK1Pz+/ER2pER2rJSqvKzCzKS+xCxmfARGlGyWrDxyjFSKrAw+dGSKpKTK5LTa/Lza/JzK9GSu7MTa9LTa5MTi7OTu9LTS7KTO/EySxJy6zMTm7NTu9OTu/PT2/Mzi9Hy27DRWfHSWtGSKrLzi7MTq9Ozy9Oz29Fyu7HyetNTq7JTC7DSCvOzy/GSq5CROfMTi5ESW5Cx2nDyGrESKtDyKrCx6tBRitAQ+hAQybAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAevgACCg4SFggGIAQACAgOGAAQFBgcIAgmXCguagwwNDg6Wl5cPpBCCERIPAgWiohMTFKcVoa0WFxgYGRkaEasJGxwdHgXECQYfICERFQkiIyQlBSbFJxgoKSoVKywtJC4vxMQXHzAAESsxMjIvLy7hHh8zNADZFgceHiU1Jia/HzY3zFXAoe6FBxcGDBTIYCGHIBU6dkjcwaNHjxA7fPwAMiiIx48gPT4aSbIkAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_autosave-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIYAAPwCBFxaXJyenKSepJSSlGxqbCyO5CSO3ByG3BSC1DxunPTy9Pz+/Pz6/KSmpBRWhFyu9CyS5BRqdESmdER2nPz2/Ly2vISChCRahAxirDx6tCSCxBxmbDT6NEyiTOzu7NTS1MzKzBxGbAQ+fARyxARaZATWBGT+ZHTKdOTi5JyWnMTCxCxajCSW3CyCzASiBKS2pERCRDw6PIyOjCyW7AxyzARyBCxWXCxahAQybARObDRObOzq7KyqrCxWfARqrAxyxIR+hHRydGxubAQqVAxOlARGjARChAw6fAQ6fAQuZBxWlBRuvBRqtBxipBxanBxalAQmTAQeRAQaPAQaNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAfEgACCg4SFhoeIhQECAgMEBYUGBwgICQkKCwwMDQ4OD4IQBhEGBhITFAsNDBUWFxgZAAcaGwgbHB0eH5ogDSEiIwAGCCTEJSYnKB8pKisgLMAtLsQkJS8vMCsxMjMWGMA0CDXFNjcpDCoyKys4OcEb0w86OzwpPD0hFj7tND8kQCQ/MmC4cCGIECFDcBAB0KJIESNHIiJJkiSHRSVLFibIQIJJkyZOMjh5QhLKkowARhCJIqVlyylSYFKZQoVKops4CzkIBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_documents-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIYAAPwCBJyanJyenOzq7PTu9PTy9Nza3Ly2vKyqrCSK3CSO5ByG1Ly+vMzGzPz+/Pz6/FRSVARipFyu9CyW7CyO5DyKxHSSrHyevJTC5KzS7NTi7GReZByCzAxirByO3AROjARCfCxqnIS23Fyq9KTS9KTS/NTS1Pz2/GxubARGhAQ+fAQ2dEROVJSKjHyKnISu3ISixOzm7GxudAROlFyy9CSS5Cya5CSOzCyS3BRyvARyzARuvAxqvARepARanARKjDR6tAx2xAxGjAQuXAx2zARyxARyvBRipAxWlAQuZCSS3ARirAwybAQmVAQ6dAQqVAQiTAwiTAwaNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAfHgACCg4SFhoIBAokBAYeCAgIDBAUDBgcIhQkKCwwNAw4ODw4NCBARghITFBUWFxgZGgShBhscHQAeHyAhIhMjJCUmDicPKCkqABMpKywtLi8jMAIGMQ4yM8geNB41NTbeChQ3ODccOSvJEzrr6zs8ER09Pj4/6BM1Ojv5QBxBQvMzZqQYAuAbER1FjByZIWTFPCQfVCQBoMRDPiM7Isz4EVDgMoIcduxYsgSgRxAqVjBpAsDJiidDoMiEEmWmTClSHOnc6chBIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIUAAPwCBGy+9ESi7ESe5Eym7CSW3BRqvARuxARyzARyxARmrARChESe7GS29Dye5ESm7CyW5AxmtARepARWlARanAxapARGhAw+fFSi3ByG1AQ+fARSlBRirAQ2dAxuvAw+hARqrARKjAQybAQ6fAQqXBxWlAxirBRqtBxqrBRapAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAadQIBwSCwaj8ikMSAYNJ/OKKFgABAOiER2q9UeFAsAA9EgOBgO8+PsgETCjwMBQUccvpL85A1wIBwHCV8KExQSFRMWChcAAgcPdAkYGRkaEhsTGhwdAJAOCR4JFh8dHRsbFhoTnAwHEIIgChITExshCyISIgAFB6cLCxofIx0ixSQlJAAZERwmJygc0ikpJdXJAAsk29zd3krg4UIOQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_green-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIYAAPwCBBzyDBzqDBTiBBziBBTaBBzSBBTOBBzKBBTCBBy+BBSyBFz2XCzmJDTmHDTaFDTaJCzOHBTKBESyPCzCJCzKJCS+FBS+BAyuBAx2BBzGBBSuBAyiDAySBBS6BAR2BBSeBBSiBBSSBARqBDTqJBzOBEzOPCTOFBSWBAyWBAyGBAR6BARyBAx+BASCBARmBDzqLByuBAyKBARuBARaBCTiDASKBAReDBSWFARWBBSqDBSiFARKBAROBARGBARCBARGDARCDAQ6BAQ6DAQyBAQuBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAe9gACCg4SFhoeIiYcBAQKOAwQFBgcICQoLggwNDQIODZ4NDxCiERKYDRMUFRQRrK4UFhcYGQANEZS4GgkLGxgcHR4ftRQIBxISHhggHCEcIh0YIwAkESUIEhomDycfHCgpKtEADrcaEgkdKywtKR0qLhwvADAXB7oxGxy/Mu8zKTQAarTrYMOFwQ8sZox4cQNHDgACFiS44CGZDh0cdqTggKMDDwAfevjw8QOIjyA/fggZQoRIkSKKYsoU5CAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= drawer_image-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIYAAPwCBCyO5CSK3BSC1ByG3BR+1Ax6zAx2xBRyvAxutARmrBRipFyu9CyS5CSS5CyW7CSW3CSK1CyO3AxirCSO3DxynERyZFymLEyOLExuNDR2rCSCxCyCxAQ+dERWNDyaDGTeHEy+BDx2FDRGLARepAxapARWlAQ+fIR+hKyurIyOjGySVBweHARSlPz6/MTWvIyihFR+PBRKdAQuZAxanAROjAQ2dJyWnPTu9Pz+/Ozu7FxuVAQaPARKjBRanAwuZPz2/GxqbAQqVAQ+bNze3NTS1CwmLAQePAQybBRSjHRudJSSlFRWXBwyTAwyVBxWlAwmVAQaNAQOJAQOHAwWNAweRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAe+gACCg4SFhoeIiYcBAgIDBAUFBgcHCAkKC4IMDQ4PAQ8ODg0NEBESjhMAFBUWFxgZFhobHLMICAodAA8eHyAhHyIjlyQkJSYKJ6ooKSorrywnLcQtLQvJDyouLi8wMSwyMzTUNQs2ujc4OTo3Oyw8M9Q9Jz4/ABAqQC44N0EsQkM95M2bYS8IESBF+Bk5IsSGDSQzkggBQCCJkiUogjBp4kSGj49PfEw8ASWKlCkoUVLhUSUKlShRFMmcKchBIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_locked-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIYAAPwCBHx+fNTS1NzW3ExGTGy+9ESe7GxmbERCRERGRLS2tDQyNESi7ESe5Eym7CSW3BRqtARyxIR+hMTGxEQ+RIyKjARyzARuxARmtARChDye5FxeXFRWVExKTDw+PBQWFCyW5AxmtMzOzPTy9LSutFROVBwWHARepAxapARSlISGhMzGzKyqrARKjAQ6dAxanARWlAQ+fBRirOTm5ARGhAQybCwmLBweHBwaHCQeJAQ2bBRapAw+hAQ6fAw2dAQqXBxWlAwqXByG1AxirBxqrBRmrBxipBxanAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAe7gACCg4SFhgGIhooBAgIDBIqCBQaMBwgJCgsMDZsODxAADhESExIRFBUUERarFxgZABoHGxscHR4LCx8aBhogIbAOGxUiIxMkASUmGCcoKa+xByoCIyssEgQfJycpLRguocPUK8glHy8pMDEy4AbSAjPW2B8wKTQxLzUABh02Hzc4cnwYaC+Djh36HlxIUTAGjx4ufNSo8QNIEABCMAyRMYRIkSFGjuw4AqTkDwAZfqhcybJlpJcwIzkIBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_metal-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIUAAPwCBMTK1LTCzKy+zKy6zKS2xJyuvJSuvJSitJSmvIyetIyitHySpNTa5LzG1LTC1LTG1KzCzISWpOTu/MzW3MTS3LS6xKy2xFxqfISetIymvHySrHSOpHSKnGyClIyarISitHyarGyCnGR6jISSpFRmfKS6xHSKpGyGnHyWpFRedIymtFxuhFxmfGR2jGR+lISOpFRidGRyjExabHyKnExWZIyWrISKnExSZERKVExOXERGVDxCTAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAajQIBwSCwaj8jkMSAQDAiFguGASCgWDGFj4HhAvN5IZDCQSgCQCaXiCAzcTIHlwsCgKYZMIqPJZDYbHB0eH3YPAXogGiEMHY4dIiMkJWgOCRp9BSYFJScoHiMpKmgQK30rIywtLi+gLDAxaAV7f4CfIyMyJTAzaAituDIswyUqxjQ1AAUpKzYZKTbQKSQ3Gx03OAAsONw53To5O+I85Erm50IOQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIUAAPwCBCSO5CSO3CSK3BR+1ByG3Ax2zBR6zAxyvARyxBRutARuvBRipFyu9CyO5CyS5CyW7CSW5CyS3CSOzByCzARirARSjARCfARKhARGhAQ+fAQ6dAQ2dAQ+dCSS5AQ2bAQuXAQyZAQ2ZAQuZAQqVAQmVAROlCSS3CyO3AxyxFyy9Ax6zARyzARepARWlAROjCSCxARanARSlAQyXARKjAQ6fAxWlAxutARipByG1AwmVAQeRAQiTAwaNAAAAAAAACH5BAEAAAAALAAAAAARABAAAAasQIBwSCwaj8jkMSAYEAoEguGASCgWDGHD8QgEIJFHRCKZBCiUCiBguWAy8MxFs9lwOhgNwJP5gEIgIiOAICQgJSZ6AQ0BEY0njigCExMUKR8AESorCSssCQsLFRUtLS4vHJkNCawJFDAUGTExMiYZM5mbCZ8MNBg1Li42NDUjACeroDc4JjQmz281JQA5AaIVLjHPcBo1HB/THeAl5CU6OyU86Ds9PUrv8EIOQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_red-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIUAAASC/PxSBPRGBORCBNw+BNQ2BMQuBMwyBKwqBPyOXOReJOxaJORWHNxaLNRWJLQyBLRaPMROJNROHLxGFLQ+BHQmBMw2BMQyBLQuBKwuBJQqBMRSJLwyBKQuBHwmBNQ6BNRePORGDIQqBMQ6BNRKFHwqBIwqBKQyBFwiBMw6BJwyBIwuBIQuBHwuBKQ+BMQ2BMQ+BLw+BKw6BFQeBEweBEwiBDweBEQeBDQWBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAapQIBwSCwaj8jkMSAQDAQEQqFgOBgMCGFCseh6F4xww0F4ABQQRkSylrgjkQnlUTk7LFO85YLBZDAaFnUMGwcWFgccGB0dGQgaGg8eAAsOH4YFICEEHh0aHSIjdQokB1QGGiUVJpAiIicolCmnWAieGq4VFLEMKhoqKyssLCUtFR4VFS6xIQ8pFy8wLzExFBQyFC4nMwAeNN80NTY0Nzc4NDjpOErs7UIGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 drawer_sound-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEQAQAIYAAPwCBGy+9ESi7ESe5Eym7CSW3BRqtARuxARyzARyxGSOtExedARmtAxyzARChESe7GS29GSaxGyexFxeZFxeXESOxDye5CyW5AxmtEyCrJzW/DRefGxqbHx6fExmhARmrARepARSlJTO/Dyu9DxCVJSSlHRydARWlAxanARKjAxirAQ+fGSy5Cym9Ax+vMzGzJyWnKyqrISGjAQ6dBxehARWhARelLSytNza3JyepAw6fARGhAQ6fAQybARCZOTi5Pz2/KyutAxapAQ+XLy2vAw2dAQqXBxWlAwqXByG1BQ+XJymtNTS1GR6lBxenBRapBQmPFSCnAwmTCQuPERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAARABAAAAfCgACCg4SFhoeIiYYBAgONj46RBAUGAAQHCAkICgsMDZqaBwwOAA8IEAQREhMUFQ8WrxcYpBYIBBkaGxwdHh8MICAho6UHESIjJBwlJicgKCEpKisAAhksLS4vMDEyMyAnJysqMwAWNDU2NjE3ODk6Jyk7PCg9liE+PjYcP0BBIdApegipV+DAkCE7iOAAkmNGkR49jBxBAiDJLyVDljD50cTJkydHjjgxAsCBkZNQory4AeWkSykkC02hQEWRzUJ0AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== file_broken-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOzq7Pz+/Ozm7MTCxOTi5Ly2vLSytAQCBNze3PTy9Pz2/PTu9OTe5Jz+dEz+BET+BCyWBLy6vJT+dMT+rDTSBDTCBKzmlCy+BCyuBCyaBKSmpMTyrDS2BJyanPz6/GzeRDSyBJyenDyeFMS+xLy+vKyurAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaOQAAgIBAMjoRCQcgUGg7QaOFAaAoR0SgBWm1is4cpNNFUgKmJBaPRdEQfEEPEAHmwmRLohFKhWC4IBndCbhgZBw0aGxYLDoMAbhQHHA0dHh8gAo9uFSEdlSIWIwWPEiQUJR2qJh+jmyQiGx4NHhYWJxebBgYotrYjFymbEg4EKgwryGqPTA3Oz89W0tN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 file_important-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Ozq7OTW5OTa5NzS3NzW3NTS1NTK1NTO1OTm5Pz+/NTG1PTm9Ozi7Ly+vLy2vLy6vAQCBOTe5PzW1PzOzPzOxPT29PTu9PyGfPwGBPw2FPw6HPxOLPze3Pz2/Pza1PQKBPwyFPwOBPwSBPxKNPTq9PwiDPQSBPw+HPxeRNza3Pz6/Pzy/PxqVPwqDKxyfNzO3NxmXNQWHMQSFKRqbLSytMTGxOTi5MS+xMzOzMzCzAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaXQAAgIBgQCgbCASFsChOKqBShWDiFDKn0EBVcG9ooNepwgsOLwwMScUqkE0qFYVFc2s23ApPRbDgdHh54QgMKHxkgCiEhIhcBhABvExkjiyQgCCWRAgoVJicoISkZByqRDSssLS4KLSIvMAWcChYFMTIzNDUCNpE3FywMEg44CwI5vk4CCQK9OhAOxTWRTRHX2NhX29x+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 file_locked-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBOTe5KSipPz6/PTy9KyqrJSWlJyWnGReZNza3JyanJSSlFxeXPz2/MzGzKSepMS+xLy+vHRydFxWXHx2fFRSVMzOzKyurIyOjGRmZERCRMTGxISChHRudFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdFE05stJBQLRrMRNSwchscDomayD4KIZEJRQOhNFVAWF1AXGBkIdU4HFQMaCREbGxaKgQcDGxwHHRMeHwKLAAYZAg6bCRMgIQOiFQ8iGwsFIyQlJieiBggaKCkqKiEmJgmuDY4nHArLaKJMDNDR0VbU1X5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLTW1NTq7Lza3KzOzOz29Ozy9NTm7Mzi5MTa3LTS1KTGzJS+xPT6/OTy7OTu7MTe5KTKzIS2xHSutMTa5KzO1JzGzISyvIyyxJzGxLzW3JS6xHyqtFySnKTKxFyapEyOpEyGlEyCjISuvGyirER+lER+jHyurGyepFyOnER2hDxyhERyjJzCzHSqtDxqfDRmdDRebFSKnHyutCxWZISutGSanFSOnCxOXGyapEx+jFSKlAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQIBwGBgaj0LBIEBAGguGAyKhWDCcjYbjgYAoIgzJ5CgwFB4CyqBiuWCOGUVCIEBoKhtO56jAeBYVAxQLHyAgRx4hIhgLIyQdJSUmRwQnKCIpJCUqKyssiBstHy4oJi8wMDFHJCIyMy0dKjExNKpHNTYiNzcwNDQ4TkI5MzoxOMDBQzvHyc3OwX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSitIyivHyezPT6/Pz6/Ozy9ESCzPTy/Mze9DR+1BRevARGvAQ2nAQqbJSivOzu/NTi7LzS7KzO9IzC9IS+/GS2/FSy/DSm/Cya/AQqfISevPz+/Nzq/KzS9KTS/JTO/HzK/BSK/IyixMTe/KzW/JTS/HzG/HyixOTu/Mzm/LzW/JzS/IzS/ITK/GzG/AR+/HymzOTq9NTq/Mzi/LTa/JzO/FS+/ARe7Gye1NTq9Lza/IzK/ESy/ARS3Gyi3PT2/KTW/IzO/GS+/Ey2/AROzFSa1MTi/ByO/AQ6tEye5HS69GSy/Eyi9DSa/CR+9BRu7ARe3ARCrCRenBQ6hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAesgACCg4SFgwECAwOGhQIEBQUGB4yCAQSXBggJCgsMng0Ogg8IEBEJEhMUFRYXGBkaghscmBAdCR4fICEioQAjswSkHSQlICYnvIIoHAjBKSorLC0uLzC9MbMGMjM0NTYuITc4vTnMKTM6OyU8Jzc9Pr0/HEAzKiQ1QUJDRBhFvUYEuKk4UqPFkB4YkCTppYTCEiZMmjh5AiWKDykaek2h4qCjx48dKYkcychPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_auto_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDQyNDw6PFxaXISChDQ2NIR+hKSipJSSlHx6fFxeXKymrJyanARCBARGBHx+fKSmpIyKjLT+tASSBFRSVBT+FASWBPT29ATuBNTS1MTCxKyqrJSOlOTi5ATWBGT+ZMz+zExKTNze3Nza3AS6BATSBCT+JDz+PMT+xKSepGxqbMzOzNzW3ASmBATaBATGBJyWnERCRMS+xASOBASCBARyBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAafQIBwSCwOA4JAwFgMDAjQJRNQGBgOiIRCmZQKBYcFA9FwPAgJ6OAIwUYckglUPRQwGAJKoyKxUP6AFAEMAxQXDRh8ExkaGhscSAgCGh0NHhgfIBYbWCEATiEiIw0kJSYnKBMpKksCAhsrLA0tJC4vDgcwMUIBFBsyGg0zLS24B6xfBHcpDTQzDREIEZ5CBSHXIQ01DTHdSlMNDVPjU35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_blue_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKzK5Mze7LTS5KzG5Jy63Ozy/OTu/Mzi9MTS7LTK5KTC5JSy1ISe1PT6/Oz2/OTu9Nzm9MTW7Jy23ISm1HSSzFyCzLTG5Iyq3HSO1KTC3NTe9KzC5KS65Hye1GSGzERqxJy+3ISi1Iyy1LTG7DRavJS+3DRWpFx+vCxWpCRKpCRCnGyavFR6tDRapExutFR2vCxGnCQ+pIym1FR6vFyGxCQ+hBwyjBwuhDxirBwyfEx6rBwqbGSKzCQ2hAAAACH5BAEAAAAALAAAAAAQABAAAAaGQIBwGBgaj0LBgFBAGg0HREKxYDScjgckIkksJpSK5Yg4GCLSywRTyRwnmsEmkeB0PB/QMSSajCYXJBggJSVHJiclGSMVKCApKit7LC0uLzAlMSsrMoceMzQ1MCk2Njc4RzUpOTUiLys6OjioRyw7Obg2szxOQjs9KT48vL1DOcPFycq9fkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_blue_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBCwu/Cwq9Cwu9NTO/MS+/LSu/BwW/Ly6/Kyu/GRe/BQS9AwK3AwKzAQGpAwGXDQy/LS2/JSO/Hx2/HRu/GRi/Fxe/FRS/ExO/EQ+/Dw+/DQ2/CQe/AQCBCwq/Pz+/MzK/Ly+/KSi/IR+/Gxu/GRm/Fxa/AQCDLSy/JSS/Gxm/AQCFPz6/Ly2/Kyq/Jye/IyK/Hx6/GRm9AwK7PT2/IyG/HR2/Gxq/FRW/ExK9HRy/OTm/MTG/ISG/DQ29Cwm/FxW/ERC/BQS/AwKtAwKlAQGfAwGZAQCRAQGNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe2gACCg4SFgwECAwKGhQIEBAUGB4yCjggGCQYKCwwMDQ0OD4IQERITFBUWFxgZGhscHYIeHyAhCSISIyQlJSYcJ6O0BSgiKSMUKiq+K7IsCC0uLzAxMjImFzPAABA00C8SNTY3Jjg5C9oeNCgvKTUxOhUXORozsQACOwYSMCMxJCYYNEBgYM8Dj3YwekwoEdCHgAb2fuQAkiNIACEzZnwa4sDeggZDiBQxcgTJiQ4oUVJayZKRn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_blue-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJyuxJSuxJyuzPTy9OTm7LzC1IyitFx6tHSKtGR+rERqrDxitHyatKSyxBxenBxalBxanAQqlGyKtDRijDRafCxKZHyy5LTK/LzS/LzO/Jy6/EyO7AQifISWxHyi1FyS1GSi3Iy65MTa9Ozy/Pz6/LTK7FyO9AQeZISaxKTC9LTS7MTe7Ozy9LTK9HySvLza9Mzm9Nzu9KzC9Mzi7EyC9AQebHySxNTm7OTu9DRy7Jy67JzO3KzW5NTm9HSe5BRO3CxyrDxytDRqvDx2tDx2vBRSvAQ2vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFggECAQGGhQMEBAUGBwgJCQoICwyDDQYODg0PEBGiEKUSghMUFRYWEBcYGRobGxwdgh4fICEiIyQlvyYYJyiCKSYqKywtv78YLsOCLzAsMTIty78qMxzEAB401S0EJeMlMzM1NoI3ODg5OdfYKio63R4wMQUt8OIlOzs61AG4waMHixE4fMiQUWDDDyACPQQRMoRIRSFFigwxcqQbABQgQ9oYGZKRyZMoAfgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_blue_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSuzPz2/PTy9OTm7LTC1IyitFR6tGyGvGSKvCxavISixKy+zKS2xHSavCRalBxajAQqlCRmnCRajBxOdDxytEx6vEx6xERyxAQifHySzFR+tFSCvFR+vGyy9LTK/LzO/JS2/Iy2/ESG/DxmpExytEx+vKzS7LTa9OTq/PT2/Pz6/Pz+/OTu9KzG/DRu5HSSzIyu3LTe9Mzq/Oz2/LzW/GSa/BxCjHSS1ERqrLzi/Mzm9OTu/Ozy/KTC/GyOxNzu/Jy+/Hym/Bxe3KTC3PTy/Aw2jCx2zLzi7NTq7JS6/Bxq/BRetBx2xCRuzCRuxCR2zCx6zAxa1AQ6xAQeZAQebAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe+gACCg4SFggGIAYaFAQIDBAUGBwgJCpYKgwsMDQEODxAQD5+fEYIJEhMUohUWFhUXFRgZghoHBxsHHBsdFx4fIB8hIiMaJCUmHycoKSoqKywtLiEvMBUkMTIzLTTOzzUfNjc4JDkoOjs8Pc0rKy4+IwDFPzs7QNsCAistQUJDADAkiKBrUUSdChYg3hn5dwTJjiT2ehQpIkBJiCWCcDBp4uTJkyZPoER5ImXKLEFUUlapQoUly5SLYsqcCcBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_dark_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLy+vMzKzMS+xLy2vKSipOTi5Nza3MzGzKyqrJyanIR+hOzq7NTS1IyOjHx2fGRiZISChIyKjISGhJyWnGxubLSytHRudFxWXGReZIyGjExKTHR2dHRydDw+PFxaXCwuLBwaHDQyNDw6PCwmLCQiJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQIBwCAgQj0fBgFBAEg2HA4KQUCycDIOhgQgQFI4H5NjQHrhUR0RynCQQDXSC8ngcKw5FIjEIWC4QGEcLGRcKBQ4aEBsYG0QLGxocHQkEjR4bHkQfICEeEAsKmR4imkIQFxsjISEijSKwIkMQDwupJKweJLtIGBUKD6QiJSVOQg4JDiK4xkQVps3RQn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_dark-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHx6fISGhISChLS2tKymrJSSlGxubGRiZFRSVFxWXERCRDQ2NGxqbEQ+RCwuLKSepJyenCQmJHR2dHRydLy2vJyanHx2fJyWnLSutCwmLKyqrLSytHRudKSipIyKjJSOlIR+hFxaXExOTFROVExGTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQIBwSCwKAwFBwFgcEAgFwwFxmCISimFSeVh4v16GsLFwMB6LACQCMRgCEuEkcKAIIIRKPmKBCy8GFhgQGRWGFXwBGkIUGBEFGxx5eRgWHXEAFx6QkRwchhYGHYsAHR4QGxsZnRVuB5gXFpupBJIcbg2YHR8gjgWcGyAhIrAjJAnIyCIJIgslmAAS0tPU0kzX2NkAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_develop_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1Mzi5Lza3KzOzJzGzOz29OTy9KTKzJS+xHyytKzO1IS2vGymrFyepNTm5MTe5Iy6xHyuvJS2vISyrNTm7MTa3LTS3HSmtHSerKS2nMzGpPTqpPz+rPz2jKSahJSSdPzuXPz2TLyqTFxKTJx+POzGJLSGHLzSlPTqhLSqlOzmdPz6bPTmPGRaRGRWLPTWFPzSBJRuBCwGBHxSBKRuBMzCfNzORPzqNOTKFFQyFNSmBNyqBDQCBGQqBKS6lPz2fKyiXGxeXMSiHEwWBLyCBMyOBIxKBISilMSybKSSPFQyJOSmBFQSBLxyBMx6BHwyBEyCjCxSZCRGTDxqfDRWbFySnERyfDxmdDxidCxKXIyuvKTCxISuvERuhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAergACCgwABhIeHAgMEBYiEBgcCAgEICQqOAJCSAQsJDA0Ohw+QkRCMERIThxQFkhUWFwURGBmDGhscHR4fICEiIyQlJieCKCkqKywtLi8wMTIzNDXFHjYgNzg5Ojo7PDQ9PoI/QCxBQkMxO0RERUZHPYJISSEhSks1TEVNTU5PUIIOMlDIEEXKlClUqkiRgshKhgkZrmDJIkULJgBbuHTBYvDioAxePIoU5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_develop_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSitHyezPz+/PT6/Ozy9ESCzPTy/MTe/DR+1BRevAxOvARGvARCrAQ2nAQqbOzu/NTi7LzS7KzO9JTG9IS+/GS2/ESu/Cya/AQqfOTq9KTS/JTO/HzK/ByO/IyWrMzCpPTqpPz+pPz6lJySfPzuXPz2VLSqTFxKXJR6POzKJLyCBLzSlNTOlKymlPTmfPz2bPTmRFxWPGRWNOzWDPzaBIxqBDQCBHRSBKRuBPz2hMzCfJSKdOTSTPzqNOzOHEwyHFwyFNSqBNymBIRSBFwmBISilPz2ZLSmZGxeVMyiHPzSBEwSBEwWBMySBIRGBDwCBFx6nLyubKSSRLxyBOSiBMx+BHwyBESKxLSurLSylOTelNzShIyGjHRuhKSefJSafHSGhDRSjFQuLEye5IzC9HS69Eyi9CR+9BRu7ARe3ARSzAQuhCRenBQ6hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCg4SFgwEBAgKGhQEDBAQFBoyCAZAHmAgJCgsMDQ4PlQcQERESExQVFhcXGBmCAo+RGhoIGxscHR6hAB8gISIjJCQlJicoKSorgiwtLi8wMTIzNDU2Nzg5zDo7PD0+P0BBQkNEN0WCRjpHSElKS0NMTStOT1CCUVJHMVNAVFUrmDChYuWKICxZtGzh0sXLFzBhxIhBMUYQmTJmLFg4gwFNGjVrHLDh1cbNg5MoU56kxLIlIz+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_develop-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPTy/OTm7LzK1JSmtGyKpHSWtHyatGSKrER6rJSqvKzCzKS+xKS6xISmvCRylARGlDxyjDRmfCxSZITC3LTa/Lze/KTO9GSu7Aw+dISy1GSmzGy21JTK3Mzi7Oz29Pz6/Pz+/LTW7LzW9AQybIyWrMzCpPTqpPz+pPz6lJSafJSKdPzuXPz2VLSqTFxKXJR6POzKJLyCBLzOjNTOlKymlPTmfPz2bPTmRFxWPGRWNOzWDPzaBIxqBDQCBHRSBKRuBLzSlPz6hMzCfOTSTPzqNOzOHEwyHFwyFNSqBNymBIRSBFwmBISilPz2hPz2ZLSmZGxeVMyiHPzSBEwSBEwWBMySBIRGBDwCBFx6nLyubKSSRLR6BOSiBMx+BLxyBHwyBESKxLSurLSylOTelNzShIyGjHRuhKSefHSGhDRSjFQuLISmxDSGpDyKrDyGrESKrESKtDyGtCRytAxatAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe+gACCg4SFggGIAYaFAgMDBAUGBwgJBwoLC4MMDQ4PEBGgoaASgggTFBUVERYXFxgZGRobghAcHR4fICEiIiMkJRomgicoKSorLC0uLzAxMjM0gjU2Nzg5Ojs8PT4/QEFCgkNERS1GR0hJSktMTUBOgk9QUVJTVFVMVlc0WFlagltcoujoksTLFzBWrIQBI0bQGDJlzJxBk0YNizVs2MRoI8jNGzhx5ISMMwcOnTp2hAkywbKlS5aLYsqcCcBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_exec_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1MTi3Lza3KzOzJzGzOz29OTy9NTm5MTa3KTKzJS+xHyytKzO1IS2vHSqrFyepNzu9MTe5LTS3ISuvISyrNTm7Iy6xHSmtGymtGyipIy2tJS+vKTCxGSitFSWrHyyrGSinHyapEx2fEw2TExibGxmdIyurFyGhISytHSmrJzCxCw2RFxKXJyWpJSOnJyapHx2hFySnDxmZCxSVERudGRWZLS2tFRGVDxSZKSmrMzS1Hx6fFSOjCxOVCRGTKSerDRidFxufMTKzLy+xGRaZGSirEyCjDRaZFRWXOTm5HSerJS2vHRyfKyutOzq7GxmbIR+jGRebDQqNERuhDQ+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCgwABhIeHAgMEBYiEBgcICQEKCwyOAJAICAENCw4PEIcIBwcREhITBRSshxUKAhYWCaoXGBmHGhscBR20DR4fH4cgISILBQ4UIyQlJoQnKCkPKisTLC0uLzAxgzIzNDUQDyI2Nzg5Ojs8ABoaPTU+PzM4QDhBQkNERQAQRhUQjiD5kcQFixI3lNggJGMJkyU1mjhxkkDJEyiIKKyqEUWfFChTMImgAqDKQkwoBfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_exec_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBIyivISevISexPT6/Pz6/Ozu/ESCzJSitPT2/PTy/Mze9DR+1BRevARGtAQ2nAQqbJSivOTq9NTi7LzS7KzO9IzC9IS+/GS2/FSy/ESu/Cya/NTq/Mzi/KTS/JTO/HzG/BSK/IyixPz+/OTu/MTe/JyqvHyKnHyixOzy/Nzu/Mzm/JzS/DxWbHzK/FR6lAR+/HymzOzy9JymtLTa/FS+/DRWlGye1ExWZGyCnGSKpBxKbBw+dGyi3KTW/Fx+nCRSdDSm/FSa1MTi/Fx2jGS+/CxWhAQ6tEye5HS69GSy/Eyi9CR+9DRShAQqfCRenBQ6hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAetgACCg4SFgwEBAgOGhQEEBQUGB4yCCAUECQoKCwwNDp8PEIIRBBITCxQVFhcYGRobogAClwUKBhwdFR4fICGxIiOQCSQSJSYnAb2xKCMJCSkqKycsLS4vMLExIwQytzM0LS8tNTaxNyMpJLgzODkUOjs8sT3NHCslJz4tP0BB8oJCCOBaMYQGkSI7ghg5EguJhSRKlCzZwKQJDx5HnMR6AgWCx48gPVIaSZKRn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_exec-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/Ozy9OTm7MzOzJSmtGyKpHSWtHyatGSKrER6rJSqvKS+xCRylARGlDxyjDRmfCxSZITC3LTa/Lza9KTO/KTO9Fyq5Aw+dISivHyy3GSmzGy21JTK3MTm7Pz+/LTS9GSu7AQybISmxLTS7LzW5PTy/HyivLzi7NTu9LS2vEw2TJSOnHRmdNTa3Mzi7FxSXFxKXJyWpJyepHR2hFSi7GRWZFRKVJSSnKSmrNTW1ESW5KSerKSytLy+xKTK5KTa3IR+hHR+hKTK7CR61DSGpGRuhOzq7ESOtDyGtCRytAxatCRGbMTKzGRibGRebCQqRDQyNBQKFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe/gACCg4SFggGIAYaFAgMEBQYHCAkKCAsMDIMNDpwKD5+gnxCCCRESExMPFBUVFhcYGRqCGxwdHh8gBAMDISIWIySCJSYnJyAouyEDFhYZwQApKiorLC0uLzADJhXOwjEEMjM0LjU2AyImN88bKw44LDk6Ozw0Jhg9zyUgOT45BD8GgODAEASfIAVChtAg8oNFARksinAwku8Ikh8/eCRJgkTJEiZNngEg4WTIEyBQokghwVIkoSk4qCyaSROAn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_find_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSitIyivHyezPz6/PT6/MTm9Mzm9Lze7PT2/Pz+/Nzy/KzS5GyqxFyavARGtAQ2nAQqdJSivOz6/Kzi9Hy21DSm/Cya/ISevKzu/GSy1EySvDR+pBSK/IyixPT+/Jzq/CyCrCRunHyixNTq/HzS7ESaxBR2pBRehBRynAR+/AQqbNTy/OT+/Mz2/ITa7FSuzDSavAxmnARWhARe7Gye1HzC3HS+3BxCXAROzGyi3ESixDSSvAxmlAQ2TFxaXFSa1CxqjBRWfARCbERCRKyurAQ6tEye5IzC9HS69GSy9DSKtER6lFRyhGReZCRenBQ6hHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAexgACCg4SFgwECAwOGhQIEBAUGBwgGjAEECQUKCgsMDQ4PDxARghIEE5ubFBUODhYXpAAYqKkKGRobHA4dsR4GtR8gGiEiHLyCIySamxMlJicoKSoryJQsLS4vMDEyMyI0sTUMNjfl2yczOCk5sToKGjsmJjwnPT4/FuyCQAUkISlBhAzxQaTIDyPUABxBkkTJEiZNmDgg4sRgrCdQImjcqJHID4OMDHkEGZKQxygA/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPT29OTm7LzK1JSmtHyWtHSSrHSOrGyOrKzCzISmvCRylCRihHyatDxyjDRmdDRidGymxMTe/Mzm/KTO9Fym5BxSfISmxPz+/Pz6/MTe9LzW9BxOfLzW7BQ+bHyivPT6/LTS9Eya3PT2/ESW3AQyZISixOz2/KzO7DSK1AwyXOT29Ozy9LTS7DSG1NTq7NTq9Nzu7OTu9KTK5CR2zAwyZIS2zHSuxGSevFSWtDyKrESKtESOtDyGtCR2tAxatCROdAwePAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeogACCg4SFggGIAYaFAgMDBAUGB5MICQkKgwYLAQIMDZ+gnw6CDxAREhATFBQVFBYWFxiCGRq1GwMbGrkcHRces7YbucMUHxcggiEaIhvMwsIjIyTIABnMzhsl0CMmJ4IoIikl4iWOGyoqKyyzLeMlLiXxAy8WMN4AITExMjIzMjQ0WtSoYePGNxw5dOzg0YOHDx8/gAS5J+TEiRsWL2a0OGSRx48g/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_green_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTerMTmxLzitKTWnJTSlOz67OT23NTuzLzivKzerJzSlIzOhGTCbPT+9GzGdFzCXEy+VNzy3LzmtKTanHzKfGzGbHTKfHy+dLzmvJTWlHzOhFzCZGS6VITCdIzGhKzirJzanFTCXDzCTHy+bFyyTGyyZJTOjHTGdEy2VDSuRFyOTJTOlKTapDSiRCyiRFSuRDRyLCRaJESCRFSqVITKjDyqRCSSPCySPDyWRCx6LBReJEyqTCSCNFSyTGS2XFy2VBxqLBxSJBRWHBx2NGyybGy6dHzChJTSnGS+dDSORAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAefgACCgwABhIeHAgMEBYiEBgcICQoLDA2ODpAIAgEEDA8QEYcIkBICExQLFRYXhxgEAgIIGQoaGxwQhx0eHwQaASAhIiMjhyQlJh8nKA8pKs+EGCsYHSYsLSouL9qEMDEyMzQNNTY35jiDHSU5OjsyOjwvPfM9gz4/GEA5QUJDOEQAEfEoUsHIjXlBgjgSdARJhR5EdiwklETJxIuE/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_green_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFTuXOT25Nz23NT61DzqRNT21Iz2lDTaPCzGLDSqNCRiJLT2vKT2rJT2nIT2jHz2hHTyfGTubEzmVBxOHFzyXPz2/NT23MT2xKTupIzulHzmhHzihGTaZMzyzLTytGzedCzOLBxSHPT29MTyzLTuvKzqrGzabFTeXEzSTBROFLzuvKzqtJTinIzajDzKPByyJBRSFOTu5MTuzKzmtKTmpIzejHzWfGzWbFzSXETKRCy+NByuHAxSDETiTNTm1LzivJzipHzafFzOZDzORDzGPCS6LBSmFGzSbDTGNCy6LBy2JBSaFCzSNBy6JBSSFAyCDByKHBx6HBRqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAezgACCg4SFhAGIAYaFAQICAwQFi4KNAwYEBAcFBQgICQoLlAQMDQ4HDxAREhMTCBSCFRYCFwYYDBkaGxwdrpSykB4fGbogHSEisCMDFyQlJhocJygpCSqUIx4eKywtLigdKS8wMZQyMzQ1Njc4OTohOzw9gj4/QEEuQh1DREU7RkfyAPgA0uLGDSRDXiRRsoQHk4AIpqVoksAJjCNHnjyBEjCEEyZRpEzpQbIkyUkoUxryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_green-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBKS6rKS2rKy6tPTy9OTm5MTKxJSmnHyShISejISelGSWhJyypLTCvKy2rIymlDx2VFSKZGSWfFySdEyCZCRyVHyejExyVERmTDxaRGyihJzKrMzu3NTy5Lzi1LzazITKpCRaRJSupJS6pHy2lNTi3Oz29Pz6/Pz2/HTCnBRSPJSypLzWxMTazMzezITKrBxSPIyunNzm3Ozu7PT29LzezMzi1NTi1OTq5Ozy7OTu7LTaxGS+lKzKtLzSvLTSxEyqhEyKZFSSbFSObFyadFyWdFSWdESObDSKbBQuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAetgACCg4SFggECiIaFAwQEBQYHCAkKCQkIC4MMDQ4ODxAREhMTERQQFYIWFxgZGBobHBwdHh8gIYIiIyQkGyUmJycoHh4pKoIrLC0uJY7AJyUeLzCCMS4uMjM0KM41NsXHNzM4OQQ0NMAeLt8AMTclMzrk2ig7OzzGACvX2DOO2h/28MXo4WOZDGw6dPz4AQTfiiARIggZQopIESNHkOADoKKjx48dkywaSbKkn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_green_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBKy+vKS6rKy+tPzy/Pz2/Ozm7MTOzJSqnHyWjISilIyqpEySbGyWhFSSfGSWhJyypLzGxKy6tLS+tERuVDxqVDxqTDxqXBx2XISmnExyXERuXDxeREx2XGSSfGyahHyilHSajFyWhBxeTIyypHyalJzOtMTu3NT27MTy5Lzq3KzezHzStJy2rGSOfMze1LzazNTm3Ozu9Pz6/Pz+/PT6/MTi1Lzi1GSulIyupGSKdMTizOTu5Nzu5NTm5Mzm5IzStFyCdGSSdNTq3MTi3ITOrNzq5Ozy9PT29Lze1KzazFSihLzOxNzm3PTy9HzKrMzezOzu7KzaxFzGpESCZFSWdFSSdFyafGSehFyadFyehDyWfBxmTBRSPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe9gACCg4SFggECAwKGhQEEBQYHCAkKCwwNDg+DEBESEwoUFRYWF6MWGIIZGhscHR0eHyAfISINI4IkCQ27JbMNJicoKSorLC0uDQovMDEyMwU0MzU2Nzg5OjoTOzw9MwTRND4/QBctQUI3Qz0EBM/RPkRFADlBOUZGRzIF7TNISUpLAJhj0kSGkwJO3MF7cmGeEChGmkSJgiRhgSRSpghqQaUKgypWrlTBkkXLli1cBnVZybLlSkYwY8oE4CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_grey_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBMzGzNze3MzOzMS+xPTu9Ozu7NzW3KyurPz2/Ozq7OTe5NTO1Ly2vJyenJSSlLSutKSipLSytKyqrJyanIR+hHRydGRiZLS2tIyGjHx+fGxqbISGhHx6fHRudFxeXFRSVExKTJyWnERGRERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIBwGBgaj0LBgEBAGgsGwWGJQDgTCcXiwCA0EI7HUWAoaKcEiCNylBAGC2mAMKFUjvQGpDFgNCoWFkcNFxYOGBQZGhcbF3gPHBsdGR4XFx+ORggTCByQFyChIEcZGxYUEBUXIawhSCIaphYgISMkTkIVFBsgJLe4Qxa+wMTFuH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_grey_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSipJyanKSepPz6/Pz2/PTy9ISChNza3GxqbFxeXFRWVExKTEQ+ROzq7OTi5NTS1MzKzMTCxLSytKyqrJSSlDQ2NJyenPz+/IyKjPTu9Ly6vNzW3Hx2fOzm7Ly+vKymrJSWlJyWnHRudGxmbDw2PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaJQIBwSCwOA0iBsTggFAqGw1IYcBquiENCoVgwGlSD44GARCQTCrJiEV4whKuBDIFIJJk2IAB/asZ2EBt5VBhPYg8cdmgdenxQBh4PZncUjW4YiHQSHxQDCXoDmWOJZhMgAqBCIQSSD5NoAQIVC3oVH2meIhkdIyQLDXoKDCUlFsfGx8pTzM1LfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_grey-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLSutKyurLSytPT29PTu9OTm5MTGxKSepIyGjJSOlJyWnHRydKSipLy6vJSWlGxmbFxaXExKTGReZFRWVPz+/Pz6/Ozu7KSmpEQ+ROTe5DQ2NNTW1KymrJyenPz2/NTO1PTy9MzOzOzm7MzGzMTCxNza3Ozq7KyqrHx2fHx6fGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaSQIBwSCwKAwKksTggFAwHREKxSCQYjGHDEQg8IJGwOCIRKiYUCSNQqVgIFwMmI2y073iDBrOpty2Abm4aHB19AB4VH4sWH4AWICAehw2LIYuMkCALhx4FF5+fBIsiIgqUBiMjF6CjHyQHp0IeJSQgJhoaIycnJSgphwgQWFgpDCopKSsRhwAbz9DRz0vU1dYAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_grey_open_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExOTJSSlKSipJyanIyOjHx+fHR2dGxqbLSytNza3NTS1ISChOTi5MzKzMTCxGRiZJyenPz6/PTy9KyqrOzq7PT29Ozu7Pz+/NTW1MzOzLy+vOTm5Nze3Ly6vKSmpISGhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQIBwSCwOA8iAsRgQDAgD5RIQGAwEWEEyeXwSsAXDYYyQUp8JhWIxYJDN1UFj7Xg8EgnrFRKIPCQSE4JzCwt3B1QUFYAWExcVawsOBBBUDxgSFhaPDRkaDhuIVBwYmI4cnQ4OCQhCAaWbqB0KGYYCRxgVnYYeCR8EIJWuW8RcU8fIS35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_grey_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLSytPT29PTu9Ozm7MzGzKSipISChJyanHRydHx6fKyqrLy+vFxaXFxeXFRSVJSSlGRmZGxmbIyKjERGRISGhIyGjOTe5Nze3NTO1MzKzKymrKSmpIR+hIyOjMzOzNzW3Pz2/Pz+/Hx+fHx2fLS2tNTS1Pz6/NTW1HR2dMS+xPTy9MTGxDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQIBwSCwKA8iAsRgQDAgFwwGBSCiswwUDiWg4Gl6H4/EQQiKNh0OiOEwO8AlFKK1YJvh34HLBZDQbHB0HHhkfIAQhAiEiAoYTBiMkJSYEBAICJyciGCgBDQYJJCYYF5eYmigZBgAGKQgYlgOzIScEGSoKrQkqpgS0jBcmHGWRGaZPswIrGiwQdBEkoiQKCh0dIwkRc0It3t/g3kvj5OUAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_home_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGx+lHSCnJSerOz2/DxWdExmhNTa5Pz+/Pz2/Ky2xFxqjExifJSirPz6/NTe5Ozm7NTS3LS6xHyOpMTK1KyyvGR2lOzu9MzO3LzCzJyirJSetISSpCxKbLS+xKSuvISSnGR6lFRujFRqhJSulNzm3JSilKSypLzKvKy6rISahHySfGyObGSCZExqTIyejNTe1NTa1IyWPKyyNMzGLFR2VERiRIyijMzazNTi1Nzi7IyiNMzSHPz+BDRWNMzWzHSKdMzKzFx2XGyGbLSytCxOLASyBAT+BJSSlAT2BAR2BCRuJAS2BARmBARqBJyqnFyaXASKBASiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe5gACCgwABAoSIhAMEBQaJggYHAAMICQoFC48MBw0IDgQPA42JBpSeEBESE5iIlAkIBBAUFQMWo4KUFwkOFxgZGhscFh2ZDRAevh4fGyACIRYiDAUjgiQlJSYnKCkqKywtLoQvMDErCSUnMjM0NTaENzg5KxA6Jzs8PTU+hCo/OEBB0KloIcTFvkEr/A0hEoOECiA1XBQhtMLIkRZIUNxYkUSJkSWEmDRx4gLJEyhGokSRYuSRy0F+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_home_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGx+lHSCnJSerOz2/DxWdExmhNTa5Pz+/Ky2xFxqjExifJSirMzS3LzG1JSetMTK1LS6zKyyxHyOpLTCzKSuvGR2lMzO3MTG1KyyvKSqvISSpCxKbOzm7JyirJSarFRqhJSulLTKtLTGtHyWfISehJSmlISahGSCZGyObERqRIyijKzGrKS6pHySfJyunPz+BGyGbFR2VERiRMTGLGR+ZFx2XDRWNMzKzJyynLSytExuTCxOLAS2BAT+BJSSlAT2BAR2BASyBCRuJARmBARqBExqTASKBASiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCgwABAoSIhAMEBQaJggYHAAMIBwkFCo8LBwyVDQ4DjYkGD5UQEBESE5iIpQ0QFBQSFQMWooKUFxgRCRkaDw8bFhyZAx0eERnAHxMCARYKCwUggiEiIyQlJicoKCkoKoQrLC0uCC8uMCoxMjPiLeUdJiQ0KjU2N4QnLSEpOCvfbNhQkW+QixwhUOhY0U2GjB08CLno4SPGDxcOgQQRMoRQDyJFjPyoQUTIkSNIhDxaOchPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_home-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGx+lHSCnJSerOz2/DxWdExmhNTa5Pz+/Pz2/Ky2xFxqjExifJSirPz6/NTe5Ozm7NTS3LS6xHyOpMTK1KyyvGR2lOzu9MzO3LzCzJyirJSetISSpCxKbLS+xKSuvISSnGR6lFRujFRqhJSulNzm3JSilKSypLzKvKy6rISahHySfGyObGSCZExqTIyejNTe1NTa1IyWPKyyNMzGLFR2VERiRIyijMzazNTi1Nzi7IyiNMzSHPz+BDRWNMzWzHSKdMzKzFx2XGyGbLSytCxOLASyBAT+BJSSlAT2BAR2BCRuJAS2BARmBARqBJyqnFyaXASKBASiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe5gACCgwABAoSIhAMEBQaJggYHAAMICQoFC48MBw0IDgQPA42JBpSeEBESE5iIlAkIBBAUFQMWo4KUFwkOFxgZGhscFh2ZDRAevh4fGyACIRYiDAUjgiQlJSYnKCkqKywtLoQvMDErCSUnMjM0NTaENzg5KxA6Jzs8PTU+hCo/OEBB0KloIcTFvkEr/A0hEoOECiA1XBQhtMLIkRZIUNxYkUSJkSWEmDRx4gLJEyhGokSRYuSRy0F+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_html_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1MTe5Lza3KzOzJzGzOz29Nzu7NTm5LzW3Iy6xHyytMzm5KzO1JS+xIS2vGyqtGSirOTy9Nzu9Mzi5KTC1Iy2vHyuvISyvISyrKTCxNTm7HSmtGympIy2tJS+vJzGxKTKzGSmpFSStEySrHyyrGSinHSipKzWnKTSjGSqpDSOPIyurFyGhISytHSqrHSmrJzCxHzGlOz+zMT6hGS6nDyG1CyCdGSanDxmZCxOVERyfHyqtGSezFSqxMTqxMzq9DR+3BxinBRaDFSOjERudCRGTCxKVDx6vGyy3ITKvEyG1BRKrBRSJFyepISutEyCjDRaZBxOdCRq3Dx+5JTKlGzOJDSCXAQyfAQqTFySnHSerHyirDxmfBROpBxWxFSOpFyiPBRGZAwuVAwqZAwuPAQWPAQCDAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCgwABhIeHAgMEBYiEBgcIAgkECguOAAYGCAwEDQ4PEBGHCAYSExQCBBUWFxiHGRoCGxsJCQUKHKOEHR4fIAS2ISIjJIclJicKGgolKCkqJCuDLC0uLzAxFTIzNDU2N4M4OTo7ODw9Pj9APkFCQwAmIkRFRkc5SEFJSj5LTE0AnER4YgJKFCNSplCpYuUKliyDtGzxwKVLFy9fwIQRA/EQBg0XuogZQ6aMmTNoHG3ZgaklIj+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_html_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBIyivISevISexPT6/Pz6/Ozu/ESCzJSitPT2/PTy/Mze9DR6zBRevARGtAQ2nAQqbJSivOTq9NTi7LzS7KzS9IzC9IS+/GS2/FSy/ESu/CSW/AQqfNTq9KTS/JTO/HzK/BSK/IyixPz+/Nze3LTK3KzW/JTS/HzG/HyixMzC7MTqnOz67KzivDxuvJSy3JzS/IzS/GzG/AR+/HymzNTW5NT+tGTOhER+5CxOnIS+9Ey6/ARe7Gye1HTC9HzenEyq9DSG/DRSrGSGnFS+/ARS3Gyi3Jyu1HTSzFyq3ESi1BRu7CxKjGSKpFy6/DSm/AROzFSa1GSWnDzCRDxedDRKbAQ6tEye5GSi3CxirERWjDRqTDRKVCxepARe3AQuhBQubAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCg4SFgwEBAgOGhQEEBQUGB4yCCAUECQoKCwwNDp8PEIIRBBITCxQVFhcYGRobHIIClwUKBh0LFR4fICGiACIjBSQSJRQLJh8nKL6CKSMqKywtLi8wMSAyM780NRYsNjc4OToWIDs8vz0vPjY/QEFCQyhEGkW/RkcgSElKS0xNnOx4AuVXlBoMNEiZQqWKkoEbrPy6YgFLFi1buHRZ4gWKFQ6/snyBAAEMyZMoKalcychPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_html-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/PTy/OTm7LzKzJSmtGyKpHSWtHyatGSKrER6rJSqvKzCzKS6xISivCRylARGlDxyjDRmfCxSZITC3LTa/Lze/KTO/KTK7GSu7Aw+dHyy3GSmzGy21JTK3Mzi7Oz29Pz+/LTW7AQuZISmxLTS5LzW5Lze7Mzm7MTS5AQybHyivMTm7NTq7Mze3Fyq5MTetKzKlGyitGyarKzKpLTS9LTS7FSi7JTGpOz21MTqlGyunFSCzDx6dESW5Iy23GSivMzmzEyCxCxijHSSdPT2/Gym1HyqzIzCtCROlFx6ZCR61DR+rDxuxJzGpHS6PDx6ZBw2bCxafDyGtCRytAxatCxarFyGnFySRBxCXAQiRAQ2bBQiRBQqVAwqNAwWPAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCg4SFggGIAYaFAgMEBQYHCAkKCAsMDIMNDg8PEBGgoaASggkTFBUVERYXGBgZGhscghAdHh8gISIDAyMkFxslgiYnKCkqu7wDGCsbLIItKS4vMCsFyicXMc8AJi8hMjM0NTa8Nzg5wgAQKTo7PD0+PwYDGhpA3CZBQkMvQkRFjBzBcY8bBCREkiip4WMJExEaOjThlsTJEx9QokiZQqVKFStX1AEoIQFLFi1buHApUaKLyEFevoAJI0bMops3/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_image_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1MTi3Lza3KzOzJzGzOz29Nzu7NTm5JzGxJS+xISytOTy9LTS3IS2vGyqtFyepNzu9Mzi5KTK1ISuvHyuvISyrMTa3NTm7Iy6xHSmtGymtGyipIy2tGSitFyarFSWrHSipJzCxJSSlHx+fIyurFyGhHSqrHSmrFSWpHRydDy2RDzaVJzCnHx2fFyalDxmZCxOVEx2fFSKnBRqHAyeDDymBASCBDRCNGympFSOjCxKVEyClKyqrGRmZERCRExGTExKTGymrISutGSirEyCjCRGTERuhLSytNzW3KSmpISChHx6fFySnHSerJS2vDxqfDxidKymrOTe5JyWnDRaZMzGzJyanGxubExOTLS2tISGhGReZGxmbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCgwABhIeHAgMEBYiEBgcIAgEJCguOAAYMCAgEDQoODxCHCAYGEQgSExMUFRSHFhMXGBgXDQUZGhuHHB0KChMNFxMeHyCwECEioBQQIyQkI4MlJhYnKCINKSoqKywtLoIvMDEyLxQOMzQ1NjU3OAAQOTrkOzAzPCM9Pj9AQfFChhApssOIkSNIkihZwuSfoCZOnpyAAiWKlCRTqLgAcohCAgpRqoxIYuUKliyOnBwBoELLlS1cfmAa1MWHD45+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_image_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBIyivISevISexPT6/Pz6/Ozu/ESCzJSitPT2/PTy/Mze9DR+1BRevARGtAQ2nAQqbJSivOTq9NTi7LzS7KzO9IzC9IS+/GS2/FSy/DSm/Cya/AQqfNTq9MTe/KTS/JTO/HzK/BSK/IyixPz+/JSWlIR+hISChJyWnKzW/JTS/HzG/HyixGxqbHR6dFSeXGS6bJy2pHx6fJzS/IzS/ITK/GzG/AR+/HymzAQ6DAyOHESmBByaBAx+FAQqBJzO/FS+/ARe7Gye1KyqrGRmZEQ+RExKTIzK/ESy/ARS3Gyi3Ly2vOzu7Ey6/AROzFSa1JyenOTm5Nza3GS+/Ey2/CSW/AQ6tEye5MzKzJyanBRu7ARe3AQuhCRenBQ6hFRWVLy+vERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe9gACCg4SFgwEBAgOGhQEEBQUGB4yCCAUECQoKCwwNDp8PEIIRBBITCxQVFhcYGRobHIIClwUKBh0eFR8gISKiACMkBSUmJygeKSoqK76CLCQtLi8wMTIzNDU2N784JDk6Ozw9Pj81IUBBv0IkJ0NERUZGRyEZSEm/SiRLTEMnJ0U0gDTR4OTXEwJQokgp0aLIFCoaqlj5dcWCDCZYsjTUssWJFS6/unj5AqbFiS9GIKhcWchImCJFKMmk5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_image-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPT29Ozm7LzK1JSmtGyKpHSWtHyWtGyOrER6rJSqvKzCzKS+xHyivCRylARGlDxyjDRmfCxabCxSZITC3LTS9Lze/KTO/KTK7GSu7Aw+dISivHyy3GSmzGy21JTK3Mzi7Oz29Pz6/Pz+/LTW9Fyq5AQybISmxLTS5LzW5KSepIyOjIyKjKSipLzW9Lzi7Hx2fHyGfFyqZGzCfKS+rLTW7LTa/ARmDBSuHFTKBBy6BAyiFARWBFSi7Mzq7LSytHRydFRSVFxeXGRiZKzO7ESW5MS+xOzu7JSSlKTa3KSmpNze3FxWXOTy9CR61DSGpIyGjOzq7NTO1ESOtDyGtCRytAxatGRmZISChJSOlFRWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCg4SFggGIAYaFAgMDBAUGBwgJCgcLC4MMDQ4CDxCgoaARgggSExQVEBYXGBgZGhscgh0eHyAhIiMkJCUmFycogikqKywtLi+9JDAwG8IADzEyMzQ1Ni68NzjBwyI5Ojs8PT68Fxc/0A9ALUFCQ0RFAyRGRkfQKTFISUFKLkOONGi4R2sJEwJNXshw8uSJBg9Q8EWRMoWKwiFVqli5ggUaABRZkGjZksUJipMnDRHhMmTIopcwAfgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_important_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAAT+BLTW1MTi3Lza3KzOzJzGzOz29Nzu7NTm7MTe3KTKzJS+xHyuvOTy9NTm5JS+vIS2vHSqrFyepMzm5Nzu9MTe5KTK1Iy6xISyrMTa3LTS3HSmtGSirGSmpIy2tJzCxGSitFyarFSWrHyyrGSinHSipPyqrPympPyenPyCdFyGhISytHSmrKzO1FSWpOQGBPw6JPwyFPx6dFyalDxmZCxSVERudHyqtJS6xPwCBPwOBPz+/PwuDGyipFSOjCxOVCRGTDxmbFSKnPwKBPQSBPxONEyCjDRaZPyqpPweDPw+HPxaRNwSDFySnHSerJS2vDxqfDxidPxqVPwmBPxiTIyuvKTCxISuvMQSFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCgwABhIeHAgMEBYiEBgcICQEKCwyOAAYNCA4BAQ8QERKHE5oUDhUWBRcMEIcYChUOCBkaqxschx0eDx8WGhoWICEihyMkJRcfEBchJicoKYMYKisRLB8tLicvMDExMoIzNDU2Ejc4Jjk6OzE8OgAcPT42P0BBQihDRO1FQwASOGCQYOQIECBIkiRRwmMJk0FNnDwpAQVKFClTdlAh8pBQFStXoBjEgoUJFkxOoGBaichPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_important_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAAT+BJSmvISevISexHyizIyitPz6/Pz+/PT6/Ozy/ER+zJSitPT2/PT29Mzi9DyC3BRivARKvAQ6pAQqhIyivOTm9Mza7LzS5KTK7ITC9IS+9Eyu/ESu/CSa/AQqbNzq/MTe/KzS/KTS/JTO/HzG/BSK/ISixPzSzPzKxPzm5PyGfOwKBPwyFPw6HPxOLPza1AR+/OTu/PwGBPwOBARe7HSe1PxKNARS3Gyi1NTq/Mzm/PzOxPwiDPQaBPw+HPxeRAROzEye3PxmVPwSBKRudAQ+tHS69Fyy9Fyu/ESi9DSa/NxmXMwWHMQSFJxqbCRepBQ6jAQqdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAemgACCg4SFhoeHAQIDBIiDBQYHCAkKjgsHDA0NDA4PEBGgEhOCFA0VDhYXGBkaGxscHR6CAgcGBgkJHyAhIiMkJbIAJrWauScoKCm/wQQHxQkqKywtLi8wzM4JMS8yMwcsLDI0wTXZHygyK982MjfBOM45Ojs8PT4sPytAwUEGOv86hPA48GMIkSL8NBg5giSJkiVMmjgRFewJlCgeMmrcGMyRIT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_important-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAAT+BJy2xKS2xPT29PTy/OTm7LzK1JSmtGSKrHSWtGyOrER6rJSqvKzCzKS+xKS6xHymtCRylARGlDxyjDRmfCxabCxSZITC3LTa/Lze/KTO/KTO9Fyq5Aw+dISivISy1GSmzGy21JTK3Mzi7Oz29Pz6/Pz+/LTW9Lza9GSu7AQ2bISmxKzO7LzW5PympPyqrPyenPx+fLzW9AQybLzi7OwGBPw2HPw2FPwyDLTS7PwGDPwSBPwGBOyChFSi7PQSBPwyFPxKLPwOBOR+fESW5PQeDPw6HPxeROyGhPT2/KTa3PwqBPxiVMwWHNyqrOTy9Hyy3CR61DSGpESOtMwWFDyGtCRytAxatAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAezgACCg4SFggGIAYaFAgMEBQYHCAkJCggLC4MMDQ4PEBGgoaASggkTFBUWERcYGRkaGxwdgh4fICEiIyQlJSYnKCkqgissLS4vMDEmJiUoMikztDQwNTY3ODG8OScc0QArLjo7Jjg4PD0lMiw+3h4vPD8mQEFCQyUsLETe4EVFRjhHaiBJgk8fLSVHlphgIqSJkycboEQR9k3KFCoYqVicUsXKFW8AZogcSVLkopMoUwLwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_light_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1MTi3Lza3KzOzJzGzPTy9Nzu7Nzm7MTe3KTKzJS+xHyytOTy9Nze3NTm7KzO1IS2vHSmrFyepMzm5Oz29Mzi5MTe5LTK1JS2vHyuvHyyrMTa3LTS3JzCzISuvGyipIy2tJzCxLzS3NTa5GSinOTe5OTi5NTW3IyurFyGhISytHSqrGymrOzq7Pz6/NTS1FyalDxmZCxOVEx2fFySnMTO1MTCxGympFSOjERudCRGTDxmbMzGzLS2tMS+xHSipEyCjDRaZFR+jIymrHR2fHx+fGRqbHSerDxqfERidGRiZKSepExGTIyuvDxidDRabERGTCwqLERuhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAezgACCgwABhIeHAgMEBYiEBgcICQEKCwyOAAYNDg8BEAsREhOHFBUNDRYXGAUZGhqHGwQXFg8cHQoeER+HICELIgojAg8kxQaEGyUgvwsjJgYGJyiDKSorLC0iIyMuLy8mMA6CMTIzNDUaHjYO4DA3JgATODk6Mzs8NRgwPTc+P4ITgGyYEETIjh1DiBQxckTcoBpIMgDRkUSJkiVMmjhyIkLDEyg7oiyRggkAkiklUxLyEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_light-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/Ozy9OTi5LzK1JSmtGyKpHSWtHyWtGyOrER6rJSqvKS+xKS6xISivCRylARGlDxyjDRmfCxabCxSZITC3LTW9Lze/KTO/KTO9Fyq5Aw+dISmvHyy3GSmzGy21Mzi7Oz2/Pz+/LzW9GSu7AQybISmxLTS5LzW5NTq7MzOzNTS1Pz2/Lzi7NTq9NzW3MzKzOzm7MTGxLSytOTu9Ly6vNTO1KymrLTS9LTS7FSi7PT2/IyKjJSWlKzO7ESW5OTy9KTK5HyivKTa3LTe3JSanHx6fGRiZPTy/KTK7CR61DSGpDyKrDyGrDRabLSutFROVESOtDyGtCRytAxatAQmTFxaXBwqNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe5gACCg4SFggGIAYaFAgMEBQYHCAkKCwgMDIMNDg4PEBGgoaASggkTFBUWERcYGRgaGxwdgh4fICEXIiMDAyQlGCYngigpKisFLC0uJAMYJcGCEC8wMTIzNDUuA78cwgAoKzY3MwM4OS0DOjs83hArPTk0Nz4/LANAG0HeKC9CMTk+6A1wsWGIPkFEihiBcQRJEiU2CCz5wGRfEydPoESR0mTKFCpVrHgDcKLkFSxZSqocuaily5Z+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_locked_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1NTm5Lza3KzOzJzGzOz29Nzu7MTa3KTKzJS+xHyytOTy9KzO1IS2vHSmrFyepNzu9Mzi5MTe5KTK1Iy2vHyuvISyrNTm7LTS3Iy6xHSmtGymtGyipIy2tJyWnIR+hFSWrHyyrHSipJS+vJzCxOTe5NTS1Hx2fIyurFyGhHSqrJyanKSmpHRudFyalDxmZCxSVEx2fGSanGReZIyKjFxWXGympFSOjCRGTMS+xLSytKymrHRydGRiZGxmbGymrISutEyCjDRaZLS2tJyenLy+vPz+/Hx6fFySnHSerJS2vHyirERyfLy2vKSipISChFROVISuvIyGjJSSlLSutERGRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCgwABhIeHAgMEBYiEBgcCCAEJCguOAAYMAgIBDQoODxCJBgYREhMUFBUWFocXFAgCGAgZBRobHIcdHgoFsRkUHyAhhyIQIyQlFhofJicohCkqFysjJRQsJh8oLS6DLzAxMjPMLCcgNDU2ghA3OOI5MDo7PB89Pj/sEEBBEEJDchApYuSIkRZI2AlKomQJkyZOeOg4ouMJlCiHpCwbONFIESQYESmZQqWKkyk+oljBhMlPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_locked_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSivISevGye3JSitPz+/Pz6/PT2/DyC1PT6/Ozy/KTO9Cx+5AxazARKxAQ+vAQ6pAQmZIyivOTq9Mza7MTa9IzC/Hy+/Fyy/ESu/ByK/JyenJSWlHx6fJTO/HzK/AQmbISizOTe5NTS1JTS/ITK/HSi1JyanNze3Hx2fHRydLS2tERCRGzC/AR6/IR+hKza/FxeXIyGjFS6/ARi9Oz2/Ly2vLSytKymrARS3GSm5KSipLy+vMS+xARKzEye5NTq/HRudESW7HzC/IzG/AQujBx+7ISGhMzGzFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe6gACCg4SFgwECAgOGhQQFBgYHCIyCjgcJCgcLDA0ODxAREYISBxMUFQsLFhcYGRkaogACBQmYChscHR4eHxoggiEFjwYcIiIjHSQlsIImBQcGJygbKSorLC0uvwADjwonIy8wMTIsMzSx3TU2NzgcMioxMSw52zrPNjs8BiM9JyosfMT6YQCIjQ09CozgcSIIiwfbhAwh0o6HQn8Ai8QyAurIkRtIkOB4wYJFhG2DVCQpybIkpZeD/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_locked-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPT29OTm7LzK1JSmtGyKpHSWtHyatGSKrER6rJSqvKzCzHyivCRylARGlDxyjDRmfCxabCxSZITC3LTS9Lze/KTO9Fyq5Aw+dISivHyy3GSmzGy21JTK3JyanIR+hPz6/Pz+/LTW9LzW9GSu7AQybISmxKzO7LTS5Lza5Nza3OTe5NTS1Hx6fLzi7Mzm7HRydLSytGRiZNzu9JSOlFROVFSi7LS2tKSepISGhGReZERCRESW5MTm7Ly6vKSipMS+xKTa3Ly+vGxqbCR61DSGpCRytAxatIyGjKyqrMzKzMTGxKyurAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCg4SFggGIAYaFAgMDBAUGBwgJBwoLC4MMDQ0CDg+goaAQgggREhMUDxUWFxcYGBkaghscHR4fICAhIiMkJSYngigpKisgLC0uLyIXwMIADjAxyCAyMjM0KSQZ0CgxNSDLAzQ2NxYqONAONTkzOiA7Mjw0PSk+6z9AQUIjLkLW7OET5GBIDn7+iIAo0oODEW9HgOjox4KIDhk9kCSBBuDEDiVLmDRxYqPeCY6CZNzowbJlj0UwDfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_mail-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz2/PTy/Ozm7LzK1JSmtHSWtHyWrHyWtHSSrHSOrGyOrJSqvKzCzKS+xKS6xISivCRylCRihDxyjDRmfCxabGymxMTe/Mzm/KTO9GSq5BxOfHyivISy1GSmzGy21JTK3Mzi7Oz29Pz6/Pz+/LzW7LzW9ISmxLTS5Lza5Mzm7Ozy9Fym5BQ+bLzi7NTu9PT2/ESW3PT29KSyxKzK5AwyXOzq7PTq9Ozi7Nza3ISChKTC3DSG1KymrGxubLy2vNzW3Lxe/Myu5IR+hIyqxAwyZOTa5MyO/NTG3HRydCR2zISixKSipNTK1HRudBxWhAxatNTO1FxWXAwqTAwePJSSlHx2fGxmbGRiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCg4SFggGIAYaFAgMEBQYHCAkKCwwMDYMODxAREhOgoaAUgggVFhcVGBkZGhkbGxwdgh4fICEiIyQlJSYnKLKCKSoqKywtA70lGScuL4ISMDAxMTLJvBsoM88AKdYD4AM04DU2MzfQAy0FODk4Ojs6PD0+6N0kP0A8QQVCQ0RFjPg4kq5AjgIFdCBJomQJAib2msjIx8OJDiE7nkCJIsVehwEJkSAR8uTJFCpVblghdKUIFihLsmihQmWRTUN+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_metallic_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHyuvHyuxOzu/OTu9Mze5GymvNzm7Nzm9JzC1GSivFSSrFSOrEyKpER6jDxuhCxCVHyyxNTm7KzO3LTO3KTG1JzG1JTCzJS+1Iy2zIS2zHSqxBw2RPz+/NTi7Mze7Lza5KTK1HSqvOTu/KTG3JS+zGSitPz6/LzW5Iy6zFyevISyxPT2/KzK3FSWrHSuxESGnEyCnDxidCxWZCxKVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQIBwSCwOA4KksSgYEAgFw1IYIBwQBURCsWA0HA+IMCIpTCgVywWT0Wg2HKGgQ0B4PiBKKJ0QxQERHSN1BXkUJCQJcHIdBxIfhYcVCSUmfxEnCI8gKBQTFxUpKn8rLGUgeS0JCSkaLpcsCCidhwkXGSsNfxsEs4ahKS8CMH8vJazBLwsLDV8PfyYxDzIzNBzX2NdT29xLfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_news-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPTy/Ozq7LzK1JSmtGyKpHSWtHyWtGyOrER6rJSqvKzCzKS+xHyivCRylARGlDxyjDRmfCxabCxSZITC3LTS9Lze/KTO/KTK7GSu7Aw+dISmvHyy3GSmzGy21JTK3Mzi7Oz29Pz6/Pz+/LTW9Fyq5AQybISmxLTS5LzW5Lza5Mzm7Ozy9LzW9Lzi7MTm7NTu9Nzu9PT2/Pz2/LTW7LTa/Ly6vMS+xLy2vLSytFSi7PTy9GRiZKSepGxqbPTu9KzO7ESW5NTO1KTO9KTa3NTS1KTK5CR61DSGpLS2tOTi5ESOtDyGtCRytAxatKymrISChIR+hHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe6gACCg4SFggGIAYaFAgMDBAUGBwgJCgcLC4MMDQ4CDxCgoaARgggSExQVEBYXGBgZGhscgh0eHyAhIiMkJCUmFycogikqKywtLrwlJC8vG8IADzAxMjM0NbwkNjfBwy04OTo4ODu8Fxc80A8yPTk+P0AEQSRCQkPqMT0l+yVEQTUaitwT9MBIEH41chwZgcRDEmgplNRYcoQAE4pNnDyBAg0Ain8Wj0TBgaJkR0FSpkihkvLHopcv/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_open_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAw+lAw6jGSS3FyO3GyW5GyW1BRClFSK1FyS3EyK1AQ2nAxCnGyW3ESG5CR25BRu3Bxm3BRezGyS1Iyq5Mza9Mze9GSa5DRy3BRi1GyS5Nzi/NTe9LzW7LTS9JzO9JTG9IS+9HS2/FSu/ESi/CyW/AxOvKS+5Pz+/Pz6/PT6/Ozy/NTq/MTe/LTW/KzS/Hye3OTq/PT2/Nzu/KTO/EyW9BRSxKS69PTy/Nzy/Mzm/Lza/KTS/Bxi3Ozu/NTm/JTO/HS6/OTy/Mzi/Lze/DyC5MTS/LTC9JSu7ISi7FyO5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAevgACCg4SFgwECiIaFAgMEBQYHi4ICBQQECAkKiZwLgwwNlgQODg8PEBESAYMCBhMUFRYVFxgQGRkCnxoXGxwdHh8gISIjIyQlJgINJygpKisrLC0uLx8iEAwMMDEozTIrM9MvNDU2AAI33TIyODk6Ozw0IT0MAAwb3SkyPiw/8EBBzAEIoE5IjB9DOBBxAaRIrnMoYnAwcuQGkiRKlGAwcYiBAI8gP4qcRLLkJD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/PTy/OTm7LzK1JSmtGSKpHyWtER2pER2rKzCzHymtCxmfDRmfARGlHSWtDxyjCxabDx2lEyCpGSOtFyKrFSKtAw+dISivGSOrGSKrGSSrFSKrITC3LTa/Lze/JzK9GSu7ISmxFyGpLzW5Lzi7MTi7OTu/PT6/Pz+/LTS7KTO/EySxHyivFR6nFR+nJy6zNTq7OTu9Mzi9Lza/Hy27DRWfMTq9Oz29Fyu7Ex2lHyetNTu9Ozy/JTC7DSCvKTK5PT2/MTa9GSq5CROfESW5Cx2nDyGrDyKrDyKtESOtESKtCx6tBRitAQ+hAQybAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe6gACCg4SFggGIAYaFAgMEBQYHCAkJCguXgwcMDAINDg8OoaIQghESDhMOFBUIFggXFRgZghoICBu2HB0eHyAhISIiIyQVJRsmJygpKioDKwQsLS4vMDEyJzM0BAPcKzU2NzgkFDAnOTQ6OtzcICw7AAc8PTM+6D/rNCxAQQAkPEIFaKCjMYTACiIsihgB0MADthk6UhCgwU2EkCOCSCBJkkQJxyVMmiRx8gTKoCgoU6pEuaily5cA/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_orange_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPzGhPzipPzSlPy+dPyyXPz+3Pz6zPzuvPzWnPzOhPy6ZPyqVPyWJPz+9Pz+5Pz+1PzyvPzmpPzSjPzCdPyyVPyiPPySFPyGBPzqtPz6xPzqrPzanPzKfPyqRPyeHPyCLPy2bPzutPzytPzinPzWhPzGZPyuTPxqDPyOLPyeTPyuZPy+bPzejPyOBPSSBPx6HPxeBPxuFPyeNORuBNx6BPR+BNw+BPyGNPx6FPzOfNRqBOxWBJwqBHweBMQ6BPxyBPyWHPy2VLxSBLxeBKQ6BHQeBKxKBKRGBKRKBNRWBGwaBLxWBJQ6BPRiBPyGHPyyTHwyBPyyPHQmBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeigACCgwABhIeHAgMEBYiEBgcICQoLDA2ODg8QERITFBUWFxiHGQYGGhscHQseHxaHICEcIiMkJSYnHx+HKCkqKywlLSYXLi+HMDEyKgUzMxg0NTaEIDc4OTALOjY73TuEPD0+P0BBQjRD6USDKCg8RT5GRTQ7R0hISYMxNik2Sj1LljBpQhCRkydQPgyxFyWKI0EzTEg5UmTKQ0IKL2ok5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_orange_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPzKJPzCJPzyxPzuxPzutPzmpPy+DPzqtPzqrPzKTPy2BOSiBNyaBNSSBMyKBKRqBFw+BPzehPzWbPzWZPzOXPzOVPy6JPy+NPy2LPSqFGw6BPzGJPz+/PzinPzWdPzGXPzCVPy6TPSeFGwyBPzqvPzmrPzajPzOdPzGZPS6VPSuRPSWDPz+9PzipPzalPzOfPy+VPSePOSCBHQuBPzCLPz69PzWlPzOhPzGdPS6ZPSuVOyeNOSOLNx2BHQqBPy+JPz27PzCdOyaPOSCLMxmBHQmBPzq1PzWnPTGfPS+dOyiTOR6DMxeBHQiBPzarOyybOyqZOSeVOSSROR2HNxuFLROBHwiBPSqPPSmPOyWLNRqBLxWBKxGBKQ+BOyOBJxWBJRKBIQ6BHwmBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe+gACCg4SFgwEBAgKGhQEDBAUGB4yCAgMICQYGCgsMDQ4PEBGCAQkSExQVFgoKFxgZGhuCHB0DkR4SHyAgISIjJJUdBCUmHicoKSoiKyzAAAItCAguLzApMSsrMjM0gjU2Ji43ODk6Ozw8PT4/gkBBLjg4QuZDMkRERUaCF0dISUo7diwZco9JEyeCNDwRogRKFClT7lGpYuVKQixZeGiZMWNLEy5WunixCOBLETBhxPwYc8VJy5YIKcmcachPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_orange-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNSqhNSujPzu7Ozi3NzCtLyahLyOTMyiXMyeRNSWPNSOHNyWFNSqfNSynMyqlMySZLRWBLRaBKxWBJRmBMyWVKxSFJxKFIRCDHw+FPyiXPzqtPzqvPzelPzWlPy6THxWBNyuXPSuXPymNPyaPPzWtPzq7Pz2/Pz6/PzapPzenGxKBNyubPTOtPTazPzm3PTy9Pzy9Pz29PzepPy+TPzWxPzi3Pzm5PTq5PzanPyuPPTSzPy2NPzSzPza1Pze3PTm5PT29PzSjPzWjPyuJPTGvPyyHPSahPSunPTCtPzOhPSuBGxGBNReBNxuBORyBOR2DOyCBNR+BLyGBGRKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFggGIAYaFAgMDBAUGBwgICQoLDIMNDg4PEBEREqCgExSCFRYXGBkRGhscHB0eHyCCISIjJBolJicoKCkqHyuCLC0uLzADMTK/Myk0xAAhNTY3OMu+KDkzOtIhO9YmMDAxKCcqKjzfPT4/QDg4QTIyQkNE30XtPz8m4zFDhhj5dgRJkiI7dvB7oeTDEia2mjh5AoXikygYpUyBKGgFFY8rmDD5SHKRyZMoAfgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_prefs_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSirIyivHyezPz+/PT6/Ozy9ESCzPTy/MTa7DR+1BRevARGtAQ2nAQqbNTi7JyepFxOZGx2jISCnGye1ESu/DSm/Cya/AQqfPz6/HxyfGxedIyGlJSOnJyWnIR+jIS25HzK/BSK/MTCxKSepGxWbFRSXLSyvMTKzHyOpHzG/HyixISOnISSnFxaZGzG/AR+/HymzGxmbJSitNze5GxebDxadFS+/ARe7PT2/KyqtLy+xMzS1Nzi5GxufFSm5DSq/ARS3Gyi3Oz2/IyapNTa3GxidGxqfDxOZAROzFSa1NTq/Mze9HR2hGRabExujEyWzESe5CSW/AQ6tEye5IzC9HS69GSy9Eyi9DSa/CR+9BRu7CRenBQ6hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgACCg4SFgwECAwOGhQIEBQUGB4yCAZAImAkKCwydDQ6CAggGDwkQERITFBUWFxihGZEaGxwdHh8gISKgAI4FIxskJSYnKCkqu4IrBAglHhEsLSgnLi8wvDGPMh4mMyg0NTY3OLwUBDkfOjs8PTQ+P0BBvEIEQ0QcRSdGR0hAFkm8lBRYwoRIEydPoEQBImUKLypVrFy5giWLli04kkzBwItLFwcgQ4oESamkSUZ+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_prefs-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPT29OTm7LzK1JSmtGSKrHyWtHSWtGyKpER6rJSqvKzCzLS2vHymtCRylCxylARGlDxyjDRqhCxabCxSZITC3LTa/Lze/KTO/KTK7GSu7Aw+dISmvISy1GSmzGy21KSyvEQ2RJySnGxmbNze3LTW7AQybISmxLTS7LzW5Lza5FRKVJSKnKSerHx2fLzW9LzW7HyivMTm5Lzi7FxSZExGVJyapJyipMzS1ISOnFyq5Mzm7Ozu9KyirKyutLy+xGRabFSi7NTq7ISCjKSWpOTm5ISetKzO7ESW5MTm7Hx+hKyytNTW3KTa3LTe3LTKzMzOzLy6vGRaZHyy3CR61DSGpDyKrDyGtDyGrERmfESOtCRytAxatAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCg4SFggGIAYaFAgMDBAUGBwgJCgcLC4MMDQEODxAQEaCjEoIJExQVFhAXGBkZGhscHYIeHyAhFyIjJCUmJxgcKIIpKissLS0kLi8wMTLCgjM0NQ02Djc4OTo7GDzDACk9Pjc/NwNAOkFCKkPgM0RERUZFDg5HNkhJSuApS0RMgDRx4sOHiw0b+El7AiUKEylTqJSgsqGKlX5XsGTRskUIBS4au3gBBwCFyZMoTS5aybIlAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_print2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEgASAIYAAPwCBJy2xKS2xPT29OTm7MzGzJSmtGSKrISWpHyWtGyOrER6rKzCzKS6xHyivCRylARGlHSWtDxyhDRmfCxabCxSZITC5LzW9Lze/Lza/KTO/KTO9Fyq5Aw+dISivISyzGymzFyavMzOzMTCxLy6vKy2vLTS5GSu5AQ2bISmxLzS5KzK3LzS3Pz+/LSutLzG1KzG3GSu7AQybHyatPz2/Ozu7OTi5NzW3KSqtJzC5NTO1GzKbNT+zIyGhISGjJSerFSi5KSepIyKjISChHyGfFxeXGxyfJSapESW5OTe5JSSlGRiZHx6fJyWnHRydCR61OTatOzmzPTq3GR+lAxatAQuXExOVDQ+VMTGxAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAASABIAAAfFgACCg4SFhgGIAYaLAgMDBAUGBwgJCgcLC4UGDA0NDg+goaAQhBESExQVDxYXGBkaGxwdhB4fICEiBSMkJRcmFycohCkqKywtyC0uLzAbMTKEMzSOjjUENjc4ORzCgx4DNjY6ujs8PT4/QNCDDje7QUFCQ0RFRkdI3YIOBEk6JC4ulAxZwuTeOkEeariA10QIEydLnCB4kg+AB0hQokiREqVHvSlUqhTSlQwZEStXqhwkNGIEFpcjgmTJsqimzZs4cwqyEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_purple_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLSy3MTG5Ly65Kyq1KSSzOzm/Nze9NTO7MS+5Lyy5KSe1JySzIx+xPz2/Ozu9MzG7Ly23Kym3JR+zIRuvHRevNza9MzO7LSq3KSa1JSKzIx2zHx+xKyi1JyKzIRqxHRitJSGxJSSzLSi3HxixHRSxHROxGRirHRytGRGvGQ+tIx+vFxanHxyvKSezFw+rGQypGQ6rFRWrEQ6hDQubFRKjHRqrIx2xGRGtFw6nFwynGxqvFxOpEQmfDQiZGRCrFQyjFQujFQylGRatHRutFxKpEQufEwqhGRarHx6xFxClEw2jJyCxIxyvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAejgACCgwABhIeHAgMEBYiEBgcICQoLDA2ODg8GCBAREgwTFBWHCAYGFhcJGBkaGxOHHAsJCJIKHR4UH4cgISIZEgMKIyQlJrAnKAwZExMVKSoqhCssHC0ULhgpLyowMYQyMzQ1NjcMODk66YMgOzwzPT4zKT9AQUJBg0NEK0RFRj4+dBwZiAgJhQJJlOhY0qOHI0FMOkwAcsTHQ0JNdFzcSMhPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_purple_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLQi/LQm/PTO/PTK/Oy6/OSq/KwK/OSy/Mxe/KQC/JQC7JQC5IwC3GQCnEQCZLQq/Oyy/NSC/NR2/Mxq/MRa/MRS/MRK/Lw+/LQ2/LQW/AwCDPz+/OSa/NyK/NR6/Mxi/KwW/BQCFOzG/Nyi/NyS/MRW/AwCFNym/NRy/MRO/Pz2/LxC/Pzy/Nya/NyO/Mxy/Mxu/MRe/Lw2/AQCBPTm/NR+/Kwe/LxG/LQu/LQe/IQCzLxO/IwC1HwCvHQCrGwCrFQChEQCbDQCTCQCNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFgwECiIaFAgMEBQYHi4IBAwUIBggJCgsMDQ0OD4IQERITFBUVFhcYGRkaG4ICHJYGHR4fFCAJFiEishwEIxEkJRIUCSAmISfABREoHRIpIKkqCs0AECsRtsbUJiosCrEAAS0RLi8SMDEyFiwzCzSjNQbGNikUqxgQ84I3RniQQJAajhk5dOygB0AHDgs8WAQ4wIlBDx8/GCpoAMRBECFDiJygQZLkpJMoF/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_purple-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBKSaxKSavKyexJySvPTy9OTi7Ly61JSOrHxmpIx2tIRqrHxirGxCrLSuzKSixIR+tDwilDQijEQClIRutDwyfDQqbDQqZJR+3NS2/Ny6/NS6/MSi/Lye9JRe7DQKdJyCvIRmzIRu1JyS3NTG7Ozq9Pz6/My29My27Ixi5CwCZJyCxLy23MSy5Pz2/CwCbJR+vMS67MS+7NTO9OTe9MSy7Myy9IRW5DQCbMSq7IRO5MzK7PTy/HxC5MTC5NTS7Nze9Lym7Lyi7Hw+5KSi3LS23MzO7NzW9OTi9LSi5Jx63Gwi1JSCzEQypEw2rFQ6rFw2tFQ+rFxCtFQitFQKtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFggECAwSGhQMFBQYHCAkKCgsMDQ2DBA4DDxAREqERoRITghQVFRYXEhgZGhscHR4fgiAYISIjJCUmvycoKSqCKywtLb0FLr8ZKB4vgjAxMjM0jy7MNTY3OMUkNDQlJcvZGTk60QAgO9biBTzLHDk9xAArPj9A4uPwQUJD1IEgUsSHkR9HaBhAkkTJEnVMmjhx8gRKFCkYoUyhYg/ACxUfQ77AAbIjo5MoT/oJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_purple_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBKSaxOzq9OTm7OTi5Ly2zJSOrHRipIxytIR2tGQ2rJyOvKyqxKSixKSevDwqfDQqdDwCjDwyjDQmbFRCnGxSpGxWrGxSrGxKrDQCfJSCvHRapHRerHRarIR23NSy/NS2/Lya9LSa7IxW7Lyu5Ly+7Nze9Ozy9PT2/Pz+/OTm9MSq7JR6vGROnGRGnKSSzLy27MzK7NTG9My27Jxu7FxGnPTy9Pz6/PT29HxO7FxGlNTS7OTe9KyK7KSi1MzO7NTa7OTi7Lyq7FxGpLzC5Nze7HQy5EQmnEQurEwyrEw2tFQytEwetEwCvCwCZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAezgACCg4SFggGIAYaFAQIDBAUGBwgJCpYKgwsMDQ4JD5+gEA8RggcSEBMQEhQVFhcVGBgZghobGwccHAcdGx4fHyAhIiMaFRUHJCQlJicnKCkqKyEALC0uLzAxJgLNzzIzNNQ1NTAl2tw2NzgrKznUOgkxOyYq3Cc3PCs9giwUPj9AVARBd2OGkBH8hhD5saPIQHQiRBjhdwRJkiRKMC5RsIRJk1mCnIgcSVLkopMoUwLwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_recycle-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/Ozq9LzK1JSmtGyKpHSWtHyatGSKrER6rJSqvKzCzKS+xHymtCRylARGlDxyjDRmfCxabCxSZITC3LTa/Lza9KTO/KTO9Fyq5Aw+dISivHyy3GSmzGy21JTK3Mzi7Ozy9Pz+/LTS9GSu7AQybISmxLTS5LzW7LzW5Mzm7AQyZLzi7MTm7ISilISijIymlISejMTSzNTm7NTq9FSWZHTChGy+fGSybFSi7HSefKyutFSCZITGjLTOvPTy/ESW5MTm5FyibGymfGyefGSmdJzSpIzGlMzS1KzO7KTK7HyivKTa3LzexHyajGSKdIyWnMTS1KTK5CR61DSCpER+XDxmTCxiXDRyXDRqjDyGtCRytAxatEyOVGy+dGy6fAQmTAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe9gACCg4SFggGIAYaFAgMEBAUGBwgJBwoLC4MMDQ4CDxCgoaARgggSExQVEBYXFxgZGhscgh0eHyAhIiMDAyQlGCYngigpKissu70DGComLYIJLi8wMTIzNLwlFxvCACg1Njc4OTozBAMlKTvP3jU1Nzw9Pj9AQSUaQt0oQzBERUZHkCRRsoSJEHZNnMx7AiUKDilTqHioos+KlStYsmjBsYULly5e2AE40aLFFzBgwoghSXIRgDEwXcpc5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_red_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/PyWhPy6nPymlPyCbPxuXPzq1PzizPzOtPyynPyehPx+ZPxeRPxGLPz69Pzy5PzWvPzCpPyijPyGdPxGNPw+JOwiBPzKtPzu3PzKrPyulPyWfPxCHPxOPPwqLPzStPyKZPxmTPQCBPw+PPxWTPx+bPyyjPySbPQuBPwqBPwCBPwWFPxyXPxWPPwmBOQWBNwmBNwCHPwuLPwiFMwWBMwaBMwiBOwCDJwCHIwCBLwCFPx2VLQOBPwOBPwSBNwCBKwCFHwCBKQCDKQGBKQOBPw2LGQCDJQCBPxuTNQGBKwGBIQCBPxKNPxmPGwCBLwOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAejgACCgwABhIeHAgMEBYiEBgcICQoLDA2ODg8GEBESEwUUFRaHFxgYBxkaG5UcHYceCwkIHwIKICEcHIciIyQFJRImJygpKK8qKwwsLQ0uLzCjgx4xMjMzCxsWLzQ1NoQ3ODk6IhU7LzzoPIM9Pj9AQUFCLy9D9USDIjNFMz85RkY8jhzJgUgECiQckigZsiSII0FMQDQZcsTJQ0IcnlzcSMhPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_red_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/PwiJPwmLPzO1PzKzPy6vPyqrPwKDPzOzPyurPxaXPwCBOwCBOQCBNwCBNQCBKwCBGQCBPwqLPyytPyGjPx2dPxiZPxeXPxSVPxCRPw+PPw2NPwWHAQCBPz+/Py+xPyepPyOjPx6fPxqbBQCBPyipPyOlPx+fPwmJPy2tPympPyanPx2fPxmZPxOTAwCBPz2/PyChPxudPxydPzm5PyKjPxKTPweJPzGxPwuNPweHMwCBPw+RLwCBJwCBIQCBGwCBEwCBDQCBBwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFgwECiIaFAgMEBQYHi4IBCAUJBgkKCwwNDg8QEYISExQVFhcKGBkaGxscHZQeBB8GICEiIxcWGBwko7MfEyUmJyMWvL6CKB4FKSorFCwtCgouBy+CAjATBismMTK8GBoLvwAB3N8xMzOqGRsMsQASNAY1FCIzIwo2GhLyBN3AAa4GuwvwcujYMU9HBgw2eAQ4wKnBgx4Q5h1wAMHHDyBBhAzpQJLkpJMoF/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_red-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/NSahPTu9PTq7Oze3Ny2tLyKhLxuTMx6ZMyKXNRyPNRiHNSWfNSmnMyalKwqBJRCBMxyVKwqFJwmFHwiFPx2XPzWtPzWvPzClPy2jPyKTHw2BNySZPSKXPxyNPxmPPTCvPzm7Pz29Pz6/Pz2/PzCpGwuBNyObPS+tPTO1Pza3Pzq7Pzu7Pzy9PzGpPzGxPzi5PzCnPTa3PTy9Px+NPzGzPza5Py6lPx2JGQyBPS6vPzK1PzW3Px6HNyOXPSCjPSanPSutPTGzPyuhPySXPRuBNQqBOQ6BOQ+DOQ2BOxKBOxGDNRKBLxWBGwyBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCg4SFggGIAYaFAQIDBAUGBwgJCgoLC4MMDQ4OCA+goaAQghESExQUDxUWFxYYGRobghwdHh8VICEiIyQlJRomgicoKSorLC0kIyMuwMIAHC8qMCEDLCTLMS4e0BwgKjIDAzMzIiQxMTTeNSk2NiEhAiIiGTc4ObQ6Ozw21eQDMmToAc3HDyBBdAgR0k/GECJFKNAyYuQIkiQXlSxRwqRJPkEmnJjIMdKESZLQFqlcudJPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_sound_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1NTm5Lza3KzOzJzGzPz2/Nzu7MTa3KTKzJS+xHyytOz29KzO1HyuvFyepNzu9Mzi5MTe5KTK1JzGxJS2vByGNDSORISyrNTm7LzW3Iy6xIyqlFxyXGR2dGyipIy2tHzqjGR+ZIyKjHx6fHyyrGSinHSipJS+vBzKPHR2dJSOlIyGjIyurFyGhISytHSqrHyirBzaPCymRKyqrFyalDxmZCxOVERyfFTaZBzONHzGhNza3MTCxJSSlGympFSOjERudCRGTCxKVBwmJBxiJFSqZOTi5JSWlEyCjDRaZBw+JBxuLDyWTPz6/JyanFySnHSerDxqfBwyJFySZISChIyuvJzCxDR2RLzCvGxubDRGPISSjLS2tGRiZExWTFxiXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfBgACCgwABhIeHAgMEBYiEBgcCCAEJCguOAAyRAgENCg4OD4kMDBAREhMUFQ4WF4QYEwMCGQMaExsWHB0egx8gCgUTGrYWISIjJIMlJicoKBusISkqKyyCLS4vMDEUE8UyMyo01gA1Njc4DzEWOTo6Ozw9PgAPP0BBQkM2REUWFkYrjiCh96HEgyRKhAhZUoRJEx5OngyCEqNCFBxSlEwpQoWHgSqHrFxxkHEhliw8tDiKImXQFi5dvGA69AUMAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_sound_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSitIyivHyezPz+/PT2/Pz6/PTy/ESCzMze9DR+1BRevARGtAQ2nAQqbJSivOTq9NTi7LzS7ByKNIS+/GS2/FSy/DSm/Cya/AQqfISevIyqjExeTGxqbKTS/JTO/HzK/BSK/IyixHzqjFxyZHx2fISChJTS/HzG/HyixHzmjBzONGRmZHx+fGReZITK/GzG/AR+/HymzCTeRCSmPJSSlKymrFS+/ARe7Gye1EzWZHzKhMTGxESy/ARS3Gyi3BwmHBxmLFSqZIyGjNze3Ozq7AROzFSa1Bw+JBx6LDyaVMzGzCSW/AQ6tEye5IzC9FSSZNTW1OTi5CRenBQ6hDR+RExCRDQ+NIyilJSalDw6PCw2LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe7gACCg4SFgwECAwOGhQIEBQYHCIyCAQYFmAcJCgsMng0Ogg8FEBEJEhMTFBUWFxgZghoEBgYQExscHR4fICGhACKzBhMjJCUlJicovoIpjxMqKywmLS4vMDG/MgTQMzQdNTYuKDc4vzkTOisrOzw2PC43PT6/P0BBqUJDREUdPRdGfh0pgCRIEiVLaJG4wKTJLydPKtyDEgWClA5GmmT4NYWKAwdIqvCIUsPKx4+MrmDJooVSoStbKPkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_sound-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/PTy/OTi5LzK1JSmtGyKpHSWtHyatGSKrER6rJSqvKzCzKS+xKS6xHymtCRylARGlDxyjDRmfCxabCxSZITC3LTS9Lze/KTO9Fyq5Aw+dISivHyy3GSmzGy21JTK3Mzi7ESaXFSaZPz+/LTW9LzW9GSu7AQybISmxLTS5LzW7Mzm7ESWVKSurGx2bIyGjHyivLzi7NTu9KzWtHSGfJyWnIyOjKzO7Nzu9EyaXKzatFy+dJyanHx+fFSi7FSuZIR+hKymrLS2tESW5ESOVISqjKSepKTK7KTa3DxmRESCVGyidNTS1CR61DSGpERWRHyehNza3Ozu7Ozm7DyGtCRytAxatExeTFySbGRiZFRiXKyqrFRaVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfBgACCg4SFggGIAYaFAgMEBQYHCAkKCAsMDIMNDg8QERKgoaATggkUFRYXEhgZGhobGxwdgh4fICEiIyQlAyYnKCkqgissLC0uLzAxMgMawMIAMzQ0NS82Nzg5ODonHNArIzs8PT4yPz9AGRlB0B41PDY+QkNERUM6OkbfL0cvJEhJChCQoUOJPkEzljBpcsTJkwEDCIaA8i1KFClNplCpYmXIFSxZoAFQQVLLlidUiHAhKbJQFxheuCwy1OXLTD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_src_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1MTi3Lza3KzOzJzGzOz29Nzu7NTm5MTa3JS+xHyytMzi5KzO1ISyvHyqtFyepOTy9Nzu9MTe5Iy2vISyrKTK1NTm7LTS3Iy6xGymtGyipIy2tGSitFSWrFSWpHyyrFyalHyirJS+vEyKnIyurFyGhISytHSqrGymrJzCxER+jEx+lER6jDxmZCxOVEx2fGSanDxufDxqhDxmfGympFSOjERudCRGTCxKVDxmbFSKnDRidEyCjCxSZDRaZFySnJS2vERyfIyuvKTCxHyuvHSerDxuhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAehgACCgwABhIeHAgMEBYiEBgcICQkFCguOAAYGCAwBDQoODxCHCAYREggTDQUUDw6HFRYJCBcJGAUZDxqHGxwKBQW2DR0eH4cgISIjBQ4OHiTQhCUmJygpKg0fKyssLYQhLi8wMQ8ZJDIzMjSDEDU2Nzg5OjssNDz37CkgED0+ODgzfvjwgQiIiCAihNjz8QITgCFEitDw53CQkSMVMwryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_src-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPT29OTm7LzK1JSmtGSKrHyWtHSWtGyKpER6rJSqvKzCzISivCRylCxylARGlDxyjDRmfCxabCxSZNTe9LTa/Lze/KTO/LTS7GSu7Aw+dHyivISy1GSmzGy21JTK3Mzi7Pz6/Pz+/LTW9LTS9Fyq5AQybISmxLTS5ARONNTq3OTy9MTS7Lzi7MTm7Nzu9ASGPMzm7Ozy9MTm5LzazFSi7Mzq7OTu9KzO7ESW5Hx6fKSepIR+hFROVKTK7KTa3GRiZJSWlMTCxJSOlCwqLKTK5Hyy3CR61DSGpDyGtHR2dKSipESOtCRytAxatAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCg4SFggGIAYaFAgMDBAUGBwgJCgcLC4MMDQ0CDg8PEKCjEYIJEhMUFQ8WFxgYGRobHIIdHh8gISIaIyMkJSYnKIIpGiorLC0uAyQjFy4bwwAOLzAxKwMyvSMaF8LEMzExLTQDNTYjJiY30g44BDk5NOUDIzo6O9IpMDg8PT0+fjjSACSfIAdBhAwhQaSIECMtjiBJ0k7JEiZNevD4YcTJkidQpAFAQbKkSZKLUqpcCcBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_tar_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1NTm5Lza3KzOzJzGzOz29Nzu7MTa3KTKzJS+xHyytOTy9KzO1IS2vHSmrFyepNzu9Mzi5MTe5LTS3JzCxIy2vHyuvIyuvHyyrNTm7IyKjGRiZDw+PGyipIyurJSOlJyenPz+/HSipJS+vFSWpLS2tFyGhGSirEyClER6jFyalDxmZCxSVERyfFySnJS6xFSKnDxufDxqhGympFSOjERudCxOVCxKVDxmfDRidDRWbGymrISutEyCjCxSZCRGTHSerJS2vHyirKTCxDxuhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAejgACCgwABhIeHAgMEBYiEBgcCCAEJCguOAAYMAgIBDQoODxCJBgYREhMUFRYXGIcZBAgCGggUGxy4HYQeHwoVBBQUICEit4QZECMkqxglGyYchB8nGRkoFQ0lKSobKoQrLC0uLxcwMTLoM4MQNDU2NzgsMSk5Ojk76zw9ED4/QEAzdvzYgOhFECFDXNgbCM0RBiIXcgwkZsxRkCIAcOXCxNFPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_tar_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSitIyivHyezPT6/Pz6/Ozy9ESCzPTy/Mze9DR+1BRevARGtAQ2nAQqbJSivLzS7KzO9IzC9IS+/GS2/FSy/DSm/Cya/AQqfISevIyKjGRiZDw+PMzi/KTS/JTO/HzK/BSK/IyixPz+/JSOlJyenKzW/JTS/HzG/HyixLS2tLzW/JzS/IzS/ITK/GzG/AR+/HymzNTq/LTa/JzO/FS+/ARe7Gye1PT2/OTq9Lza/IzK/ESy/ARS3Gyi3Oz2/Mzm/KTW/IzO/Fy6/Ey6/AROzFSa1MTi/Ey2/ByO/AQ6tEye5HS69Ly6vDSa/CR+9BRu7ARSzCRenBQ6hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCg4SFgwECAwOGhQIEBQUGB4yCAQSXBggJCgsMng0Ogg8IBgkJEBESExQVFhcYghkFGhu1HB0RHh8gIaEAIiMkJbMbCSYfJyi9gikjCBoqGx0rLC0uLzC+MSMEBiQyHTM0LiA1Nr43Izg54DomOyg1PD2+PiM/MkAJM0FCQ0QWivgyUgCchiMzWtRAYiGJEl9LJDDR0GSDkydQbERRgsGXlCkahtFyQLKkL0G1bFFaSclPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_tar-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPT6/PTy/OTm7LzK1JSmtGyKpHSWtHyWtGyOrER6rJSqvKzCzKS6xISivCRylARGlDxyjDRmfCxabCxSZITC3LTS9Lze/KTO9Fyq5Aw+dHyy3GSmzGy21Mzi7Oz29Pz6/Pz+/LzW9GSu7AQybISmxLTS5LzW5IyKjGRiZERCRLzi7MTm7JyanLTS7LTW9Mzm7Nzu9OTu9Ly6vOzy9FSi7NTq7KzO7ESW5PT2/PT29HyivKTa3LTe3KTK5CR61DSGpDyKrDyGrJSOlDyGtESOtCRytAxatAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgACCg4SFggGIAYaFAgMEBQYHCAkKCwgMDIMNDg8PEBGgoaASggkTFBUWERcYGRkaGhscghAdHh8XICEiIiMkGCUmgicoKSoryCwjIhkkwbQtLiovI8e8MDEbwgAnMjM0KjUrNrwYGDfbEDg4NDYqNgMDIjk5OtsnLus2+zs8PPT2BPXw8SODDBXs2gHpEOSekCFEiogzcuSIESRJtgEwYWJatRUcQxpClmyRyZN+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_tux_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1MTi3Lza3KzOzJzGzOz29Nzu7NTm5MTa3JS+xHyytMzi5KzO1ISyvHyqtFyepOTy9Nzu9MTe5Iy2vISyrKTK1NTm7LTS3Iy6xGymtGyipIy2tGSitFSWrFSWpHyyrFyalHyirJS+vEyKnIyurFyGhISytHSqrGymrJzCxER+jEx+lER6jDxmZCxOVEx2fGSanDxufDxqhDxmfGympFSOjERudCRGTCxKVDxmbFSKnDRidEyCjCxSZDRaZFySnJS2vERyfIyuvKTCxHyuvHSerDxuhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAehgACCgwABhIeHAgMEBYiEBgcICQkFCguOAAYGCAwBDQoODxCHCAYREggTDQUUDw6HFRYJCBcJGAUZDxqHGxwKBQW2DR0eH4cgISIjBQ4OHiTQhCUmJygpKg0fKyssLYQhLi8wMQ8ZJDIzMjSDEDU2Nzg5OjssNDz37CkgED0+ODgzfvjwgQiIiCAihNjz8QITgCFEitDw53CQkSMVMwryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_txt_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1NTm5Lza3KzOzJzGzOz29Ozq7MTa3KTKzJS+xHyytOTy9KzO1IS2vHSmrFyepNzu9Mzi5MTe5KTK1Iy2vHyuvIyuvISyrNTm7LTS3Iy6xGymtGyipHyyrGSitFyarFSWrGSinHSipJzCxISyvEyKnIyurFyGhISytHSqrLy2vJyanJyenER6jFyalDxmZCxOVEx2fGSanHyqtJS6xFSKnKSipPz+/JSSlGympFSOjERudCRGTCxKVEyClFxWXGymrISutEyCjDRaZDxqfFRWVFySnHSerJS2vDxidFxaXPTy9ERuhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAetgACCgwABhIeHAgMEBYiEBgcCCAEJCguOAAYMAgIBDQoODxCJBgYREhMUFBUWF4cYFAgCGQgaBRscHIcdHgoFsRoUHyAhhx4iIxskDiUgJs+EJygpKg8kFCErLC0uhC8wMTIzNDU2Nzg4OYMQOjs8PT4wNj/nOAdAghBBQhBDRD09irRAd8AIoSNIkowoUkTJQHtLEF0gYUEJkRxMDhTEhKQJgBxGgBiJiAmTn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_txt_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBKSepIyivHyezPz+/Pz6/Ozy9ESCzJSitPTy9PT6/Mze9DR+1BRevARGtAQ2nAQqbJSivOTq9NTi7LzS7KzO9IzC9IS+/GS2/FSy/DSm/Cya/AQqfISevOzu/Nzq/Mzi/KTS/JTO/HzK/BSK/IyixMTe/KzW/JTS/HzG/HyixOzy/OTu/Mzm/LzW/JzS/IzS/ITK/GzG/AR+/HymzLy2vJyenNTq9LTa/JzO/FS+/ARe7Gye1KSmpJSSlLza/IzK/ESy/ARS3Gyi3Ozq7FxaXKTW/IzO/GS+/Ey2/AROzFSa1JyanFRWVByO/AQ6tEye5FxWXCR+9BRu7ARSzARCrCRenBQ6hOzu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe1gACCg4SFgwECAwOGhQIEBQUGB4yCCAUJCgYJCwwNDp8PEIIRChITCxQVFhcYGRobHIIdBQqZHh8gFSEiIySiACWPl7cmJyIoKb6CKgSYKywtLi8wMTIzvzQENTYBNyA4OTEjOju/PAQ9jz4/J0ApOkFCv0PoBARERUZHSEkaSr9LCjCxZ6AJDCRBNDh58guKBRv2iESRMmUHlSocflm54iMBESxNIIgc+UuQjyZRUFJaSclPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_txt-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/PTu9OTm7LzK1JSmtGyKpHSWtHyWtGyOrER6rJSqvKzCzKS+xKS6xISivCRylARGlDxyjDRmfCxabCxSZITC3LTS9Lze/KTO9Fyq5Aw+dHyy3GSmzGy21Mzi7Oz29Pz+/LzW9GSu7AQybISmxLTS5LzW5Lza5PT29Lzi7LSytJyenJyanLTS7LTW9KyqrJSSlFSi7Mzq7Ozq7FRWVKzO7ESW5KSepFxWXHyivKTa3JyWnOTu9KTK5CR61DSGpESOtDyGtCRytAxatAQ2bIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAesgACCg4SFggGIAYaFAgMEBQYHCAkKCwgMDIMNDg8QERKgoaATggkUFRYXEhgZGhobGxwdghEeHyAYISIDAyMkGSUmgicoKSohK7wjAxokwbQsLS4vL7y8MDEcwgAnITIj4DPJAxkZNNsRNS7gIzY3vDg4OdsnLDrsBDsEA/Hzgjw9fODb8eMHEA9B6AnxQaAhgRtDhhApYmQbgCNIdtzYeMOER4+LQoocCcBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_video_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLTW1MTe3Lza3KzOzJzGzOz29OTi5Nzq7MTe5KTKzJS+xFRSVFxaXOTy9NTm7Mzi5LTS3JS+vMTCxNTm5Nzu9FxWXLSutHx6fISyrMTa3GyipIy2tKTK1Ozm7HyyrGSinHSipIS2vISyvFyepKyqrIyurFyGhISytHSqrJzCxFSWpEyCjFyalDxmZCxOVERyfISuvFSKnDxufGympFSOjCRGTCxKVEyClDxmfCxSZERuhDRaZJS2vHyirDRabKyurHx+fFRWVHSerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAetgACCgwABhIeHAgMEBYiEBgcICQEKCwwNDQyHBg4PEAQREg0HEw2EFAYVFRQQEQUWFximgxkKCRQPGq6YmYQbHBIFChERHQ0epYQfICHBIiMkDSWygyYnKCkhKhErLJeYgy0uLzAtMSIyM6MTmgAkNDUwNjcuMjg5DLGzJCEZJCw6bNjYwSNTr0EyQvTwMSPHDx3r2hGKoSKGQxsNgAQR4gjAEBiCGIiU2BGRn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_video_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSitIyivHyezPT6/Pz6/Ozy9ESCzFRWVFxWXPTy/Mze9DR+1OTm5MS+xFxaXAQ2nAQqbJSivOzu/NTi7LzS7KzO9JTG9KyqrIR+hDSa/AQqfISevPz+/Nzq/MTe/BSK/IyixMTCxHyixNTq9LzW/Hx6fAR+/HymzOTq9Mzi/LTa/ARe7Gye1PT2/OTu/Mzm/Lza/KzW/Ozm7Ly+vARS3Gyi3Oz2/NTq/KTW/AROzFSa1MTi/IzS/FROVAQ6tEye5IzC9HS69GSy/Eyi9Cya/CR+9AQuhCRenBQ6hAQqdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFgwECAwOGhQIEBQUGBwAICZWEAQSaBgoLDAkNDg8QEYISChMUCxUWFw8YGQ8aG4IcHZsTHh8PvAggpQAhtwSoug8NIg+/giMdCsQeJCUJGCYJJ8AotwYpHiorvJYswC0dLi8eMDEyDzM0CTXANh03ODAfKzkIsAg6wDsFcKiAwWNFj14+fgADEkTIkCFEihhBEArBEWBIkkTYuFHJvgw+NjIahMCHyZEoB/kJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_video-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJy2xKS2xPz6/Ozy9OTm5LzK1JSmtGyKpHSWtISatGSKrER6rJSqvKzCzKS+xHyetCRylARGlDxyjDRmfCxabCxSZITC3LTa/Lze/KTO9Fyq5Aw+dHyy3GSmzGy21JTK3NTm7OTu9Pz+/LzW9GSu7AQybISmxLTS5LzW7Mzm7LzW5KTGzJy2vJyqrJSanIyOlHx6fGxqbFxaXIymxMTO1Ozq9IyKjLy+vKyqrOzm7FSi7Mze5Ky6vLS6vNTW1JSWlMzGzESW5JyenHyivKTa3Mzi7KTK5CR61DSGpDyGtDyKrESKrESKtCRytAxatAQ2bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAexgACCg4SFggGIAYaFAgMEBQYHCAkKCAsMDIMNDg8PEBGgoaASggkTFBUWERcYGBkaGhscghAdHh8gISIDAyMkGCUmgicoKCkqu70DGCvBggosLS4vMDEyM9gzG8IANCEPNTY3OAUzOTozO9wKPD0+PzBAQTMxODNC6yw4LkM31tn3uBEpssKIERG6RIg40gEJtxNJkihZIpEJkyZKnDzhBsCERxNQQIr0uKikyZMA/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_yellow_2-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTepOzqxOTirNzenNzWjPz25PTy1PTuzOzmtMzWjMzOfMTKbPz+9Pz65Pz23OzmvOTipMTSfLTGTKzONNTajMTCbNTelMS6TMzGdNzipKTOLMy+ZLy+PLTKPJy6LJS6JMS6dJyWRLy+XKS+NJSuLIyuJLS2PHx6JGRiHHyGLKy2TJy2LHSaHKSqNFRmFFxeHHSCJIyqJHSOHGyGHGSKHLy+TLS6VJSiNFRuFExWFExaDHyaJFR6FGR2HKyyPKy2ZLS+XLTKbExiDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAebgACCgwABhIeHAgMEBYiEBgcICQMKCwyODQ4PAhARBAsSExSJBpACCQQVDKuHFgUQAggDERehE4cYGQsFFwMaF6IbhxwdGLurHh8gIIQhIhYjIwoaJCUm14QnKCkqKyMSLC3iLYMdIy4qLzAxLDIzNDU15TYjNzg5Ojs8PT45iD9AFgRp8S6HP0cALCgQMqPHEISEgsyASJGQn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_yellow_3-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPT2NPz6RPz2PPz+1Pz+xPz6tPz2LPz6vPz+tPT2ZPT2JOzyDOTqDNzmBNzaDLS2DHx6DPz6lPz6hPz6fPz2dPz6bPz2XPz6XPTyVPT2RARKBPz+/Pz6zPz6rPz6nPz6jPT2dPz6dPz6ZPz+vPz+nOzyJPz6pPz6VPz+9Pz+pPz6TMTKBPz+5KS6DPz+zPT2XPT2TOz2RISaBOTqPMzOBLzGDKy2BJyqDHSOBERuBAROBHyWBGSKBFR6BDxmBCRaBBxaBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAergACCg4SFgwECAQOGhQEEBAUGB4yCAwQICQYJCgsMDQ4PEBGCAggSExQVFhcYGQIaCxuVHB2RHh8gISIVIwGyAAIckCQeJSAUCiIjJr8DHAXEJ6cVyCgOvwIpJAYqH6fKIxnXlSkGJ96oCiMrGSzYLQneIBMiqygDLr8BL94S8yIwYsgIMKPZhXA0PtWwcQNHDh07BC1wwaOHDx86fgAJsmHHhl+UQoos5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= folder_yellow-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMzKpMTGnMzGnPzy7Ozq5NTSvLSylKSqbKS2bLS2dKyyZKS2RKS6PLzClMzKrMTCpLy2fKSmHKymHHyeBJSSNIyCNHRuLOzifPT+tOz6nNzyXGyKBLzGhNTWhMzWZNzebOTelPTuzPz27Pz6/OzytFx2BOTitOzmtPTqvPTqzPz29Nz2XLzCfPTy5PTy9OTyrNzuVFx6BOzmzNTyTOzexOzm1PTq3PT27OzypMzuPOTOnOTWtOzizOTqnNTmfLTuFLy2LLy+NLy+PLzGNKzKFJzGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeqgACCg4SFggECAgOGhQEEBAUGBwgJCgkLDA2DDg8QEBESEhMToaEUggoVFhcXEhgZsBoaGxyCHR4fICEiIyS+JSUbJrYnKCkqBCu+JMAswwAtKccuIy/LMCUxMrYzyI/WvyU029A1NgQ3ODgryjA5OuQdNTcFN48ELy85MDrPLTs8avSwYeOGCxw+fgCJF0RIQyFDhEgkUsTIMwAmTMjIyLEjo48gQwLwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== folder_yellow_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMTGnMTCpMTGpPzy7PT29Ozq5NTWrLSylJymbKS2fJS2PJS2RMzKtLS2fISKLGyiBKy2dJSWNISGNHR6LJSePKSqTKS2VKSyZFyOBLTCfKSuZJyuZNzihOT+tOz+vOT6pMzyXLzGhJyqVJyuXKSybOTmvOTmtPTqzPT25Pz69Pz6/OTytOTypKzOTJSqVJSiTMzOnPTuxPz29Pz+/OTyxNTydHSKLLTGhIyeTJSmTOzuvPz25Pz2/NTuXOzu1PTy5PTy9NzupNTylKTONMzuXGyKHOzixOzq1PTu5PTy7NzunLzuPJSqLLS6NKy6NKy+PLTCPKzGPKTGJIzKBGSOBFR6BFR+BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe8gACCg4SFggGIAoaFAwQFBgcICQoKCwwLC4MCDQICDg+goaAQghESExQPFRYXGBevFxmCGhscGxsYuRgdHh8eICAhIiMkJSYnKCkEKisrKSwtLhovMDEyyTMEzTQyNTY3ODk6O9c8KT09NCssLD4AGjkOKD9ABEEEPc5CQ0QAODAH6BEY2KPAiho1ihh5d+EIEiRJkijBN0PIEiaCcDRx8qTjEyhRoEiZQqXKICsoU16xsnLlopcwYwLwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== ftp-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBLSytKymrKSipKSmpISGhKSepPz+/PT29Ozm7Nze3OTe5Nza3FxWXJyWnARCbARyvARKfAROhAQ2XKyqrExKTJyanAR2xARenIyKjEQ+RJzK7ARutARipIyGjDw6PAQmPHRudCwuLLy+vJSSlHx2fDQuNHR2dGxqbHRydGRiZISChBwaHNTW1NTO1NTS1MTCxLS2tDQ2NCQiJMzKzIyOjHSCdAT+BARuBJyenIR+hAwKDFROVExGTERCRCwmLDw2PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe/gACCggECA4YEhwMFg4MGBwcICQoLCgwNjYIOCw8QERIPExQVmQAWChcHEBgRDxkapZsXGxwdrR4fpaedEq0gISKxCyMBhyQlDSaDJygpKSgoKtIqFbCCKBQDFA4kHisrzBooLAAnCi0KLi8wMDHFKTIqMwApNAEBFBY1Njc4JxUyRMyrN6BYDh06TjyrIGKHoBIuGvCo0EODDw0yUFSYJygFDBcuYBDL50CFhh+NKjToUVEDkA8yZHAsRTOTn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== homepage-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBERinJSqrNTizMTerBQ6dKTC7Pz6/Pz+/KzSjFyiFAwmVAw2tCxmxGTGTGSKfNTq1NT61Oz65LT+hDwepAwujBRO1ERylEyyLHTeVKT6jOz63PT+5NT+vKS+zAxSvAwePCR2xBxy7FzaVHz2VLT2jOz+1KTipBwaDAwqTBxy9DyWvHz+TIz+XMT+nNz+tLTmnDSS3Bw+hAw6zBRa3CR+9CyO9DSO7CSC5GTKjKT6bMz+pHyy5Eym9AweHAwupLy2vBx29DSS9Dx29FTuJGy27HTC/AwSRGRiZCRydCyOlDRu/ES+PGy+/GS2/BQ+fISGhMzOzCSuLFSmPDRq/LS2tLSytMzKzESqHFQm3Cx+5AxOvAwmbIyGjPz+BBx2LDxmNCQupBxexAQCBLSuBAwWVAw2ZExKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCg4SFhgABAgMEh4MFBQYHCAgJCocLDA0ODxAREhMUhQsVFhcYGRobHB0eH4QgDBYhIiMkJSYmJ66CKCmxIiorLC0uLzAxMrwLMzQ1Njc4OTo7PD0Fgj4LP0AiQTZCQ0RFRj3JAD5HSAceSUpLTDFNTj1Pg0hQUQhAUlNUQvO7ANyrYuUKAitYsojQsoULoS5egET8AiaMmC31CEEZU4WMFR9luJgBYQiKFSBngKA70qhlIT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 link-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPTy9NTS1NzW3JyenLSytHx+fAQCBLy2vLS2tIR+hJyanAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQrEMhJq7046827/2B4BcJQEppQrIWhDcVhIG4mJMZRKG+B+DXMQmEoBi/+CAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 network-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGSGtER2vMzavKzOlKTKpGSazGymtFSOzCx+XHS2XLTitNT6lLz2fKTiZHTGTHzCbFSqbESiHGS6fOz21PT65Nz+tLzuhESS1Dx61ESKtDR+lCRiXPz6/Ozq7OTe5NTS1CxqxCxqpBxWBNze3KS2zIy+5GyStER6nCxijBRCZLy6vBxatBRKHPz+/EyazDR+tAxWhARCbJSSlDRWjDxqtBRKrBxORBRODHy25Lza7ESSzCRyrERifAw6jBw+bGSKpEya1AQ6XIR+hDxuJAwubBQuVMS+xKyqrKSipJyanISCjGReZFRWVBQ2dAwiTExSZGxmbGxubExGTCxSHBwyRBQuZAwqXOTi5LSytAQaPLS2tIyKjAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeigACCg4SFhgABAgOHhAQFBgcICQqHCwwNDg8QEQcSE4YUFRYXGBEZGhscHYQeHh8gsCAhGiIjJIQlJicoKSorLCoiLS63giAnLzAxMjM0NTY3ODmDJTo7PD3MND4tP0DTxkFCKsxDREU/RkeELEhJSktMTU4uRk9QhVFSU1JOVFVWrmApBCJLCRAlQmhhAgXKlkIfuCjpQkRKPy+MMmrc6CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= network_local-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMS+xMTCxLy+vLy6vLy2vKSipGRiZPz+/PTy9Ozq7Nze3NTS1MTGxKSmpExKTKyurGyOrEySxCxypBRWjARCbAQ2XKyqrExGTLSytJSSlIyKjIR+hARKfJyenDQyNPz6/OTe5FRWVKS2zHy25GSStER6nCxehBRCZDw+PARCdAQiPCwmLKSepIy+5FSazDx+tAxWhGRufHx6fGxqbLza7DyOxBxypBQSFGSKpEya1CxqlERGRFRSVGxmbDw6PCwqLOTi5ISChGxubBwaHHRydFROVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfLgACCggECAwKFBAUGB4ODBQgICQoLDA0OD46CEAsREhMUFRYXGIIFBRkXBhoaGxwHHRUeH5sgIAkhuSELIrEatAAXCyMkJSYnKAUpKiscLIItIS4ILzAxKh4PMjM0zwDRJDU2N74pBx84g9E5OjsxFc0ppxw8ghoNBRctrTMHKRoHegAT9OCADB8HMKTokeLBDyDQAAQJsotBASE80jkyoKBAC1dDDohIQUSTkCIijfBI8SHFD42aBOGIRLNkTEFEiGxAsIEITAB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== pipe-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHR2dJSWlMTGxHyCfNTS1Pz+/IyGjIR+hKSepLy2vKyqrIyKjJSSlLSutNzW3IyOlLy6vKymrKSipGxubMS+xNTO1MzKzExujHx+fGxqbGxmbExGTDxWbCyCvHRydKyurHx+hAxuzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZPQIBwSCwaj8ikMSAYBJRCQsFwgAIQU4KVkFBUoYkF1cpoOBDkwQOynUYcksRETiliDYVKxHIpFDBFGVMLGhsUGxwdHkUfIAUhRiJWk0l+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 services-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEgASAIUAAPwCBOy2DOSqDNyqFNymDOy6POyyFNymHJxyDOzSfOzGTMSODOSyLNSeBPzurPzaXKyCFPS+FOS2LOzKZPzmfPzaZNy2RNSeJMyaJLyGBKRuBKRqBJRiBPTWdPzupPzqlPzebPzeZPzeXJxmDIRSBLR+DPzWTMyeFHRGBMySDDQiBPzSRNyqJPzedPTOTPTKPOy+LIxaBOTCTLyCDEwuBLR6BLR2BHxKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAASABIAAAaCQIBwSCwaiQHBcQkYEJjGguGAgBIHCcXCKmQ0HI8F5BgJBCSFwoRSsVwwGc2GM2wIOp4PBfQIiUIMIyRFJQ0FIHwPJiYnIyhLKQoiiiYHGipMKROUKywjUBktLhcnLzAxUAsyMxqtAyM0Sws1NoMANzExj0c1NZhEJLtcQ7HDxsMGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 socket-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrER2vMTWvLTSnKzKnHSizGSetFyOzDSChHx+dJSSlMTCxMT2fKTibHTGVHzKZGSa1FymhEyqHHx6hNTO1Pz+/ISGhOT+tLzyhIzSbFSevDx+3ESGxDyOdBRKbHx+jMzKzHyChPT65Nz2zIzKzFyqrDRuvBxeLBRSDKSepLy2vIyKlOz27Mzq/Gyy3FyirEySxDx21CRevBxWTJyapKyurISChLTmvJTG7GSi5EyO3EyC1BxGZKyutHSyxJTSjHSurGyaxDRyzBRKrBw+dBRKHHR+jNzW3Gye3KzahITSNITOPGy2TBxipAw2hAwuXAwuNNTS1LSutKymrKSinJSelFxidMS+xExqjBQuVHx6fGRiZGxubDxCVCRupAQCBHRydAwqZAQqZBQ+NAQeRARCdAQGDAQSJAQKFAQOJAQeNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe6gACCg4SFhgABAgOHhAQFBgcICQqGCwwNCw4PEBESExSFFRYXGBkaGxwdHh8ghCEiFyMkJSYnHSgoKSqDIyssLS4vMDEyMzQ1u4I2Nxc4OTo7PB09ND7JAC0MPzhAQRNCQ0RFRkeDSCJJLUpLTE1OT1BRUuZTFyxUVStWVwxYUYQV6k1pkEWECAsitGwhxKVeFSxdvHT5YgRMlDCDxFQRUWEMmTJmQp4xg9EQmjRq1oRRw2YNo5eC/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= system-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMTGxMTCxLy6vLSytLSutKyqrPTy9PTu9Ozq7OTi5Nza3NTW1NTS1NTO1ISChJyqxISWvHSGtFx2tExmrFx2zHRydHySvPz+/NTa7LTC5JSm1HyS1GyGzHyO5JyenGxmbGyCzNze9KS65Iyi1GyC1GR21HSG5KSepKSipKy+5ISi1FxqzISK7JSSlFRmzHR65HyG7NzW3Fx+xGx+5IyO9IyKjJyWnHx6fHRudExKTGxubGRiZDQyNOzm7Ozu7MzOzMzKzNTe1AT+BFxaXFRWVJSWlERCRJSOlGxqbFxeXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAevgACCAQIDAwQFBokFgo0BBwgJCgoLCwwNDg+NAAIIEBESExMUFBUGFpsECRcYGRobHB0eHyCpCiEiIyQcJSYnKLWNKQoTKiu8JiwtLsGCKQsTsCUVLzAxzJspMjO8NDAnLTU2zQApAyk3LjY2DzgWOTqbwjsuODw98o0CPj8KMg5AgqTAkc+BkCEGXPRYSKRIPgEFUBjB8WAHCB1H8iFJkkRJER0YF+YbSbKkPD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 toplevel-16:filesystems filesystems16 16:photo:16 16:R0lGODlhDwAQAIQAAPwCBMz+zNT+1AQ+RDSiTPz+/IT+hASmBIT+jDz6RDTyPDT6PCT6NBTSHCSCTBxyTCR6TMz+1Cz2NCRyRBRWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAU+ICCOZGmeZyCo7Dm88IDOM0GPRCDTRGEcu1MPkVAAhb4Fo3E4khzQR4ABhJ0gUycKEpFoT5OAMXiixG4zewgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== trashcan_empty-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHx+fJSOlJSWlHR2dGxqbFRSVFROVERGRFxaXIyGjISGhDw6PGxmbGRmZExKTHRydJyWnIyOjIR+hFxeXCQiJMTCxNza3MzKzKymrGReZOzq7LS2tLy6vHx2fDQyNOTi5PTy9MzGzPTu9NTS1KSipJyenDw2PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaSQIBwSCwSA4KBQBAgFAzGAyJRCCgWhSd0aGAwDI2FQBFwGBCIYaP7MECsEPOZuIhIJoR8gbKuEAUWFxgZE3sFGgxFBBYbGxl7EAQUiUQFHI0dEA0eHhQfRhkgIR0BBR4QBn5FAhchIlgBEGlGCxghGAIEHgWzRRAWIyQRHgENn0YAJSAYJk2pyEINkgYn0NZFfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== trashcan_full-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBMTGxNTOxLzKtNzWzOTi5Ky6tKS+rISChISWjLTGxJSenJyulKSmpHRubFRSVFxuZJyqnLzCtOzm7IyWhIyahJyWjFxaXFROVExWVFxeXKS2rNTe3Pz6/KSqpGReZHRydIyOjJSOjLy6vLS2tKymrJSSlIR+hGRiZCwqLNTW1Ly+vGxmbJyWnNza3PTu9IyKjHx6fCQeJPTy9IyWlGRmZGxqbEQ+RHR2dMzGzOTe5HRudGR2bOTm5LSytHx2fNze3ISGhKyurNTS1IyGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeqgACCg4SFhQECAwQFBgeGgggJCgILDAkEDQ6FDxAJEQsSExQVFg4XhBgZGhAbHB0BHgkXGIQOHw8YICEiCLYYtIMODSMkJSYnDiimKYQXJSoTKwgaGiwQGMyELS4vKjAfDjEOGDKFCAIzKjQ1Dg42N4Y4OTM6CzvhNfCFHyQvOiUgYvDQkK1QiR4TfMSI8eNBQUIwgCQMEmMHMEMXhAwRQgTHh4ePQgLwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== trash-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJyanMTGxNTW1OTm5Nze3NTO1KyurJSWlHx6fFxeXISGhKymrMzGzOzu7Pz2/Pz6/JyWnGxmbFROVERGRMzOzOTe5Ozm7Ly6vGxqbExOTLSutExGTJSOlNzW3MTCxKSipFxaXDw6PGRiZPT29PTu9HRudFxWXHRydIR+hGReZHx2fJyenAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaPQIBwSCwaj8eAYEAoGA6IhKK4YDQcD4ijEUlIJpRh4lCxQCAXDCKjUGiGGYTA4rhUNomMhsIhdhgVHh8gCSEUFCJFGAYEHiAjbXqJRAceJCUbbAkmJ5NDgCUOGCYSKJJGDSUkHykSeW9GGAQkDQsoKCphsRYkFR0rUrBFDB4OAywJKAqeRRUljrYTSNNDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== www-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBJSqjGyKrER2vMTWvLTSnKzKnGyaxGSetFyOzDSChLTerMz2lMT2fKTibHTGVHzKZGSa1FymhEyqHGSyfOT2zPT65OT+tLzyhIzSbFSevDx21ESGxDyOdBRKbKSipIzKzFyqrEyG3DRyzCxmvBxeLBRSDPT29PTu9Ozm7Pz6/HRudFyirEySxBxWTPz+/GxubBxipBxGZESO/AQC/Pz2/MzGzHSurBRKrBw+dBRKHOTm7ITOPGy2TAw2hAwqZAwuNFyuJDSOHBRGdAQiTOTi5FSiLBQ2ZAQeTDReRAQCBAQOJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeogACCg4SFhgABAgOHhAQFBgcICQqMCwwNDg8QERIThhQVFhcYGRobHB0egx+srR8gISIjJCUmgh8nKCcpHyorLC0bJC62ALgvyKwwIiIbMTLFHygzNDQ1NjA3Bxs4OTq3J8gvKjswPD0xPj9At9PVNDsrQUJDPkSr4cg1RTBGLj9HkKxyV61ckiMBlSi5lSJXChTlkCBZonChMRgrMGJcQbEio4+C/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= zip-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBJSSlMzOzGxmbCwqLKyqrDw6PLy+vKSepFxWXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQcEMhJqwVBDHJtMV0ojmRpnmiqruQBksiRcCzgRwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 applix-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOzq7Pz+/Ozm7MTCxOTi5Ly2vLSytAQCBNze3FxaXPz6/PTy9OTe5Pz2/PT29Dw+PEQ+RFROVLS2tOzu7FRWVMTGxJyanDQyNNza3MS+xKymrCwuLAwKDAwODAQGBLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQAAgIBAMjoRCQcgUGg7QaOFAaAoR0SgBWm1is4cpNNFUZBPUxILRaDqij8bjAIFE2kwJVNDoCyATFHhCbwcVDQcNFhQTCIMAb3wXERcNGBmObgcaDRsBHA0dCB6PEh99qH0gA48CIQ0hFbKvHRuPDiIjCAYKAgQNJAm3Dg4DGx8lySVsVkKpz83RVn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= archive_2-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhDwAQAIUAAPwCBKyqrIyKjIR+hGxqbFxWXFRSVGxmbMzKzPz+/NTW1ISChJSivISexKymrPz6/ER+xOzy/KzO9DR+1BxexAQ6pPT2/Ozu/Ozu9OTm9Nzm7Mze7Eyy/PT29Ozy9Nzu/MTa9LTW/HTC/Mzi/KTS/Fyy/ARGtGyi1PT6/Mzm/LTa/JTK/CSO9ARKvEyS3Lza/JTC9GS2/DyW9Bx+/ARe5Cx+5ARSzARa1ARazKSmpJSSlAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAZ1QIAQEBAMCAXDYcgUIhKKxbLZRASm1CGj4cgyGY8HxCsEPyKSCaVSoTIsF0xGs+G0m4yOB/MBhUR3TA0PGBgjISQlJlQnKBEpKisrLC1ULi8wMTIzNDSVTTU2NzcOODc2NmQIOVheTwg6rU0BCwsEBkpkugZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= archive-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhDwAQAIUAAPwCBKyqrIyKjIR+hGxqbFxWXFRSVGxmbMzKzPz+/NTW1GxubJy2xKymrPT29LzGzHyerCRylAQ2bGyWrDRyhCxSZITC3Lza/KTO/Fyq5ARChISixISy1JTK3Mzi9PT2/LzW7Gyy7LTS3Mzm7OTy9Pz6/ISivMTm9Ozy9LTS9Eye5DSCtDSKrESKtAxatDRSdKSmpJSSlISChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAPABAAAAZxQIAQEBAMCAXDYcgUIhKKwbLZRAQWVCaDkWhkhwzHAxIpRyTUCaUSsVwwGQ11w+l4PglQSN7ciEYkJQ4XcVQmJyQODnmFfSMoih8pKnxMJissLSuaLpVDLxqhDaGeVAgwU18ATwgxqVQBMkdJr6pUBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== binary2-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxKymrLSytMS+xLy2vAQCBOTe5ISCjFRCVGRWbHxufIyKlPz6/PTy9JSSlGxibIyGlKyurJSWnGRWZIR+hIyWlMzO1KyutJyWnNza3KSepHxqfHx2fMTGxFxSZJSWlPTu9IyKjLy+vKyqrNTa3LSutIyGjLS2tJyanMzGzLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdFE03sYKBaMRGPhaD7KkIhkQmFULG3m+4JRZCgaGwV4bgkcChwdHh8gIQh5QiIjJBAlGyYLJyOPbgsdISgmKQoqBQKQAA8rFywtIC4QLw8DqA8FMDEbJx0qMAMmqCIWCAguITJHAwy1Ig8EMgwNDDNrqEwO2NnZVtzdfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== binary-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxKymrLSytMS+xLy2vAQCBOTe5ISCjFRCVGRWbHxufIyKlPz6/PTy9JSSlGxibIyGlKyurJSWnGRWZIR+hIyWlMzO1KyutJyWnNza3KSepHxqfHx2fMTGxFxSZJSWlPTu9IyKjLy+vKyqrNTa3LSutIyGjLS2tJyanMzGzLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdFE03sYKBaMRGPhaD7KkIhkQmFULG3m+4JRZCgaGwV4bgkcChwdHh8gIQh5QiIjJBAlGyYLJyOPbgsdISgmKQoqBQKQAA8rFywtIC4QLw8DqA8FMDEbJx0qMAMmqCIWCAguITJHAwy1Ig8EMgwNDDNrqEwO2NnZVtzdfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== cdtrack-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7MzO3OTi5PTu9MTGxJSWnKSipGxqbLSyvKy2vPz6/PT29MTCxLy6xLSuvAQCBJSSlHx2fKyutMTG1MzK7Ly+1Pz2/PTy9OTe5Ly2vNze5OTe9IyKjIR+hGRmdGRmhKSmvMzO5FROVJSSrHR2lKSepLS63LS2vNza3Ly+7MzS3Ozq7IyGjNTi7Nze3Ly6vLSytAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAatQAAgIBAMjoRCQcgUBgzQaMFwaAoR0WgCSrAiFATFAnqIMpgNxwMSkSAmBUrFcmEyMBnNZsHpLDwSH3VCEyAhDCIjHBYOHh4TgwwWARIkJQkWJiYTEwiDFicoKSoqAhsrLBMLnkIULRUuLxYCC4UICDCDAC8xHRIyLQ0MFUQCug0IBTMyNBk0RQMUugApJBU1NCE2AgcH0k0CRAMMFCEhFTc400wX7e7uVvHyfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== colorscm-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzOzm7Pz+/MS+xOTi5MzGzLy2vLSytAQCBNze3PzmtPzuzPzq1Py2jNx2fMyWtNzG3PTy9OTe5PzmnPz23Pzy7PyWXNQuPMw+nLxKzPzutPz65OyujMw6dLw+3HRC1Hx6xPTqfPz2xOyehMRy7Gx25DRm7CxaxOTuZOzyrNzqZNzqdIS67Hy25FSa1BRirMzerLTmlHTWVFzSXDzSfHzi5KTW/JTO/FSe3CRqpPz6/FTSdAzKZCTWpGze5JTW/IS+9DRqnOzu7KzixCzOhBzWlBTWtETW3Fy63FSi1MTCxNza3KTGvByifByynByirCR+nERyhKyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAekgAAAAQICA4cEBQWCjIIGB5CRBQcEjY6RkQSQlY2PmAeTkAiNCZ8HCggLDA2NDpAPEBESExQVFqyMFwcYGQcaGxwdHretFh8gkCEiIyQluIIOJifHGSgpKisszwAOLS4mLzAIMTIzNNsXNTY3ODk6Ozw9PtsOPzhAQUJDREU9RvRHkCRRsoRJEydGntC7ACWKlClUqli5ssqSoAYYM2a0yNGSn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== configure_script-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxKymrLSytMS+xLy2vAQCBOTe5ISCjFRCVGRWbHxufIyKlPz6/PTy9JSSlGxibIyGlKyurJSWnGRWZIR+hIyWlMzO1KyutJyWnNza3KSepHxqfHx2fMTGxFxSZJSWlPTu9IyKjLy+vKyqrNTa3LSutIyGjLS2tJyanMzGzLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdFE03sYKBaMRGPhaD7KkIhkQmFULG3m+4JRZCgaGwV4bgkcChwdHh8gIQh5QiIjJBAlGyYLJyOPbgsdISgmKQoqBQKQAA8rFywtIC4QLw8DqA8FMDEbJx0qMAMmqCIWCAguITJHAwy1Ig8EMgwNDDNrqEwO2NnZVtzdfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== core-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7MS+xLy6vLSytAQCBOTe5Pz6/Pz2/PTy9GxubHRudPT29Nze3GxqbGRiZJyanMTGxFROVHRydERCRIyKjPTu9DQyNLy+vNza3FxWXHx6fAwODCQiJEQ+RNTW1KSipMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQAAgIBAMjoRCQcgUBgzQaMFwaAoR0egBSrA+s9Rs85s9JBQLRrMBhjoeEDWTDY5IHhO5kBJtVCxvFwh6AHwGGBkaGxwTHYNNfA4ZHAYaHh8IIIQNDg4eISIeIwsUBIQUeBokGyMlCiYYpx0dAqolJwQEKKcUIAMYZx8KaIRMDMfIyFbLzH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= deb-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/OTm5NzW3NTS1NTO1MzKzPz+/MzGzOzm7MzOzLy6vOTe5MTCxLSytAQCBPz2/Pz6/PTu9NSyvPwCNMyKlPT29Pzy9Nze3PQaRPySpPwmVOzu7NxWbPwCLNza3NRufOyqtOyetNSSnMTGxMyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaLQAAgIBAMjoRCQcgUBgzQaMFwaAoR0WgCKrA+s4YtVNFcgMMMRcNRPhsekAibKYBKJvgJ5VGZC+sGE1AWEBMPCH4AF1AYBhkaFRMbiE11EByRFhEdCB6JCxAQHw8geCFFiQIQFSIIERdFAyOJFxERJAhFAgkJDIkeCwIHByMKxmqJTA7LzMxWz9B+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 desktopfile-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MTGxMTCxLy2vLSytAQCBOTe5Pz6/PTy9Ax2/Ax+/AR6/ARm3Pz2/Nza3Eye/ARezPT29Ozu7OTi5PTu9IyKjMS+xLy6vAAAACH5BAEAAAAALAAAAAAQABAAAAV6IAAEgjCcRFGIrBgYcFwYRCsecUzAdfvmhhkM4QPSEooFo9UwGhyOx5LVhEEikomDQpmKKjGJwXKhYA5eABgmsUgujwy6BYZOLnh5Ja2BcjcbAQEVA2kVURyJigMIhoAHBxWEAwQdhg2ECB0dHp1KNiIMoqOjoKY2fiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== develop-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOzq7OTW5OTa5NzS3NzW3NTS1NTK1NTO1Ozi7Pz+/PTq9MS6xLSytMTGxOzm7Ly2vAQCBNze3Pz2/PTy9Pz6/Pz+rPz+pPz+nJyafKSWfPzuXPz6XMSqTGxOVJR6NPTSHLSCFMzCpOTWrNzSlPTihIyGRGRWNOzWDPzeBIxqBCwKDIRGBKxuBNTCrJSKdOTWVPzqLEwyHGQyFNSqBOSuBIRSBDQCBFwmBMzChLymZGReVMyiHPzSBOSmBEwSBEwWBLx+BNSSBPz2bPzuVKyWTLyCBOyiBNSCBLxyBHwyBMzCzLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAesgAAAAQIDBAUGBAcIgo2CCQqRkggKjI4ACwoMDQyRB5EFl5ANCpyVkg6ODwoQkaQIBxAQEY4SpZGtChMKFLSNkJsQpJETE76CA5KRFboVAccAFhcYGRobHB0eHyAhjiIjJCUmJygpKissLY4uLzAxIDIzNDU2NziOOTo7PD0+P0BBhLC44WgIkSIyjBxB8uNHEiRKHBVIIKGAgyVMGGhsAK1RhI8gQV4aSdJPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 disk_image-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MS+xLSytAQCBOTe5Pz6/Pz2/PTy9HR2dDyODDSODFxaXNza3Hx2fFRWVLy2vLS2tGRmZGxqbOTi5JyWnMzGzJSSlMTGxPTu9Ly6vMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaFQAAgIBAMjoRCQcgUBgzQaMGwbAIOUSl0YH1mqVFE05stIBAJRXPxhTIaDjWTbXhAIndJoyEXTqAUWRUWB30AfwaBURIXhU1/DBQYGZODE4YaDAwPGwocHRIWA4YTew8dCh4dgx6kHx8HBQkgFiAXIaQTEwMeCCC/IGlWQgrFxsbDyVZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 document2-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLSytLy6vAQCBOTe5ISChPz6/PTy9JyenGRmZKSipPz2/Nza3FROVCwuLGRiZPT29LS2tJSSlFxaXBQWFDQyNLy2vHR2dPTu9Ozm7IyOjKyqrMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaOQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1GsVNooumFKqiJhYLRbBwGUIf4AWEz3YfIQXKYPCh1TRVRFhcYDxkUCHZOGhscHRAeEhsfBYwAAgcPDxgXICEIIhWYBpwjFKAbBhUDmBUPBRAIGw0VJAMlpQgQIggTrQMECa8VrWlpC2qYTAzOz89W0tN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 document3-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBARiBASmBATWBCz+LFz+XLz+vASSBATGBDz+PMz+zNTS1MzOzPz2/Pz6/ExKTPT29Pz+/ISChNTO1KSepJyanHRydKSipGxmbGxqbGRmZFROVNzW3NTW1MTCxHx6fIR+hJyWnOzq7Nza3Ly6vLSytJSSlHR2dMzKzMzGzLSutFRSVKyqrJSOlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaXQIBwSCwWA4IBoWA4GIkBRELhfAIWjEWAahUuGg3HYdF9LCARyCJCNj4kE0ckMpm3iQ/K116pWB5FDxcLGBmGhYUZGhtCGxUTGBwQHB0THh4VH4AADxUgIQsiCyMkJRcmm5wnGCgjIwsoJBcVGqkPH6AcIx4pKqepABsrLB4oHiQkLBcYwG8XJSwlfSYtwJwP2Ngb2cB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 document-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7LSytMS+xKSepJyenAQCBOTe5Pz6/Pz2/PTy9PT29Nza3IyOjJSOlOzu7JyanPTu9OTi5MTGxLy6vAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV6IAAEgjCcRFGIrBgYcFwYawscBoLI8GC/MdgMlmi9FAskLZFAMFqNYMzxgDxZUaQ2+YhcRRKpwxF5HL6AsGKicCAplXMrPH48LJfJQYLGuCcTFxSAEgNoEg4XEQcVEoUDGYeCE4OVBQmHDYVMGp1NaCwMoqOjNqanfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== font_bitmap-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOzq7Pz+/Ozm7MTCxOTi5Ly2vLSytAQCBNze3FxaXPz6/PTy9OTe5Pz2/PT29Dw+PEQ+RFROVLS2tOzu7FRWVMTGxJyanDQyNNza3MS+xKymrCwuLAwKDAwODAQGBLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQAAgIBAMjoRCQcgUGg7QaOFAaAoR0SgBWm1is4cpNNFUZBPUxILRaDqij8bjAIFE2kwJVNDoCyATFHhCbwcVDQcNFhQTCIMAb3wXERcNGBmObgcaDRsBHA0dCB6PEh99qH0gA48CIQ0hFbKvHRuPDiIjCAYKAgQNJAm3Dg4DGx8lySVsVkKpz83RVn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= font_truetype-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxAQCBLy6vLSytISChHR2dMS+xLy+vPz6/PTy9Hx+fHx6fIR+hHRydNza3MzOzLS2tPz2/KSipHx2fPTu9Ozm7FxWXIyGjJSWlMTGxOTe5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaMQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdEEU0EuQwuJBUPRbDgUD0g0EpGwmYaE4tCYUCgVFnZNFxh7GQcWFBobCHdOBHsHERwVEh0ejwAXBh8RGhoWFQgeF5oGGnV1FiAGFwOaF3USCAghG0cipwi0pa8DaJoCI68JaQvIa1ZCZc1ky9BWfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== font_type1-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy2vAQCBOTe5Pz6/PTy9Pz2/Nza3GxqbPT29CQmJLy+vOzu7Ozm7KSmpKymrBQOFJyWnCQiJISChDQuNMTGxPTu9Nze3MS+xLy6vLSytAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaDQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdFE05stJBSKRZPxhTYaDjWT3W484k3IdrGIMCQPCHJOBwoThQsUDhUWgwB6CxcSCQsYCAgQjgYPGYAaGxwGEAOOEA0XfB0QHUcemggfFhYgEAQDZqUMox4hIiFoI45MfMTFVsfIfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== html2-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MTGxAQC/MS+xLy2vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3PT29Ozu7PTu9OTi5MTCxLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV0IAAEgjCcRFGIrBgYcFwYRCsecUzAdfvmhhkM4YMljjTFgtFoOYCwxwPSZD0Nx+wjEqmKJEBpZHLwAsDYbAJCKbfAYm6lLTFbpOqERTIwSx4VEQcUEnwDCH4VFQcHhSgXfg58CAoKGJZMNiINnJ2dmqA2fiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== html-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7MzK/OTe5MTCxLy2vLS2tAQCBOTi5PT29MzW7Pz2/Pz6/PTu9NTmzMTmnIzGjGymtGSqdOzu7Mze9JzOpOz21KzipEySxDx+rFyKdNze3JS27FyexMTmzIy+7FSSzDRuxCxaRDx21GSi1ITKdGyyfCRWrCRGVNza3Nzi9CRevER2zIzCfESOLBQ6bFRihJSevBxChCxaXBQ2TBwqTExKTJyanMTGxNTW1KyqrHyChIR+hMS+xLSytAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAehgAAAAQICA4cEBQWCjIIBBpCRBQYHjYIIBgmaCZSQBJYKkZEHkQuNoZucBwsMDQ6ND5EQChESExMUr4yoFRYXGBkaEhK6gqEbHB0eHyAhEAjFACIGIyQlJicoKQjQp9QqKywtLi8KMNEKEzEyMzQ1NjcHA+i4ODk6Ozw9Pj/RMBoUgAQRMmSIkAYL/CkQAGQBkVYOi0Rj5KCiRYuWMmr0EwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== image-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzGzOzm7Pz6/MTGxMTCxLy6vLSytAQCBOTe5PTy9NTazKTenJTWrJTGtJy6vPz2/PT29GyiTFTSFFTWHEzGPDSGXJSupNze3JSOlJzWdGSWRJyanOzu7Nza3LTKpFyGPHx+fMzSzFx2THRydKSipKymrKTClIyGjPTu9MS+xISmfHyabOTi5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQAAgIBAMjoRCQcgUBgzQaMFwaAoR0egBKrA+swYCNKFofrOFBaPhaD7A4wSkzXwbIpIJpZKwXOhCAlAYGRobHB0WCIAAHlAfBREgISIji02CCSIkCSUmJwgkjG8JHwIWKCkqRoynFyssBy0pLgMKjB4vLwIwIjEyLCgLjCQzAgQKMDAMy2xWQg7R0tLP1VZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 image-truecolor-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzGzOzm7Pz6/MTGxMTCxLy6vLSytAQCBOTe5PTy9NTazKTenJTWrJTGtJy6vPz2/PT29GyiTFTSFFTWHEzGPDSGXJSupNze3JSOlJzWdGSWRJyanOzu7Nza3LTKpFyGPHx+fMzSzFx2THRydKSipKymrKTClIyGjPTu9MS+xISmfHyabOTi5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQAAgIBAMjoRCQcgUBgzQaMFwaAoR0egBKrA+swYCNKFofrOFBaPhaD7A4wSkzXwbIpIJpZKwXOhCAlAYGRobHB0WCIAAHlAfBREgISIji02CCSIkCSUmJwgkjG8JHwIWKCkqRoynFyssBy0pLgMKjB4vLwIwIjEyLCgLjCQzAgQKMDAMy2xWQg7R0tLP1VZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 info-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7MTGxMTCxLy6vLSytAQCBOTe5KSm/ExK/Ozu7PT29Pz2/Pz6/PTu9FRO/CwqtMS+xPTy9Nze3Kym/JSW/Dw+3Ly2vNza3IyG/DQyxKSipJyWnKyqrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaPQAAgIBAMjoRCQcgUBgzQaMFwaAoR0egBSrA+s9RoovnNHhQLRqPpiD4gEcmEUlkz21DLRYGgTCR2QgJRARgLARkTCIEAGlEbFgQIEhGLTYMUFBwdHgIBCB+MbRQSICEiBQ5FjAJ0HSEXFx4FAgmMGhUVAh4jIyQJBQqMH6oEHiQiJAtpjEwNz9DQVtPUfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== kmultiple-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBNTO1NTW1NzW3LS2tJyanPT29Ly6vOzm7Pz6/Pz+/Ozu7KymrKSmpPz2/OTm5MTGxLSutPTu9OTe5Ly2vKyurAQCBNze3IyKjLy+vMzGzMTCxMS+xHRydMzOzAAAACH5BAEAAAAALAAAAAAQABAAAAWDICCOZDkGgjAQhUkORnwgrQsERpIcylKbMB2jMTz8RgKHzvGARGZHwECiUyQmlIND0iAJDErlo1KhVCKWEQxskCwiBUSAkBYJEBI34nLAGCYZdTcaGgcbBxx9bhuCIhYWHRiSGAsXGo0jHhIOCwgIExCYIhACHhCGBweiI4+tqzYjfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== log-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzOzm3Pz+/Ozm7MTCxLy2vLSytAQCBNze3NS6lPz6/PTy9OTi3KxuLOTKtNzOzOTi5MSqXLRiHMyOXLRuJLSCXMy6tPS2XMSGNKRaHJx6JMS6tOzWjOzOfMyOLLx6JJxiHIxSBJxGBKRmRLSutOTe5NTStPzehPTWlPzCZKxaHOS2hPzOlPzKbJQ+BKyqrMTGxOzu7MyefOSubJxGDKyOfLymjMSqdJyGfJyWnLS2tLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeagAAAAQICA4cEBQWCjIIGB5CRBQcEjYIIkZEEkJWNAZmQk5AJjY+gBAkKCwyNDaAOBw8QEKyMEZkGEgcTFAW1gq6QFRYXGBkaq62QGxwdHh8XHiC/AK4hIiMkJSYnKCnUKissLS4vJ90LA9QNGzAxMjMzKDQ1Nes2NzguOTr0BQnUBDQQsINHDx8pfgBJZgkAg4cQITacaMlPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 make-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLSytLy6vAQCBOTe5ISChPz6/PTy9JyenGRmZKSipPz2/Nza3FROVCwuLGRiZPT29LS2tJSSlFxaXBQWFDQyNLy2vHR2dPTu9Ozm7IyOjKyqrMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaOQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1GsVNooumFKqiJhYLRbBwGUIf4AWEz3YfIQXKYPCh1TRVRFhcYDxkUCHZOGhscHRAeEhsfBYwAAgcPDxgXICEIIhWYBpwjFKAbBhUDmBUPBRAIGw0VJAMlpQgQIggTrQMECa8VrWlpC2qYTAzOz89W0tN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 man-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MTGxMTCxLy2vLSytAQCBNze3Pz6/PTy9HR2dGxubGxqbGRiZFxeXHRydPz2/NTW1IyOjHx2fIyKjJSOlGxmbLy6vPTu9LS2tNza3JyWnKSipLSutKyqrMzGzMS+xKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQAAgIBAMjoRCQcgUBgzQaMFAaAoP0SgBWm0+s4YpFOEFUxOKBaPZMBscjseaCYlIJglKBQKxWOZCFQEXCBgECw4RBQeAABAZGgsbCAQQHB2MTYICCBoJHh4SHyCNGSEiHRsKGh0SIwONERwTEhoUtBwkCI0NJSYLIiMjJCQnCY0CDQ0ECAkdzx1qVkIM1dbW09lWfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== message-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/PTq9OTi5MTGxMTCxLy2vLSytAQCBPT29Pz2/PTu9PTy9OTe5OTa5IyKjKSipGxqbKSepLxa/KyqrMS+xOzq7Ozi7NSK/KymrKyurOzm7GRiZNza3NzS3GReZJyenJSOlIR+hGxmbFRWVFRSVLSutJyanLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaXQAAgIBAMjoRCQcgUBgzQaMFAaAoP0SgBWm0istApNNF8ggmKBaPBdDzecHcCEmELHZDDASGZCBgUE3VtFRYXBwITGBkWGht2AA95HBJ9HR4WHyCQDxcWDH5GFyEVIpAOIAEcEyMEBBckJQKQACYnFigpKrsqJQq0CwsrFRkXLMcVv01JCS0ZGR4VxGtWQg3X2NjV21Z+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 midi-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxPTy9Ly6vLSytAQCBFxaXExKTCwmLKSipPz6/GxmbGRiZISGhOTe5IyKjPz2/FRSVLy2vISChMzGzFRWVLS2tHRydNza3KyqrKyurHx+fMTGxJyWnJSSlIyGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdFEE6Eolw2FxILRaDoeEAdDHRFIFG3mhDKpSA4WFwUYeG4ZcRpqghgIeUJ7Ext/FhscCI1NHXAOHooLCAKOABMfFJKAGwsgA6IhCQwiISERIwwDJKIGDBElJhcnJwsECaIgFqsJagvLbFZCDdDR0c7UVn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mime_empty-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MTGxMTCxLy2vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3PT29Ozu7PTu9Ozq7OTi5MS+xLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVuIAAEgjCcRFGIrBgYcFwYRCsecUzAdfvmhhkM4QPSEooFo9UwGhyOx5LVNDogkKkoAoRCJActgBvzPibhFteLpVQOEbGFTaEcLJGBOII9Vxp5Awh7dQcHgCgJexF5CBcYkBhKNiIMlpeXlJo2fiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== misc_doc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7Ly+vMTCxLy2vLSytAQCBOTe5Ozu5PTy9LzKvPz2/Pz6/LzKrIyufISqbJSmjJyqlLzCvLzOtESGLFSONEx2PHSObNTW1KSidGRuJDx2FCxqFFxyVKyqrNza3OzexOTKlOTGfOSyTJRyFGRmNPTq3OzSnPTqzOzCbMR+JJRiLJySlLS2tOTWvOzCfPTetOSyZMyGLKRuLJSGhNTCnOS6ZOy+dNyiPNTCtMyaPKxuFIxmTGxGJKx2LKRmHHQ+FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeigAAAAQICA4cEBQWCjIIGB5CRBQcEjYIIkZEEkJWNj5kHk5AJnqCUCgsMDY0OkQ8QERISExCrjK0HExQVFhcYGQi2ggKQExobHB0eCR/CAJ8GICEiIyQlBM4mEycoKSorLNYFzgYtLi8vMDEyMzQKzgI1Ni83ODk6Ownvnjw9Pj4/1u1wBw9IkB9BYggZMoOBKksAiBSJYeRIg4sXIWq05CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mp3-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MS+xLzyzGSOZLSytAQCBNza3MTGxMTCxGzyfNze3PTu9CS2JPTy9Pz2/OTe5OTi5GzepLT6vEyuTLS6tBzWHBTGFHSKdKzSvHzOnFzufBTuNAzOFCzCLAy2DARyBARSBJTylARiBERGRASmBASSBARqPBxeHETWRAQ+BJSOlGxqbLy2vHR6dPz6/Ozq7IyqjKyqrLy6vAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQAAgIBAMjoRCQcgUBgzQaMGwbAIOUSl0YH1GsdMpoumFJqgIxYLRbDgehQckIllMKGxmxXKJYDIaGxwdHnlCFB8gISIGIyQGJSaGABURCCcjKCkqKywtkxIXDQsuLzAxKSYykxcIBQ4zqjM0JwOTDTUUFDY3EQ0DHg63EhIHBxu/AzgPtw2/BQg50jlrVkIM2NnZ1txWfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== netscape_doc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MTCxLy2vLSytAQCBOTe5Pz6/PTy9FxmdJSanBQqPCQ6THR+hIySnNza3MTCzBxGVAQyTKS6xISmtAw6TGRufCRWbARCXGyOnGyarFxyhLTCzBxefARWdJyurPT6/Fx2jOTi5BxylARqlIyirByGpLzOzFR6lLS6xBRmhARGbISChAQiNCxCRMzS1FRyhMTGxLS2tERCTBweHBQSFFxaXKSipIyOjJSOlISGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAehgAAAAQICA4cEBQWCjIIBBpCRBQYEjYIHkZEEkJWNj5kGk5AInqCUCAkKC40MpgYNDQ6rjAwFDxAREhITFBCyjRUWFxgZGBgaGxwHs4IVCB0eBh8eIB4hy8AiIyQlJhogJCcVzAAoIikqKywNLSouA+QVLzAxMjM0NTM2N/E4OTIJdOxYsIMHgngEekDw8QOIDBk/VFkStKCiRYsTM1ryEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== pdf-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/OTm5NzW3NTS1NTO1MzKzOzq7Pz+/Ozm7Pz6/MTCxNze3PS6vPw+PPzm7Ly6vLSytAQCBOTe5PxmZPTy9Pw6PPwCBPy+xPw+RPxaXPyutPzS1PT29Pz2/Nza3Py2vPy6vOzCxPS+vOzGxPxeXPSipPxGROzS1OS2tMTGxOTe3OSytMS+xLy2vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaUQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YMUmstNDQtFcHBgNB7SgeEAiTclhcmhEEwkKnCmvHCwXGBkaFHplBxsWfxwGFR0Ie0IeUB8WCRMVICGQhwkVHBYcIiMIHpEACx0JJB0VJQgIRqceeSAmJyhGAymnCwYUKggrC0cDLLMLHgMKLA/OLW9WQhHU1dXS2FZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 person-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7MTGxPzm1NyuZNymXNSmVMS+xLy6vLSytAQCBOTe5NSeTPTKhPzenPzmrPzqtPz6/PTy9MSGPMSGNPz2/Nza3KRuLOS6bOzCfLySTLyGNPT29KxyNNSWTJxmJOzu7JRiJMyKPOSybOy+fOTi5IxaJLR6LJRuROTW1LymlHxSHKR6TMTCxLy2vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQAAgIBAMjoRCQcgUBgzQaMFwaAoR0egBSrA+s9RoovlULBgNtOMBiTQlhgmlYrFcGpiMmwnXLCgUERUbHBx7Qh0GHgwfFCAhIiMIhwCJJCULHyAgJieTTYkoKRMLKiucHZQsGC0bJS4kJiYdBJQdGC8uGykpJgQCCbYnMDEtMi0zBAc0th0dwA4ONWttVkIR2NnZ1txWfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== postscript-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOzq7Pz+/Ozm7MTGxOTi5MTCxLy2vLSytAQCBNze3AQCrPz6/PTy9OTe5MzG9MTC7Pz2/PT29MTC5Ly+5Ly65Ozu7PTu9Nza3LSy3Kyq1KSizMS+xLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaLQAAgIBAMjoRCQcgUGg7QaOFAaAoR0SgBWm1is4cpNNFUgKkLRsPRfEAhB4g8EpGwmZM3BbKvWC53Qm5xchgQGRYIgQCDBxQYFBcaG4ptBxFyEBIcBggdixN0EBYQGggTDwOLD3+ZckcLqxwcCB4fHyAgAyGLHQ8dAwkLIiIMImtWQg7LzMzJz1Z+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 pov-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozm7MTCxLy2vAQCBOTe5OTm/Jyy9JSq3KS21Nze5PTy9Pz6/Jy29LzO7Hye7DRu7Bxe5MzK1Nze9KzC7ER27BRS3ExqpKTC1JSy3KS69Iyu9GyS5BROzAw6lMzexLTWrJTCfGyajGSK3BRCrAw2hLzWtIy+dFySRCRWxExSZGyqTFR6PDRCdFxeXNze3IyydExSTGRmZJyanKyurJSOlHR2dISChHx2fKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAebgAAAAQICA4cEBQWCjIIGB5CRBQeLjQAIkZKQApaPmZSRCY2emQUJCgoLjQyZDQ4PEBESqoysBxMUFQ4WFxgZtIIRkBoVBxsWHB0ewACeHyAhIiMXJCXMsiYnKCkqFx0rLMwMJgctLi8wGNUx1wMoLjIzLCslNDXMNgY3LzM4MfY5dFxLsINHDx8/fvgAsoMZowUQI0a0RLGin0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== readme-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MTGxMTCxLy2vLSytAQCBNze3Pz6/PTy9HR2dGxubGxqbGRiZFxeXHRydPz2/NTW1IyOjHx2fIyKjJSOlGxmbLy6vPTu9LS2tNza3JyWnKSipLSutKyqrMzGzMS+xKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQAAgIBAMjoRCQcgUBgzQaMFAaAoP0SgBWm0+s4YpFOEFUxOKBaPZMBscjseaCYlIJglKBQKxWOZCFQEXCBgECw4RBQeAABAZGgsbCAQQHB2MTYICCBoJHh4SHyCNGSEiHRsKGh0SIwONERwTEhoUtBwkCI0NJSYLIiMjJCQnCY0CDQ0ECAkdzx1qVkIM1dbW09lWfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== real_doc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/MzK1Ozq7MTCxOzu9NTW7Ozm/Ly2vLSytAQCBLy23IyOzGRmxGRivISGzKyq3OTe5MTC3GRmrCQmdBQWLAwOFBQaJDQyjHRyxLy6zKyqvCQeJBwaHCQiJDw2NHx+nIR+tHx2jKyqrLS6vHx2fGxudDw6ZGxupExOXOzm7MTKxPz2/ExKTISCpFxetGReZFxWXERCRFRSVFxahLy2zJSOxGRebLy63Dw6rERGVGRmlFxarKyqxJSSvLy6vLSutAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeqgAAAAQICA4cEBQWCjIIGB5CRBQcIjYIJkZEIkAOWj5mUkQqNnwcLDA0ICg4PEKQHDRESExQVFgkDrowXGBkaGxwcHR4fuY0gISIdI8wdJCUmuoInKAopKisrCiwsLdIALi8wLDEpCTIDM96NNDU2Nzc4M/I5Ot87PBk6PT0vOT0uFHwzgMAHDwo/gAQRQkNgIwEGGOwYQiRDBhpFjHxjBKGjR4+WQor0EwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== recycled-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozm7MTGxMTCxLy2vLSytAQCBOTe5AxSBBTCBBS6BBSqBCSOFBSGBPz6/PTy9BRaBBz+BCS6BCy6DDyyJDyCNByiBCS2BNza3AxeBPT29AxOBBziBKT+nAxuBCT2BKz+nOz+7BR2BBSOBOz+5BR+BKz+pBy2BByaBAxmBOzu7Gy+XBzGBBzKBBzeBMS+xLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaUQAAgIBAMjoRCQcgUGg7QaOFAaAoR0SgBWm0+s4cpNOEFUxULRqPpODwgEcnkQKlY1sz2BZPRbDgdHndNHwcgGBEhIhQjJBF4QoUlGBAPHRAmJygUTSkqmCQrESyIH5AADosjLREGky4Dpx8VIi8eDyAwfAmyMTEvCDIzNDURNrIOHwMJNjfON2pWQg3U1dXS2FZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 rpm-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/OTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7Pz6/MTCxLy6vLy2vAQCBOTe5PTu9Nza3HRudJwCJPwCNPxujPz2/PTy9Dw2PPw2XOzm7FROVKyurMzGzCQiJISChIR+hGRiZOzu7Nze3MzOzEQ+RMTGxMS+xLSytAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaFQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdCEounNFhQLRqPp+IYTjzUTcog07pIJpWKRCyEXDVEJCRMYCH4Ad1F3dxMTiXSEFnwPGQgQiXcaGxocHQ0eDR+aCX0IIA0QHQN3TQ0hcQ0iDQMgI65zIgIkJSYLwAsniUyNxrlWyVZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 ruby-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/OTm5NzW3NTS1NTO1MzKzPz+/Ozm7MzOzMTCxOTe5Ly6vLSytAQCBPyupPz2/Pz6/PTu9PT29Pze3PxaRPzm5PzSzPza1PyGdPxKNPy6rPyejPxeRPxONOzu7Py2rPyilPyKdOS2tPQqFPxSRPw+JPxGLLwaDKw6NPxCNPQ2HLwSBJxCPMTGxNQaDNza3Nze3JQ2LLy2vEQSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQAAgIBAMjoRCQcgUBgzQaMGwbAIO0SgCSrA+s4YtNNFUgMOJBaNRzjqgD0iEzRREJROKAfKQ0IV2BhUWFxgZEg8HfwBmERYQGhscHR6KTQITFxIXHyAhFBQiiwoQIxwkJSYjJygDiwJ9KRwZKissAy2jEREHJRkuKAgIuU0vMEUtJTEyC2qLTA0NM9HUz1bXQn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= shellscript-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7OTe5MTGxAQCBIyKjMS+xLy6vLSytPT29GxqbCwuLPz6/Pz2/PTy9FxeXNTW1OTi5BQSFOzu7Nza3Nze3PTu9AAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWIIAAEgjCcRFGIrBgYcFwYRysicXzARBskgWBgt4MpWImFUslIHBqOx4IVWEAikgVDYJhQKlNR0rJkXLoUSBiAWWTKlwmEglgrGPh84quptzYHAheDHB19G2sACRNyEB0dPxwEiRxphggJkhcKlBodCJgCBBdPiQKZmw1QDg1SNiJLsUqvtDZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 sound-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/MzGzOzq7MTCxPz6/MzOzLS2tMS+xLSytAQCBOTe5Ozy7KzSrGx2bJSSlPTy9MTmvHSibISChIyGjKSmpNza3MTixKTenHTabHSSdJyenLSutIS2fEymRKS+nMTKvERuRDR2LOzu7Hx6fJyulPTu9HRydLy6vNze3IyWjHyadJyWnGxqbMTGxJSalJSWlLy2vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaaQAAgIBAMjoRCQcgUGg7QaOGAaAoT0SgCOrA+swdCVNH8QheMhqPxgDQjUcmEUhlYLG4m/GC5YDIaGwZ4TRwHHR4fICEiGQMJeU4HIyQkJQwCGgiQhQcmJyggKQkqCgKRAAYLCSEnKywDLS4DqBwLEi8wMQMyMy40tSwsBgQ1KjMyDgqoAgYcAwoPNhUbN21WQhDa29vY3lZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_c-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3PT29KSi5AQCtOzu7AQCrPTu9ISCzMTGxOzm7AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV2IAAEgjCcRFGIrGgccFwcawsgsQwP9pvTsUTLlyskFAtGq/GDORwPJYvZdECircjvKYEgpK7YhEJ5PCrf7OFpuT4QCAEYYIBYyxeDITKYRxwWDxgWFHwDGXMGCA8aGhGGBAlzAg18CUcKmUk2Igyen5+cojZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_cpp-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7Jya5JSO3Dw+vMS+xLSytAQCBOTe5Pz6/Pz2/PTy9ERCxPT29Nza3FxWzAQCtExKxOzq7Ozu7PTu9OTi5AQCrMTGxFRSxHRyxMTCxNze3Ly2vLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaFQAAgIBAMjoRCQcgUBgzQaMGwbAIOUQR0ahhYn4aEIkGNLprg8HaxYDSajqj8AYm8mXGoJEqf3IUUUBUWFw8PExAYfwCBUAqGdRkHi4GQEBMakhSLGw8WiBoWBxsUA5SeEwcZHKUDHZQaHhwWFh9IIJQhpR0LIgsjI25WQg3FxsbDyVZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_f-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBOTe5Pz6/PTy9AQCtAQCrPz2/Nza3PT29Ozu7PTu9ISCzMTGxOzm7MS+xAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV4IAAEgjCcRFGIrGgccFwcawsgsQwP9pvTsUTLlyskFAtGq/GDORwPJYsJg0SsDkm0NYlFDk+KBCF1xSBPbYXMBTsi8AcCISgDDJIs5GExGCYDdhMOFw8QCBOAAxh2BggWGRl/KAmCDYAJGgqbSHYsDKChoTakpX4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= source-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MS+xJyanLSytAQCBOTe5IyOjPz6/Pz2/PTy9PT29Nza3Nze3OTi5Ozq7JSWlOzu7MTCxJSSlPTu9LS2tMTGxLy2vLy6vAAAACH5BAEAAAAALAAAAAAQABAAAAV9IAAEgjCcRFGIrBgYcFwYawscsQwP9pvTMUTLl0jACgiEYtFiGBowo8HxgDBZzmiMGrmKJNoJAVGgVLwAsMEy5V4OaLDDERFgkgMJmjLPPDQaFQESA3EPEREXBRsbCggccYAHBwyEAwQYcZUDSB0IHh5LNiILpaamo6k2fiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== source_h-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBOTe5Pz6/PTy9AQCtAQCrPz2/Nza3PT29Ozu7Ozm7PTu9ISCzMS+xAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV5IAAEgjCcRFGIrGgccFwcawsgsQwP9pvTsUTLlyskFAtGq/GDORwPJYsJg8AiDkm0NYlFDo4IRYKQumKQZ+RRsZgBXXUkAkEgJm+DJAu5PCIGEwNvEw4Yf3cQJwl5CA8IFgYmAwSMXBOCCRkKnEhvLAyhoqI2paZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_java-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7KSipJSSlLS2tMTCxLy6vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3HRydIR+hISChFxaXPT29GRiZJSOlHR2dERCROzu7Ozm7FxeXGxubDQuNPTu9JyWnExOTMTGxHx2fMzOzMS+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaOQAAgIBAMjoRCQcgUGg4HBPRQoDaF0kQUWj0Mrs+DYto9JJrP8WFBZTQcjybEvKYeIhFJnDnfhiMTek0UBxUWFxYYERkTCHtOBxoVGxwdDw8eH48AhCAVCiEiIw8fFJsGE5IkoQEPFAObFBEhnxUlD0cmpwgKFSe+RygMmwIGryYpDcpvm0yXz9BX0tN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_l-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MTGxMTCxLy2vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3AQCrPT29AQCtOzu7PTu9Ozq7OTi5GRm/MS+xLy6vAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV1IAAEgjCcRFGIrBgYcFwYRCsecUzAdfvmhhkM4QPSEooFo9UwGhyOx5LVNDogkKkoEpM8r5ODFsCFUaCQR0Xc4kIlWMvlEBlj0BTLGhMZjCMOGQ8SEhR9Awh/FhYHdIcECX8NfQgaG5YbSjYiDJ2enpuhNn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= source_moc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7LzGvMTCxLy2vLSytAQCBOTe5Pz27PT29Pz6/PTy9PzWxPzevPzenPTCjPz2/Nza3Py6jPSmXOxmDNR2NNzCrNyiTLxKBLySZOzu7MTW9MTK9Jyi1LzChMTmrKTalLTKpOTi5Nzm9JSq5GyW3DRu1JzOdJTGbGyeLIyedOzq9ISSvEx6zFRynGyeTFx+PKSepMTGxMS+xKyqrKSipKyurMzOzLy6vAAAACH5BAEAAAAALAAAAAAQABAAAAaUQAAgIBAMjoRCQcgUBgzQaMFAaAoP0SgBWm0+s4YpFOEFUxOKBaPZiDoeUAgksma2DZIJpWKBWB51QhdQGBkaGxcRFgeBAIMQHB0eHwgHIIxNFw8hIiMkJSYnBxeNKCkqKywtLi8wFwSNFzEyMzQwNTY3BDixIAIKOTo7PAQ9CbEorzg5Pgo+PmpWQgzU1dXS2FZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_o-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3PT29ISCzAQCrAQCtOzu7PTu9MTGxOzm7AAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV2IAAEgjCcRFGIrGgccFwcawsgsQwP9pvTsUTLlyskFAtGq/GDORwPJYvZdECircjvKYEgpK7YhFKZPCzf7OFJuVYQCAEYYHhCKo8LxRAZzCMOFA9jZScYcwYIFwgZEX0DBAlzAg19CUcKmUk2Igyen5+cojZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_pl-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOzq7OTW5OTa5NzS3NzW3NTS1NTK1NTO1Ozm7Pz+/PTq9MS+xPz6/Ozy7Nzi3LTGtMzKzLy6vAQCBPT69PT29OTy5OTu5MzazLS+tJS+lPTu9Ozi7PTy9NTe1Ky6rIyqjHy2dNTm1MTSxHyedFyOVLy2vOTi5LzSvMTGxJSqjHSedEyKTLSqtLzGvKy6pHyafFSGVKSipHymdIymjDx2PHR6dPzy/MzGzGyabGxqbJyWnMTCxISGhIR+hJSOlNza3MzCzLSytAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAepgAAAAQIDBAUGBAcIgo2CCQqRkgcKB46CC5KSCJEDl5CaCpyRDI6gDQ4BDxAREhITjgMKFBUWFxgZGgkbsI0cCg4OCh0eHyAhA72CsiIVFxcjHyQlJsoAJwoBHh4oKSorLC3WsiguLxkqMDEsMtYcDQkzNCTgNTavsQo3ODk1/jo7eFg7seEGARM9fPxowQOHtQIJgAhIEcQEg4tCrDWawLFjx0sgQ/oJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 source_py-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTq3Pz+/Ozm7JS+fOzu7OTe5LTSpFyiPMTCxGSmRGSqTLy2vLSytAQCBOTi5HyyZPz6/PTy9EzOBGSmPLTOpPz2/Nze1KTGlPT29Ozq7MzSxNza3GSiPDSSBKzGnMTGxPTu9Nze3MS+xLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQAAgIBAMjoRCQcgUGg7QaOGwbAIQ0YSCCiVYF1BG4zmFOprgwwMCLTgikkmTAm1UohbLRc5MYzIPGgcWGxt8QhxRHRgNhB4fhwBpByAJGXoKCJEhgxYYIiMKmSGRC3kYDyMcC6wEpRYToCSrBAMlmwomEwgnC0dumwshtigpEREpcVZCE83OzsvRVn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= source_s-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3ISCzAQCrPT29AQCtOzu7Ozm7IyGzPTu9MTGxMS+xLy2vAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV1IAAEgjCcRFGIrGgccFwcawsgsQwP9pvTsUTLlyskFAtGq/GDORwPJYvZdECirUhMMplIKBCE1BWrPB8Qy2UM0D65EwziEmEbINZrpmKIDNgRDhIPEhVeJxp2CA9zEX4nG4COAwlHCgocSTYiDJ2enpuhNn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= source_y-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBOTe5Pz6/PTy9Pz2/Nza3AQCrPT29AQCtOzu7ISCzMTGxOzm7AAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV2IAAEgjCcRFGIrGgccFwcawsgsQwP9pvTsUTLlyskFAtGq/GDORwPJYvZdECirQhM4pRMIAipK0ZxUB6PSjh7eE7ODwRCIAYYIFaI5GEwRAZ1EQ4WcRQRfwMXdQYIcRgNiAQJgYcDCUcKmUk2Igyen5+cojZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 tar-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MS+xMTCxLy2vLSytAQCBOTe5Pz65PT29Pzy1Pz6/PTy9PzqpPzqnPSWFPz2/Nza3Pz23PzmnPzihNSGDOTKnOzq7KxuDOTi5Ozu7MyCDNSCFLRyDKyurMTGxPTu9Ly6vLS2tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaPQAAgIBAMjoRCQcgUBgzQaMFAaAoP0SgBWm0+s4YpFOEFUxOKBaPZMDgeEAc0EpGsmY2IY0KpVAwRFhZ3QhcWGBkaGxwYFg8HhACGHRUbHhl+Hx+RFxEgFxCJGyFHkR+CAQQVIh4jCAScnp8FJLUlCJwmJgcfBAgnCLecFxcEtygoCidqVkIMz9DQzdNWfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== tgz-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBLy2vJSOlIyOjOzm7Nza3NTS1Ly6vLS2tOzq7JyenGxmbMzKzPz+/GxqbOTi5MTCxPT29Pz23MS+xKyurAQCBPz67PzqrPzmlPSWFPz6/Nze3PzmnPzijNSCDOzu7LRyDPz2/PTu9MTGxOTe5KSipLy+vGRmZKSepJyanISChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQIBQGBAMjMMkgFAwHBAJxYKhFBIa2EPAwWhQlVds4+DFfocPsbiLhSQL2IhE4p0cKJVk2HLBZLAaEXlDG1gSHB0eEhoaH4NCcFgZHiB+HwSPAHAaDXKIHkyZD4whISKTIE2ZBSEREQQiBU0GI6skDwYMJRMmvQGZQxUIAScVxsZVAAFXKCfJSQEpAioLVX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= txt-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/MzOzOzm7MTGxLSytPyOHPyeFOTe5Ly6vMTCxAQCBMw+BPzqzPT29Pz6/Pz2/PTu9LSutJyWnPzStPy6XLy2vKyqrPzevNza3MxCBKSipORqDOzu7ISChNRCBMzGzJSOlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQAAgIBAMjoRCQcgUBgzQaMFwaAoRhoQieoASrM8otAtNCBeMRlbh2B4ebYgwImFMKGJDhWKRz+sPF20OghUTfn8MFhUGFBQTFQiIABgRGRobbIIIkk0KHBEdDAETFpwekwQHHB91DQ0IDQOTAggPIBEhDAcEAwmTDSIWDiAjJBclb5MeHg0JIBgjJiBxVkIQ2NnZ1txWfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== unknown-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOzq7Pz+/MzOzOzm7MTCxOTi5Ly2vLS2tAQCBNze3Ozm/Jya/PT29Pz6/PTu9OTe5AQC/GRi/LSy/Pz2/MzGzNTS/CQi/MS+xOzu7PTy9Fxe/Gxq/Kyq/Ly2/KyurMTGxKSipJyanLSytLy6vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQAAgIBAMjoRCQcgUGg7QaOGAaAoT0SgCSrBis9SoorkAUxWMhqP5gEIicMlkQlkzK1CL/oIxZCR2Qm0HEUoWERoZCYEAgwcPGxwRHR4GjG0TGR8gISINBgKMFXMZI4ckDEWXfxIVGg0kGgMllxQGBhGHCgQICowCDw8ECiYnJigpKIxMDs3OzlbR0n5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= vcard-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7Ozi7MTCxPT69OT65Nz23NTu1Ly2vLy6vLSytAQCBNzy7MTm1Mzm1MTizMTi1LzezLTWtHyafPz6/PTy9Nzm/LzO7Mza9NTe/LzO9LzSxKS2pPz2/LTG9Ozq/OTe5Nza3JyanKzC7HRudIyGjOzm7MTW9MS+xGxubIyKjLzG1HyKrISChKyqrKymrKSipJSOlHx2fAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaZQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSlUYE1koVOoomlYMBgNtOMBiUjIE0rFcsFkNBvOm9nxfD4gHyEiIyR6TR8lJgknBgIoAykIe0IfKiYrBCsKnCwtlAAuKgkrL6UwMDEooDIzJwqlCi8KNAKgAhsFNbs2Njc0CqAGCAopODQsNDQ5wU0oJ0WcD9MPblZCEtna2tfdVn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= video-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3IyKjIyGjGRiZNTO1MzKzOzm7Pz+/ExKTJSSlCQmJMzOzMTCxPz6/KyyrKzOtNze3HzWlLy2vAQCBETeZATCBKSepFROVGTanBTyLEyuTBzWHBzKHJyanFSCXGS2dFTufBTuNNz63BTOFCy+LKTypASuBAR+BNTS1ATeBAxaDAwWDASqBASWBNTW1LSytFReVARqBCwqLGxybHSOdAROBISGhLy6vGSOZOzu7OTi5AAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaiQAAgIBgQBgXD4SBsChEJxWLBaBwSBuczUVAoGI4rVot4KBAQRkSccDgl0UWBMXE4KJTKm+tlWBIPDxd6TRgGGRIUGhscDh0ehEIfDiAhIiMkJSYnKClOGCpdChcrLC0uL5EAHzAKATEMKC0yMzOqH4dyNCw1HzY3qjg5ogw6H8c2qhI7CjwUDBAGMAcOyhJScxA5FDkxqkJeXxXj5Frm535BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= war-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBOTm5NzW3NTS1NTO1MzKzPz+/Ozm7MzK/IyKjJSOlIyOjFxaXOTe5LS2tMTGxLy2vMTCxLy6vLSytAQCBOTi5PT29MzW7Pz6/PTu9NTmzMTmnIzGjGymtGSqdOzu7Pz2/Nza3Mze9JzOpOz21KzipEySxDx+rFyKdJS27FyexMTmzIy+7FSSzDRuxCxaRDx21GSi1ITKdCRWrCRGVNzi9CRevER2zIzCfESOLBQ6bFRihMzOzJSevBxChISChBQ2TBwqTExKTJyanNze3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAergAAAAQICA4cEBQWCjIIBBpCRBQYEjYIHBggJCgkLDJCVjQ2QCQ4GCZ+QD6KZCAsQDAUREhMUjRWRFgwXGL0ZtoyjCBobHB0eHyAgwIIhBiIjJCUmJygWB8wAzikqKywtLi8H2I3bMDEyHjM0DSHZDRg1Njc4OTo7PAPZIRggPT4/gAQRMuTBvgwZBiyQwODHggkR9hEJsQCeJwm0sjFiwJEjhY8aLYkU5CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= widget_doc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7MTCxLy6vLSytAQCBKSipKSmpKyqrJyanIyGjISChKSepPz6/Ozm7Dw6PDRejCxehOTe5JSSlMzGzIyKjCxejDRijFROVKyurPz2/ISGhNza3JyWnHx+fGxqbMTGxMS+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaPQAAgIBAMjoRCQcgUGg7QaOGwbAIQUSl0YH1mqdFE05stJBQLRrPhcDzajQYEEpEwJ18KAlKJWoQQBxcYURkaBBsJC38AHAcdHlEGGh8MDBqMEo+EUBkSIAwJmEISIQYGGacGEqwSIowAFrKztLJqQiMkECQaHBwSJSUmt7gGIwMnKArLaMRNltDRVtPUfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== wordprocessing-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOTm5NzW3NTS1NTO1MzKzOTi5Pz+/Ozq7LSytLSutMTCxKyqrJSSlExKTKymrLy6vAQCBOTe5MzGzFxeXFxaXGxqbPz6/PTy9JSWlKSepIR+hHRydJSOlNza3LS2tKSmpGxubISChLy2vKSipMS+xIyKjExOTOzm7Hx+fERGRGxmbISGhGRiZCwqLFROVJyanMTGxDw2PDQyNHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAacQAAgIBAMjoRCQcgUGg7QaOGwbAIQh4RCS4UOrM8odApdNJ8JRsPxKCwgiUhTAp1QKpbD5YKRM+kJGRobFRwdDX1NHgcYHxAgISIjHgh+TgckCxclJiccJiiWAIsmIwQJKSoiCR6iBhgrLA0bLS6eA6IeFxYnLw4uLiswMa4IMBUyMzMqFSELuRIeEDAbNBswcKJMEdzd3Vbg4X5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= xcf-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBOzq7OTW5OTa5NzS3NzW3NTS1NTK1NTO1OTi5Pz+/PTm9Ozm7MTCxMzCzLy6vAQCBPz6/PTu9Ozi7MzCrJSGbPz2/OTa1NzOvIx+XLyurMS6tHxyXFxSRKSepMS2tOze1LSmlFRKNEQ2LJySnHx+fCwqLNzSxKSajCQiHGReZIyOjFRGVIR6fIRuVGRSPFQ+LKympGReXBwaFJSCdMTGxPTy9Pzy/GxmbISGhLSutMzOzNza3MzGzLy2vMS+xCH5BAEAAAAALAAAAAAQABAAAAaSQAAgIBgQCgbCASFsChOKqNSgMDiFC6n0EBVcGdooQtpwgsMHx+MBcULDiohC0m5OopRwxVIXXqIYGRoGGxwdDX0ACR4HHyAXISIjIiSJAyUmFCcPKCMpKiuJEywtIi4vMCkmKw6JfzEyMykiLzQNNYkJNjcLKzI4OTo7LIkCCTwCPQ4+aj86iU0Q0tPTV9bXfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== 1downarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHTKRHzSRHTWNGzSNFTCHES2FCyiFBSGFBRyFBRmJBReLBRaLBRaNBRWPBRePBReRESyNNzu7JzybKz6fKT6ZIz2TIT6LGTeJEzKHDy6HCSiFByWFBR6FBR2JBRuLOTy9Kz6dJz+XJT+RIT+PHT2LGTiJFTSJDSuHByaFBSKHBSCHBRqNFS6NPT2/KT6dHzyPFTOLES+JDS2HCSeHBSGHHzuRFTSLES6JCyqHKz+fKT2dITqXMz2vKT2fJTubFy+NMTuvGzWVFzKRLzqtHzaZDyqNFzKXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAebgACCg4SFhoeIiYqLjI2OhgEBAgMEBAUGBwgJCQoLDA0ODxCDERITFBUWF6sYGRobHAgdHh+jpCAUISIjJCUmJwUoKSorLLaELS4vIRMWMBgxMjM0NQrHhckUFBM2GDc4OSofDorJOjs8JzE4KArkiy09Pj8EMTMI74xAQRNCQxsKHgGIQKRIhIACARg5gjChQocQI0qcSDGigUAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== 1leftarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBESyNHTKRNzu7Ey2NPT2/JzudHTWNFS6NKT6dKT2dHzSRKz6dKT6ZJz+XIz2TGzSNFy+NMz2vKz6fJzybJT+RIz+PFTCHMTuvIT+PIT6LES2FDyqNLzqtITqXHzyPHT2LCyiFFzKXHzaZGzWVFzWJFzaJGTeJBSGFBRmJFzKRFTOLFTSJEzKHBR6FDS2HES6JBRyFBSKHCSiFDSuHCyqFBRaLBRuLBSOHCSeHByWFBRWPBRmNBSCHBReRBR2JBRePBRiRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAedgACCg4SFhoeHAQKIjIIBA4uNhwQFBgeShggFCQoLmISaCQwNl58AoQkODxCmERITDBQVFhefARgJCRQPGRobmBwdBgYeH8YgIZIcIiMkJRAmJ9IomCkBKisrLNstLp8pIS8BMDAXGzGmKTIzNC80NSmmADY3ODk6OjbyADs8Migo9O2zwQNFD4H7fPD4sWPfIIVAHD4MIrGiKQOBAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 1rightarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBHTKRESyNNzu7HzSRJzudFS6NHTWNKz6dKz6fPT2/GzSNKT6dJT+RJz+XFTCHIT+PJzybMz2vFy+NES2FIT6LIz2TMTuvEy2NCyiFHT2LHzyPHzuRITqXLzqtDyqNBSGFGTeJFzWJGzWVHzaZFzKXBR6FEzKHFTSJFTOLFzKRBRmJBRyFES6JDy6JDS2HCSiFDSuHDSyJBRaLByWFCSeHBSOHBRuLBRWPBReLBSGHBRaNBSCHBRePBRmNBReRCH5BAEAAAAALAAAAAAWABYAAAaQQIBwSCwajwHBcVkMDJRMJqEwMESXB0RCYb0WF4ww10tcNBwIxJgMeEAakQRCMmFTKhBLJHzBkDMaGxscHQUFHh9eICGMISILIyQliVEmJygoKZoqAiteLBQPLS0uLzCeXiswMTIxMCCoXjM0NDU2NzhsADkgIDq4ugA7IDzAwT03Pj/BQsjLzAA/z9DU1AZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= 1uparrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBDyqNFzKXBRmJESyNLzqtHzaZFy+NMTuvJzybGzWVFzKRCSiFFS6NMz2vKT2dJzudFzSLFTOLDS2HBSGFBRaLPT2/Kz6dKT6dITqXFzWJDy6JCyqHBRqLBRWPKz6fHzuRFzaJFTSJES6JDSuHBSOHIz2THzyPGTeJDSyJCSeHBSGHBRqNBReROTy9Jz+XJT+RIT+PHT2LByWFBSKHBSCHBRmNNzu7Iz+PIT6LES2FCyqFBR6FBR2JBRuLHTKRHTORHzSRHTWNGzSNFTCHCyiFBRyFBRePBRiRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAeZgACCg4SFhoeIiYqLigGMiAECA4+FBAUGBJOUAAcICQoLDJqMDQ4PEBESExQVpBYXGBkaEhscHR6KDRYfFwkgISIjJCUDrYe6GBgJJicoEiMpKissLYYELhgXLzAxMigRwjM0NTbVgwQ3EMkmODneIjo7MxQ8PT7mAD9AQUJCQ0Q6itAzUqxChSMtkGxayLChw4cQI0o8ZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= 2downarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHTKRHTWNGzSNFTCHES2FCyiFBSGFBR6FBRyFBRmJBRaLBRaNBRWPBRePBRiREyyRNzu7JzudKT6dKT6ZIz2TIT+PIT6LGTeJFTSJCSiFByWFBR+HBR2JBRuLBReRESyNPT2/Kz6fJz+XJT+RHT2LES+JDSuHByaFBSCHBRmNEy2NKz6dJz2bHzyPDSyJFS6NJzybHzuRFzaJFTOLES6JBSOHKT2dITqXMz2vFTONDS2HFy+NLzqtGzWVFzKRHzaZBSKHDyqNFzKXCSeHCyqHFzWJDy6JBSGHBRqJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfjgACCg4SFhoeIiQEBAgIDAwQFBgcICQoLCwwNDg+DEBESExQVFhcXGBkFGhsHHB0eH4QgIRMiIyQXJagmJygHKSqxhSshLBMtFS67LxoHCp2HMLQsMTIzNDUnNh4NiQDSIjc4A9gnCt2Gi40CMDkTEhk6OwcNmZvQAJ8S1CM8PRI+fmhQwArBK2GCZtW6BaMHEBAKTrAKEswQsQkTYlQQMsRDjR1EgsBCJI2FiGpCMtQoIhIdyRDhcBihcaQIN2+C2t2AR2MHEpc4/QEUqABnoYYPixotxDHJ0kNCnkqdSlWqgUAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== 2leftarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBESyNHTKRNzu7Ey2NPT2/JzudHTWNFS6NKT6dKT2dHzSRKz6dKT6ZJz+XIz2TFy+NGzSNMz2vKz6fJzybJT+RIz+PFTCHMTuvIT+PIT6LES2FDyqNLzqtITqXHzuRHT2LHzyPCyiFFzKXHzaZGzWVFzWJFTSJGTeJByGFBRmJFzKRFTOLEzKHBR6FCSiFDS2HES+JBRqJDSyJDy6JES6JBRyFBSGFCyqFCyqHCyuHBSGHDSuHBRWPBRqLBSOHCSeHByWFBRaLBRqNBSCHBRuLBRePBReRBRmNBR2JBRiRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAflgACCg4SFhoeFAQKEioiJA4uCAZCOgwQFBgeCl5mVAAgFCQoLn6GjlaAJDA0HqauaiKkJDg8QobMPEYgQEhMMFBW8vsAWF4cBGAkJFA8IycsPGRobhhwdBgYeH9bY2iAhICKFHCMkJSYm5OYnESjuKCmGKgErKywn8/Ys9yctLocqXsCAgSCGjBczaNQouMEGIhU3cOSAoUPFjhw8KOJQ4aiHjx9AggQR8jHkyEoed9y4IaQHxJVCPAkZcoNIDwA9ihBxYcQTgCNIktz8WUSoTwBGkPQUBHSpTyVOfyo5SrVqIQOBAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 2rightarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHTKRESyNNzu7HzSRJzudFS6NHTWNKz6dKz6fPT2/GzSNKT6dFy+NJT+RJz+XJT+TFTCHIT+PJzybMz2vES2FIT6LIz2TKT2dMTuvEy2NCyiFHT2LHzyPHzuRITqXLzqtDyqNByGFGTeJFzaJFzWJGzWVHzaZFzKXBR6FEzKHFTSJFzSLFTOLFzKRBRmJBRyFES6JDS2HCSiFBRqJES+JDy6JCyqFCyqHDSyJDSuHBSGFCyuHBRaLByWFBSKHBRuLBRWPCSeHBRaNBSCHBReRBRePBR2JBRmNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfpgACCg4SFhoQBAoiKh4YBA4wAj5GNggQFAwaWmJqVggcICQqaoKKdlQsMqgoNqaunhwsODwwIoxAPCLawhRESDhMJCRQNwAkIxI0VFhIXEwwYGQbOqhkahxscHR0eHwUFICHd3+GGIiPoJCUlJicoISUL7e+FKSorLC0RLS4CLy0A+70wBKNChBgxDMiYQaNGDBsLBxp6cQNHDh03dtDgkQMHjh0SDfXw4WPGDyBBSAo52aNSjx07TgZ5CROlpyE7iLwIAiBIzp2eegIBUkSQkSNIigY1QnSQkRdKgxaJCmBq0KtYsxaiEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== 2uparrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBDyqNFzKXBRmJESyNLzqtHzaZFy+NMTuvJzybGzWVFzKRCSiFFS6NMz2vKT2dJzudFzSLFTOLDS2HBSGFBRaLPT2/Kz6dKT6dITqXFzWJDy6JCyqHBRqLBRWPKz6fHzuRFTSJES6JDSuHBSOHIz2TBRqJDSyJCSeHBSGHBRqNBReROTy9Jz+XJT+RByWFBSKHBSCHBRmNNzu7BRuLBR6FBR2JHTKRHTORHzSRHTWNBRePBRiRGTeJFTONHzyPES+JKT6ZIT+PHT2LFTSLIz+PIT6LES2FCyqFGzSNFTCHCyiFBRyFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAffgACCg4SFhoeEAYiLgwECA4yIBAUGBJCRhAcICQoLDJeYDQ4PEBESExQVoRYXGBkaEhscHR6MDRYfFwkgASEiIyQDqoe3GBgJJY4mIicoKSorhgQsGBctLpOVAyMvMDEy0YMEMxDGJQcOEJ0MNC8UNTY04QA3ODk6OugJpacUHhUVdqzgQYyVK1gb2NVadOvCh109fPwiQWOYoWLHSvzoIQFIMwrgpLFoFcSFkCE9iPxyB3IegHHlMJQoYgRliCNI3MWgIW9QvXtJkig5suQdE2EABRLExLSp06dQBRkIBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 airbrush-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIQAAPwCBAR2BMT+xATWDAS6BASWBGRiZARCBPz+/Dw+PMTGxKSmpJyenIyKjHR2dFxaXNze3AQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVjICCO5BgIQ6kC50CsZEsUomGXcnEABuInJtRsx0MoFkCWUDfqKRjAHLFmbCSkKsPC8VhOSQaIIcEYRgrokg3SGKMPcBoVshgD4CN5j25VMXl8SSR/BQMLfSV/AAMFCYKDU34hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= attach-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBMTCxPz+/DQyNKSipAQCBISChFxaXDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARyEMgJgqA4zzus/gJhFYX3UYIxlAJpnuEgsUV3gUFB0fZnHZIbjaU5eIiA4YvS6yVHSIxSCF1ObDXTVIN1bjNYJDG6qwqpN0zXYwhMAkDuqBPIvWWfIYkSwH+cGH0nEoB3g4RWgodPAo2NiosDkpMIBQYRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= babelfish-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAAT+BAQCBAQCNAQGLAwCVAQ2fBQSBBwaHARyxARyzCxi9AQaJARKpARSrIzG/JzS/Gy6/GS2/DSe/ASa/DSG/Pz+/DSW/Kza/BSK/ARmxARi5OQWBJQOBAwCBAwKHFS2/MzW/FzG/ASm9AxC9PweBLwSBAQGBHx6jNTW3Gx2nAQeZAQKTARSvMQSBExKTLy6vGRefBQWHEwCBOQCLAwOBGxqbJSWnBwONCQGBFwOBOQqBPyCVPyKfPzGtHRydERCRPxmNPyqfPxWNPzSJPS2BNxSBBQSDDw2NEQKBPz6/JwWBPw2DPwmBPziBPxONPxyTPyeNPz+JOTSBNQWBPymfPymdGwSBPz6PPz+LDw6BJwOBPxmTPxCJPwuBPyGFPz+FPTuBBweBPxePPwyFPwqBPyODPT2BOzuBGx+BFRaBFxmBPxmPPxuNPx2RPxmROz2BEROBPT+JPz+HLzGBExOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4MBhoQAAgGIiIaLiAOHjIUBBIyOk4KOj4MFBZKThgYHBQimBQkKmIwLDA0ODxAQERITFBWbnAAFFg8XEBYYGBkaFRUbHB2gAB4fICEiCBkTCCPGJCWTJicoKSorDCwY1hUkLZkuLzAxJgEyJTPX2JM0NTY3ODkBOjs8PeXZJh3w8cPRDCBBhAwhUiQgAF1GjhhAUiFJACVLmDQh4lBXCydPchgLgIsElChSaGwiNIVKFSvGRpK4giXLSkJatnBhQhJXFy9fwIRZNkiLmDFkmCgjUcbMGTRpMgFQc2UNmzZuonx5AwYNHKlT48iJIgfLlzNz1EQFO1WNWzhwEOikWcuWUAADuuo+JMrWQCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== back-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHy2hIS6jPz+/HSufPT69HSifOz27NTuxNzu1Iy6jHSqdHyudFSKXKTGpOT25Nzy3MzqzMTmvOTy5Pz+9Ex+PPz6/ESCNNTqzLzmtNTuzMzqxLzWtDR2NOTq3MTmtOTy3NTq1MTixLzitLTerKTWlJzWlJS+jDRqPLzSxHzKfMzmzMTmxLzetKzepJzSjJzSlIS2fDRmPKzCtDRyNERuVISqhIyyjKTOpJTKlJzOnJzKlJTOlHS2bGy2bGSuZFSaVDReTHSOfFyaXER2RFSSVGSabITGhITGjDRORFRyZERuRHS+fGy6fDRWRDRWTDxiVDRWVDRSTGSubEyuZERmVDRSRDxWTDROTDRaVDxeVERyVEyeZDRiTDReVDxiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfegACCg4SFhoeEAYiLgwECjIsBAwSQh5IFBpWFkgcImZqClwkICgsMDAsNAA4MqpsDDxAREhMUBRQTFQAWExevBwkYEhkICBobHB0AHh++jQMgISIjJCMlJiYlJygAKSrKoQMTKywtLiQuJS8wLzEyADMqNIQ1Njc4OTo7PD0+Pz9AggAQMoQbISJFjBw5guQIECJEUKBIAkDJEoGFZNRowIRJkwpOQj6hCEVGlENSoBCZQqVKEitJrmABkEULFEQpt3A5CWpQEig1svQkFKWLl6GEvnxBSkgL06dM6QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= bookmark_add-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBFxaXERGRFRWVMTGxExKTKyqrKyurKSmpJyenFxeXGRmZHx+fJSWlPT29Pz+/Ozq7LS2tMTCxLSytISGhPz6/Ozu7Ly+vLy6vAQCBHR2dFRSVJyanIyKjGxubIyOjOT+vKT+LOTi5GRiZHzmBFyWBHx6fCxOBHRydLT+TIz+BHzeBLT+PCQ6BDxuBGzGBJT+BEyGBCwuLITmBGxqbFSOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBwSCwGisikMCBQOoUDQkFpqFoNB0RCQSAIFowGgmhwPM5nB4QbkRTCEwrxYEZX1oTJQSIYFASAQ2V2FgF5CBMXFxgXBhlzZhV3XAcUCVUIDRoZG2QOkhABEgYRGBIcDR0eGQGdQ3QOhRcIDAsKCxoUqwMeC2QQobMHERcTCBQLGbwfICFDCCIBGAgaIwMjHrXKHh3NJCVCWxEJCAcYBwkmI9vdId8nQgoRHCgKGwogKQrbFPnvUBEaUCCFIJ+KFQG4gWCxogQ8AAomCGTAQEELFy9UwFjRjkSMEwyGyPBgoqQGDxczqmg24+MBE0RkKDhJY0CGlCpSeDxx4IAGICIeZGxYsCGDAIsYV9QAaRKJ0CIXHT5x0uLh1KtFDAQBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= bookmark-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBFxaXERGRFRWVMTGxExKTKyqrKSipFxeXMTCxGRmZISChJSSlPT29Pz+/Ozq7LSytHx6fISGhPz6/LS2tLy6vAwKDKSmpHR2dAQCBFRSVOzu7JyanIyKjGxubLy+vHx+fGRiZOTi5JyenKyurJSWlHRydCwuLGxqbBwaHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBwSCwGisikMCBQOoUDQkFpqFqrhwMiQRAoFowD0dBwmM2NxxaSKEQYEAkRUj471AkIWzAQ+McNE2YTeBQHbBUJCQcWgA4ThAEEEAsHBhcXDBgZGoCQGwEJBhCJHAwdHhkBA3MNDRsDHwYgCggKGB0KGQMYIWMPoIujFRAHC7oDHgsYRAciARUHGAoDCsrIHh0HIM0DFSMXJBUkHLS7GJWzRN6aCBoKtwjnCyOjC0MDEBwdFxAXJRjkJatEQg83AAEglJAAAkQABSYG7MpmSQ+ECENOeMAQIQIGFANSDDDRYURBPSSYZUSAYZqGiRJMWoSQEsm7lwIQeACxoEOHDwUgWqos0umJ0aNIkRoIAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 bottom-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFyKVER+PDR2NDRqPDReRDRORDROTDRaRHSmbPT29LTWrJTCjHy6dFSWVCxuNHyudNTuzKTanJzSjGSuZERuTPT+9MzqxJzWjGyyZDxyRDRONJzOnHy2jHSuhGyedIS6hOz27KzapEyCVDReTDxWTDRaVDxeXDxaVDxmZPz+/OTy3MTmtLTirLTerJTKlHzKfGy6dFSubEyeXDReVHy6jHzChHS+fER2VDxWVER2TDxiTNTu1MTmxLTarIS6jNTq1MzmzKTOpGSabERyVMTixIyylEyOVOTu5ISqhESCPER+NDRmPDRaTFSeZDxeVKTGpPz6/Nzq3LzSxHSOfExuXERmXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfMgACCg4SFhoeIiYUBAgMEBAUGBwiKgwkKCwwNDg8IB5WCEAoREhMUFZGgAAkWFxgTGRoIG6qiERgcsQgGiB0dHh8JICEXIhObIyQlJicoKYQgKgorESwsLS4vMDEyMxU0z4U10hHVLSIcNjcyOAU5iNGj1S4cDDc6O++J4wo8PT7aAuQD9UNFCCBBhAwhYkIVgHErihg5UsChoIJIkuiwOGgcLY6DKHEMoGTJgwdMNjRpUmsFCxgwnKB6ogpKFClToFCpYoUEyJ8cDQQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= cancel-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAASC/JxaVJxSTKRSTKRORJxORJRORIxORIRORJRWVMxyZNx6bNRyZLxaTKxaVIxCPIxGRHxCPKxiXNRybNxqVMxiTORaRMRWRLxiXIQ6NJROTIRaVMxmVNR+dOR6ZORKLNRCJLROPIw6NKR6fKxqZPyahPx6XPxOJPRCHNRONNRWROxKLPyKbOQ6FMRCLLRORPz+/Ow6FKQ6LLxWRPRKJLRCLKRGPHw6NNxiTOROLMROPIxWVJReXLRmXLxeVMxeTMxaTKxWTKRKRHQ2LGxWVJRiXIxqbLR+fKxeVIxSTFw2NGxKTKRuZNSGfGwqJGRSVJR6fIReXDweHDwaHEw2NGxaXEw6PGxiZJSGhEw6NFxKRFRGREQ6PFxeXKSanJyOjIR2dHxubIR6fFRKTHxydIR+fGxqbHRiZFROTGReXDQyNIyKjJSSjHx6fFxaXFxWVERCRFxSVFRWVDQ2NDw6PCQiJERGRGRiZExGRFRSVCwuLHx+fCQmJGRmZBwaHBQWFCH5BAEAAAAALAAAAAAWABYAAAf/gACCgwABAgMEBQYHCISOhAkKCgsMDQ4PEBGPjhILExQVFhcXGBkaGxubABISHB0eHx8gFyEYIggjqY4kJBMVCyUmJyggKQQZD6qCCiorJizCLS4hGRnKAC8WHycmMCcxLjIy1soEMyk0J8MgNTYZN9cOEzgWOTkpOg0PGTs7qjwSevho8ANIiCBCJAyJMILIoyJGjpAYgMTGDBEDDCRRsuTaESYbIjxo4mThDiVKrj2BEmWJFClTqCypQsXKNSJXiGDJIoUKES1buFC51sWLly9YwIS5ImbLmC5XVF0hUwaMmTNotlxJU0YNmjVVHnUBw6aNmytv4KCJk6aLV6JtQ7rImUOnjh04d9SouQanzRs8edbUUQPH7V5lcOTIuaOnTh04cOio0XMNABwxe9zQgayHT53KgvqYMdOFjh4/fzYZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== colorpicker-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBARiBMT+xAS2BATKBASeBARGBGxubPz+/LSytNze3IyKjERCRAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARZEMhJ6wzBahvEyNvWEcMXcgJBFuApjWtguACWxrML4/QrFANWjnZAJH6FoauoSCwEsh7TyQAoQ9NFtQfIbqWIppbbDVPJXrR5zE2311+pOE5cJBj0er5niAAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== configure-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBKyurKSipKyqrOzu7PTu9NzW3IyGjNze3OTe5MzKzMTCxLy+vLy2vKymrLSytNTO1ISChHx6fKSepIyOjJSOlJyWnFxaXGRiZGxqbExOTCR+PCzOXDyKVHRydCSmRJTqtByqRDSqVJSSlLS2tByaPDyiVIyKjCyKRBy6RDyWVDw6PDRePER6VFRSVFxWXEyCXFyCZFR6XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaiQIBwSCwaj4CAYIBsCgkFwwGRUDiLi8VAwGg0FIirUOA4CJTnB0QciUgOE8rhULGEnRfMBXDYi48ZGn+AgoNFgYaHhU0KjUUbHBsdAI1WRAoCFR4NRB8gISKYBx4jSB4BJA0BJRwlJhliGSdzESgpGyqwVxorvSsbIZJ+Rg8HEhcrRCwlLC0rLhgZL0W+RSwdzQDVfyww2YkALDEsMuDm4AZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= connect_creating-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBISGhPz+/JyenKSipDQyNPTq/Ozu7OTm5FxaXJSWlMTGxNze3OTi5LSytAQCBNza3NTW1MzOzJyanMTCxKyurLS2tIyOjNR+/NSG/Dw6PLy+vKSmpGQGxGwCxHQCzIQC1IwC1JwC3Mxa/IyKjHQazHQKxJQG3HQaxIw+1Nyu9JwK5KQS7Kwe9FwCtNSK/GwWxHQWxJQi1Iwe1KQW5HwezLxu5MyK9Kwm7Kwu7Kwy7JQe3KQm7LRC9IQW1Jwa5KQm5LxO9JQS3LxK9LRO9JQO5KQa7LQ+9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFAYWIiYIBAgOKhAGRg4wEBY+LApmHjAOWl4wGBwgClJ6PCQoJCwgIDAIJpooJAg2pDgwPEK+XswcHEakDERILu7KsrAsDCRMUFRQJjwUJEQwQERapFxQYGd7ehRoaCRTEGxypGB0eHyAhIiOEBRrQFRYVCiQYJSb9ICAnTsQbpKFRggETAmQogSJFJgEqVrBo4ULQLA6wEgRI8AJGiRgyZggwQKMFRQCzOs0bpyEDDBQ1ZtgQcANHDh0uUnqaV6DAwpg7MvHQ0aOHi0axBmXwwZTGDyBEgwSpmHTQDRo+hAjJpGMIkSEVL41YUaSIER1HiBAJewnAWCNDDdWybevWhV27dPPSCQQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== connect_established-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBISGhMTGxKSepPz+/IyKjKymrDQyNIyOjPTy9Ozq7FxaXMzOzOTm5KSipLS2tOTe5FxeXNzW3GReZMzGzNTO1Nza3Dw6PJyanLSutEQ+RJSOlPz+xLy+vPz+zJSSlCH5BAEAAAAALAAAAAAWABYAAAXPICCOZGmaQVoGwnCOASEXMGEcL4AQiaIQAUCBMMC9FocFQ9FoEIYO42lBaCQfCogTmYvwFJLD5NGQQAiL3KLha1CSBkmFgX5NFpL2e2GwMOhpJgsXeGUSexgCGW8nBwcaCwIVFBIPSRsUCxocjQeZGQ8UHTcLgwdAJxoEDgsDDxkYBQcXp5yCRIOtGAFIBxwEHAi2Il5RjoQFpgAEHsAbJERGs4QXzRy/MtcAnFEkjho4zxu/Hhsfzwg5JMHs6i8fHB8Az+4nNPUnw/goJXQhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= connect_no-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAASC/ISGhPz+/KSipJyenDQyNOzu7OTm5JSWlFxaXMTGxNze3Dw6PLS2tAQCBNTW1JyanMzOzKyurLy+vIyOjMTCxOzq7PyShPyajNTS1LSytMQKBMwOBMwWBNQeBOQmBPRmTMwWHMQSDMwWDPx2XKSmpMwaHMwiHMwmFNQqFNwyFOQyDOw2FPRCHLQCBIyKjMwuJNw2HOxCHOxKLPyahMQaHOxGJPRONPReRPRiRNQmHNwuFOwyFPRiTOwuDPRCJPRaROxCLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFAAECA4aGAY2DiAQFi4SIAgIBh4mSk4KIBgcHlwKRnIMICQqgC5ebpQAMpw0LDg8CCa6CBQwQCQQPEQq2k7eCDAmwCRAKEhPEhQkGC4MFx7wUFQmtgwkCnxHTx6fZ2oIJCxagCoPGBRcYGBfxhNQZB78a6xcbGxwdHh8gphmrAKyCIgAXQogQMeLfhw8kcjHAJqFBCQQBEpo4gQJFChUrWLRwkWtULwgvEmAIgcISjBiWZMwgyY3AsQQBjtEwUQOGJUs2btxwUbOAUXYFMJhAAYOFJaE4crgYtUkXA0kYUOjY8VMADhAgXAwgN+jCDq4CeMywBKKHC7KEHUjw8MGCxw8gbUniIkE3yI0eYXENIuGicOFBBgIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= contents2-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAROdBx2rBRunDSOvDSGvCyCvBRynEySvDyOvBx6pBRmlARijIy+1Hy21GSmzEyaxDSKvBx6rBRypAxmnAxilKTK3HSy1DySxBxypARahMze7IS23BRyrARCXIS21CyCtBR2pAxqlARilFyexFSezAxqnARWhARWfARSfDyOxBRupFyClIy+3ESWxAxmjARejLSytLTS7AxunPz+/AQCBMzKzIyOjERyhDRmfAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbNQIBwSCwaj8ikMhBQIpmCQdM5ZBIKhoOUykQkCAbFYMGYHpkNxwOCiEgmFErFXA2kLY7LGiMRUDIMGnRMG3ccHHsSHYCBgkMehA0feGsEICEDIo1MQpAjAYUkDyUQBG8mJgwnKExNkClloRAqBhIrIponKSkBLJ1MFKAtLiCnLwwwKCksMUSQAcEyDi4TMyLJyzQ0zc4eHsEbLQea2drbNUUeu7Et5do2NzgeRs8MKTnmNPDySc8e5vvmOYH0LyCVRx7iCTyIkKFDInaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 contents3-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAARqjFxeXPwCBARCZAR6pARKdGxqZHx6fGxiTPz6/KyqrOzm1HRqXPz+/JySjKyinPz69HxqXOzaxPzy5HxuVLSmlOTazPz29AQyZPTy9NzClPTexHxuXLSmjAQmVHRmXKyehNy+lPTy5HxyXPTy7KSahOzexIR2ZOTWtPz27KSWfPT29IR6ZNzWxPTu3KSSdNS+lIyCbJySdPzy7Pzu3Ozi1JyKbKyijAQePPTq3PTq1JyOdAR6rOzWtMy6lMS+rNzOrOTOrJSGdMS2nNTGrNTCpNzKpJSGZLSifMS+tLyylIx+ZHx6ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAWABYAAAf/gAABAoSFhoeHAwSDiI2HBQQGjI4CBweJBAgJk4cHCgsIjwQMDZuHDg8LDRChhoqkpZMOqgmlCAUFA4SQEQ2+pg4SE78JFBUWFxgCr76+GQEaG8O+EBwdFhkAHpAfzQ0XICEbIhC+FyPXJNrMzSQlGiYTCRAQCScdKCnavN4kKvATIFy4sIJFhxYr1o0qleCCixcwpKWglyLGQX3bCHxIwZHEAhniRKSYkSKDRWwKGUwQQYNGDRsRRUzIMIGEjRsW1HnAkQlFDh06JOzQIEwECRITZFzUJgAHDwA9akhAYUPcBBcTfMi48QOlB0I8AQDpEURICBMLLMioMISIhQUYQwuFLWLkSEQZSIa8hZChJFO5BAD4OKJhBxIiP5Ik+cFYyV/AAJYcYcKjMg8Cly8T+HooLIDNHkKLHt0Ih2kclAgZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== contents-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBOzq5Pz+/Ozq7OTe3PTu7Ozu7Ozm5NzW1KymnIyCbJyenNTKvNTSzLSunJyOhMzCtMS+tLy6rLS2tMzKxPz29LSqlFxSRMTCxDSK1IyWrMzO1OTm5JySfFxSTJSKhMTCtNTW1ERedCRqrDRyrNTKxLSmnJSKdExGPIyKhExKRCyGzDRytNTOzMS+vJSCbFRKPKyqpPz6/DSO3MzKzJSGdCxyrPTy7Ly+tIyGfNTS1ExOTKSelOzi5JyWjDR2tMzGxJSSjJyWlKyurDx6tIx+bGxeVGxmXHRybEyCvGxubGRWRHRuZKSinFSKvGxuXFRWTGRSRGReVESCvIR+dCxKlBxCnBQ+nBw+nDRShDROdBQ+lDxGXDxWZCx2vCxytGRyfDRWlAwyfDRGbBQ2hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SDAQIBA4WLiwQFAgYHjIQICQqCCwwGkJKTDQQHDA6XDxAHDREEEhOFFA0FFRWoFhelCQIHBxgHGYIaGwYcBAgUFBAdHh0fGw0YBCAhIiMAJAUEJRIhBhQmJ7URtwcGESEovSMVERgIDRsYECcoHykUISAIGCEqKwAsBy0UXCA4wO0FjBMRYsgwMECgihkA0Klj5w7CC3kfaISIgK8cP38AOQ5gYKIGCoQKI7kggAKijRs41rV7d/FDDgkVDrhwoWPHRw4NAiIYwK0GjBoRdC7gsa5lxAoS8sXqYfFk0hQ+FqzzCeAHUAIcCsjoAcQkwiBCFgyhwBIikQIcbnogkCAkR5GaRowcQZLCGdckFVT5QKLkyIWLJ5bsPcKkSBOnTnw8OQIFhQoUKKLAiIK5sxQpKPhNoXLEchUrV7BkgaIFyxYrVbig2NHFC4AvR1SAqRJmkJgxWwaFqSKGjJePLFjYnsS8uXMAUAIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= decrypted-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBKSepLy+vMS+xJyWnNTW1PTu9Pz2/Ozu7OTe5KyurHx+fNTO1IyGjJSOlLSytISGhOTm5FxaXKSmpFROVHRudHRydLy6vMzGzKyqrHx6fIR+hOzm7Nze3GRmZMzOzLS2tExOTNza3MTGxHR2dLy2vFxWXEQ+RBQWFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbBQIBwSCwaj8aAQDAQEJDHQMFwQCQUC2iRIWgsGo5HQDuERBrEgEJCBjgi2aFiQjlKFmqBglEpOuwWARcYERkDFhZkEhobShwHHQoODR5aFRsOChFVCR8gGyGWeAoFXGIOHmxQCw4BHwYRIp4QEqFQmAEjVgwDAbR1UBatIwYJXFi1tkckELkIsiUBGxImJ1AazSUcIhjRC7XWSB4NzsYj0hInKFoWBCARBRgPBBYh62QeAQPdGQ0m920CChxIUAidIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 domtreeviewer-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBLTGpLS+pJyurHSSxFR6vCxarLTKtMzavLTOnKTGjJS2tFySvHSmrFSOpDR6VKzSpLzirNT2nLTmfKzadIzCdHS6bGymzGSmpFymXESaJHy6dNTutOT2zNz2vJzWZITGXGSmjEyGxFSOzFSajEyiPCRiRDx6xGy2fNzmxPT27MzyrKzihHy2rEyC1ER2xEx6xDx6nCRSdBRKNGymjKzSlOzu3Nzq1LTevDxqtCReRBxSDHyKpPz+/GSahFyWrDRitCRaZBRGFKSepKzSrIS6hNza3Pz6/DxilEx6pER6xBxGdCROLGRiZKzOrGyqbKSypMTCxLSytJyenDxWhExytFR+zBQ6hJSWlISuhGSOZKyyrOzu7OTi5ExiXGSKlFyCxCRKnBQ2bBxCTExyNGyaVEyGhCxatBQyTBQ2JMzizMTexPz2/DxmHESCJBRCjBw6XAQeRIS2hLzGvPTu9DRuJBQuZAwiVIyGjEyOTKSqpLSutLy6vJyanDRWJAQOJCRCJCxCVCQ2bAwWNAQCBAQGDAQSJBQePAweRBwyNBQuFAwiNAQKHAQKFBQmHAwaPAQGFAQOHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGDCBMaDCBgAIECBQwoHHgAQQIFCxg0IODgwUQIESRMoFDBQoULGDJoSLiBQwcPIj+ACCFiBIkSJg6eQJFChYoOK1i0EOHiBYwYMmYYPEGjRgobNm7gQClCRI4cOnYU5NGjq1evPn7AOAEkiBCtA4f0IFLEyJGvSJLAUAJkCRO0Apv0cPIEShQpUab0oFIFhhUDV+4SxNIji5YtXLp0MdLDyxcwQMKIGSNk8dfPZMqYOXNFDJo0BNWqWcPmcxs3D96IgROnoN41cubQYcOGTo8ddWaIEWPnTkE8PZ7k0RNlD58+PfzMgDP8zp+CUT5/BRQIjqA7gwgZMoxSyNAhROgTKVoU504cRoTiI2w0aFCcRY4GPfoDKb78hI0UEgkkBPon3kQIJoigAQEBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= down-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBGSOXESCNDR2NDRqPDxeTDRaRDxiXHSmbOTy5LzitITGhHTGdFyiZDxuTDxmTDRaTKzKpPz+/OTu5LzSvKzCtGyOfERyVDxeXDxiVER+PDReRDRORDROTPT29LTWrJTCjIS2fFSWVNTuzJzSjGyyZPT+9KTWlHyudPT69GyybER2THy2jHSuhGSabHymfOz27MzqxKTanJzSlHy6dEyCVDReTDxWTDRaVDxaVIS6jNzy1MTmtLTirLTerJTKlGy6dFSubEyeXDReVDxmZHy6jLzmtKzapJzOnFyqZDxWVEx6XMTmxLTarHzChFSOXMzmzKTOpER2VMTixIyylEyOVISqhEx6TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfKgACCg4SFhoeIiYUBAgIDAwQFBgeKgwgJCgsMDQ4PEJWCERITFBUWFxgZoKuKARqQBBscHQarCB4fICEiBAYdthIjJCQlA762JiMnxL0cqygpwiQqKwbOhyEsLS4vITAxMjM0IjU2Nzg5GJSDOhIwOyM8PD0+PwtAQUIXQ0SGRe4jRhjpcQSJpiQXNihB1C4FPAU+DAJZsiGHon8eRjBp8sPJE4Wg2sEYASWKCykLV/2DMYVKlQ2sBLWbYOVKzEH/LtwkpGPnTQOBAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 editcopy-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBKyqrFxaXPz+/KSmpJyanKSipPz6/GxubPTy9GxqbOzq7OTi5PT29LSytIyKjNze3Ly6vNza3IyOjLy+vMzKzMTGxMTCxISChNTW1KyurNTS1Ozu7OTm5MzOzJyenHR2dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa/QEBgSBwKAMikMhkYOJ+EwnFJNTyfTSl12bwOmgftFtm9BhAIwXRcxgYI76FhnbR6286AmOn99gNhdHh+d057eAmDZwpqdVcJC20MAw0MDg9rTQmUCxBtVg2QEZmcDAwSXQQDEwkECwwUmQsVFRYXEWUTDxOvEqNJGGlqak0GugkTEwaWdFRdB7sPpxkazUtWBwYLExAGGRsB1kqACRwdBhIZHhUE4kwL6hcWEQ4OAXNjSB8gjMP+7vkCChxjJwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editcut-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBxihBxehIyOjFxaXFxeXBxafBxifPz+/Ozu7Nzq7PT29OTm5Dw+PGyWrFSKrDyCrBxefBRmjPTy9JSSlKSmpLy6vISGhHRydCx2lCRedOTm7AQCBGRiZExOTExKTLSytCR+rNTe5CR6rMzW3GxqbJyenKyqrKSipBRijMTO3JyanLTG1Pz6/KyurBRihKS+zBRejIy2xBRmlHyqvMTGxNze3LS2tHSetMTCxOTi5Nza3GSWtLy+vBxejESWvCyKvByCxBx+vByCtBx2pBx2rOzq7BxahNTS1MzKzMzOzHR2dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAABAQIDBAWHhwYHAgCOj44GCAkKBQgLCQkMDQ4PEBGQjxITCAgUFRYUAxcYpRkaoY4RG6UcFB0eHx0gpSGNsQIipcPEpSO/oREkpSXNJifQ0ScoBKEpKsUIJ9knK9WPESzMztsILeYILqbfAC8w3Ogt5yil3o4xMqUXAyYg2+fntGEoQeDbDBrcagAstcDGjQvfUuAoVSFHDh0nOig0t2BCjh05vgngAa9EDnkTamjs8c3HD3gtStRYkKMEA5PfYgAJImTIECJFysWsUcKICA4d2B05ICGGjxgB/rVY0CGBkR07XLCLBUDdgo4LGOhAgkQr10f0jGQyooMEkiQVH7bGOnFVSZIcFm64cEHtrCMUS5IWHDzYr+HDiCEZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editdelete-22:actions actions22 22:photo:22 22:R0lGODlhEgAWAIYAALy6vLy2vLSutKSepGxubASC/LS2tPTy9Pz2/PTu9Ozq7NTW1MzKzKyurJyWnPz+/Pz6/JyanGRiZFROVFRSVPzqzNTO1ExOTPTq3PzKdPy6PPy+RPy6XPy+dPTizOzu7PTWnPzOVPzOXPy2NPymJPySHNyuhNze3OTe5PTKhPzafPzqrPzehPzCTPyaHPyCHNSOjPy6NPzWZPzqtPz23PyGFOxqRLyirPzChPzqvPz69ORWNMxejPyiPPzKVPzefPxyFORGNMRCfKymrOzm7PyOFPzGTPyeHPxuFNwyRMwibOTm5PyKJNxGNNQGZKQybOSehNwWXLwCZJxGfJSSlMS+vPRmHOxeLLQCZKwCXIRidLx+lNwmVNQeTJwubISChLRijLQKXJw+bHx2fMTGxKyqrJSCjLwudKwKZKQWZISGhKSipIyOjIyKjPTm3HRudFxaXFRWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAUALAAAAAASABYAAAf/gAABgoSDAQIDAgQFjAUGBwcICZCSCgsMDQ6LjAAPnp+eEJICD5qMBqCpng0PCRESBZ2qoBEEEhMUjqoJFRChEAoWF7GgGBkaGxwdHgkfCQ8TuhAQICEhIiIjJCUmJycow7IpISorKiwtGi4vMBYL0QYQGDEyMzQrKzLaNTY3wrEJcLRg4WlGDhkPdNTYwcMAvAQ9Rvj44UmFJxdAgggZEo5IERIaWhj5dKQGkiRKIsBbwsQFiREjPhUB0sTJEwfhUECpUcOFjgdHPAWJImUKFXhEqlix4gkJkiuesGTRQqWjhS1ckmhN0sWJFCxevlR1dMBCADBKwkhZmyWLmDFfRyKE+4CCTBkzZ7KgSSNGwhg1EdY8PGGhyho2X8Yo/tImcJlwCdxcAlAmQgQqDqisWVOmTDQqY97YkgAnzoU4FCZcUK26gJ1AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= edit-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAJy2xKyurLSutGxubPwCBNTe5PT29Pz2/Ozq7JyWnGxqbJyuxKS6zPz+/Pz6/JyanFyGnPT6/Jy2zLSytJSSlEx+nFyGpHSmxHRydGRiZFROVCRKVER6lFySrGyevPTy9OTe5Hx6fExOTFSOrNzq9PTu9NTO1ISChGReZGSevMzWpPy+hLS2tKyqrKymrKSepJSOlPx2LPzOtPzmzKSipOTm5Hx+fJxuHPxyJPSmhPzy3PzCnIyOjGReVHRGLKRaNPz27OzKxIyGjNzW3FRSVMzOzLy2vJyenISCfGxSPJRaNNR6TOzm7NTS1MzKzMS+xIR2dHxSPOSynNTW1HxmXDwuLMTCxIyKjFxaXHRudKSmpJSWlLy6vGRmZGxmbIR+hFxWXFRWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAAWABYAAAf/gAABAoOFhIeDAwSLjAUABgeQkpGRCAEJCoyLCwUMDZ+gnw6jAg0PmYwQCxESAROvsKABDQYUqAQVFhcRnqGhAhgZGhqMGxwdHgcSsBOuEw0fIAEhIprGIxckvaGjJSYnxIwo1ykqK6AsLS4vJQ0U4YsDMBsVIzEyM58BLjQJNSAP4BGwQWHeDRw5dOw4cKBEAh4gQFCoxgjGhFM9fPzIASRIiRJChIAYQoGIJhpFjByBgSSJkiU7mDCJ2MTJO00tvD15kEAIlChLpDQYWcQEDIECPk4x4qInEipVWtQ0YQUJxUWzGjR1MuGFkCsosGTBYKWqSUYBSjjQ8gJEERZbYk5coaFAARcW4HCqpfGAAkQrEwZkUdDFiBEbAnN+eLAFiZApVBV4wYKFxbSrBGgg2BxxCFWqVlgYESAghEAXZQ2zmOCib0ghX0LIFhgChW0sYMKA0UCk97BhIgRqGk6cuIFAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= editpaste-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBxihBxehIyOjFxaXFxeXBxafBxifPz+/Ozu7Nzq7PT29OTm5Dw+PGyWrFSKrDyCrBxefBRmjPTy9JSSlKSmpLy6vISGhHRydCx2lCRedOTm7AQCBGRiZExOTExKTLSytCR+rNTe5CR6rMzW3GxqbJyenKyqrKSipBRijMTO3JyanLTG1KyurBRihKS+zBRejIy2xBRmlHyqvOTi5HSetMTCxOzq7GSWtLy+vBxejESWvIyKjNza3CyKvByCxBx+vByCtBx2pBx2rLS2tBxahNTS1Pz6/NTW1MzKzMzOzHR2dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAABAQIDBAWHhwYHAgCOj44GCAkKBQgLCQkMDQ4PEBGQjxITCAgUFRYUAxcYpRkaoY4RG6UcFB0eHx0gpSGNsQIipcPEpSO/oREkpSXNJifQ0ScoBKEpKsUIJ9knK9WPESzMztvFLabfAC4v3Nkopd6OMDGlFwMmIOXEJxglBN8yZrQbRuOSCAsXvqWoUaqCDRs09CF4t2DBDQvfBOAYWAHBgAkobtDI8U3HjoEIeDQYILIHRnk+fgAJEkTIkG0VVE5YiYIGkXRFDkiAoQNGgHILBjTgQaOHkRbpYgF4dyTkABookDyNGuvEkQmaUDg1koSa1EctbiBRksSGBSItE1qYPTt1SYd/ePPS3cu3LyQ7gQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== editshred-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBLy2vLy6vLSutGxubPTy9PTu9Pzy/PTq9Nza3MzKzKyurJyWnGxqbPz6/Pz+/JyanPT29JSSlGRiZExOTFROVOTi5Ozq7NzS3NTS1Pz2/PTm9MzCzOzm7OTW5OTa5MTCxMTGxOzu7MS+xNTO1MzGzLSytKyqrNze3KyirLSqtKSipKSepLyyvIyKjFxeXHx2fFRWVIR+hHRydFxiXHx6fHR6dIyOjISChJyenEQ+RFxWXFRSVAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb1QIAwICAai8UBQchsCgoFwwGKKCQUC0aj6XQ8vuCvYfCAbLkAgTccXjwikrOTzYYQJpQKWk0HWywXFxR7fXQYelx8hV4HGYOJhQ8ODlMKiE0BB5Mam5QHBxsWHI+YG5obGgWmHRYHHh8gpEwCHwUaHgUdIa4JIhwKI7JDJK0KoSAbJCUIJiMCl7MjCRsCFh4nHc4oKSYDwmkqIBYrGBwsHi0pJAwqJ9BCAgwCLgwu9i8uMC/6Md8tEi4kyIAxQwYNGTUm2ND3DoAJGAAyTAAw4AWAGzgANMgBwCIXEzMAjNABAAfJHSR5hPSIpqXLlzBjymxiIAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== edittrash-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHyKjLzCtOTm3LyqrISWnIyihJyulIyKjLS6tGRqZGyCfKSyrKyyrJSinLS6rNTi3KyypFRqXLSupHxuZHR2dFReXFx+ZGyKhJSynNTS1Pz+/IyejKSqpGxubGxiZERGRFRWVFxmZJymnLzKxPTy9JyyrJSWlFxeXExOTGRiZHyCfIyOjISGhGxqbKSipJyanHx6fJyenLy6vMzKzLSytMTCxNze3OTm5FxaXGRybNza3GRmZOzq7Ly+vNTOzJSSlHxydOzu7HRydLS2tKSmpKyqrHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfegACCg4SFhoeIiYqLhgECAwQFBgcIAwmKCgsMAg0ODxAREgYTFBWIFhUXFxgZGhsaHBMdHh+IICAhIiMkAyUDJgUnFiCIKCnHKissLC0VLiohIYgnLzAIMRXZLs/b0ocyMzQaNDUnKy4WKurEiDY3OBovMTk52zoq7IcCECU4NSshVLjIpkJRjR39ZrRQwUObN0Q1NJTo4QPBtmwVHiL6MVEAEA8ugjhjRKOHEBowhnioMMQFIx84TsqIMQRbwUVEdgjRUGQFxhyMACDUYOTaEZdBAcCrgcBn0qdQEQUCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= encrypted-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBJyanJyWnLy+vNTO1NzW3NTW1MTGxIR+hMS+xNze3KyurGRiZLSutJSSlLS2tLy2vHRudIyGjFRWVKSmpGxqbIyOjMzOzJyenPz2/ExOTISGhKyqrPTu9HRydGxmbGReZHx2fOzm7HR2dMzGzFxaXHx+fJSWlOTe5KSepFROVOzu7DQ2NERCRCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbPQIBwSCwaj8OAQIlEBgaEguGAaBoTCgXBkFgwrMOGwVEFCB5fMGAAiQwlg4kakKBULI/LYpC2MhYYCAcEGQcJDBpgdxscBhkdBRAeHyBNFSESAhcdIiJTDgxySBUjAhQJBSQQHBghEyVNJhsnEI4oBAMpFRqiRwgbZwSQBw0CFSqVSCMItI4GJA8CDCq9RhUmGGIrBQkNFrvJRxXMDZsEBwsWiNVGIQ4PBR0KBxCgGixWLRIcByIEEBQkTMAHpoWFBiS6pRjhYo7DhxAf0gkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= exec-22:actions actions22 22:photo:22 22:R0lGODlhFwAXAIUAAPwCBOTi5Nza3NTS1MTCxLSytOTe5MzKzLy6vISChPTy9KSipIyGjHR2dGRmZDw+POzq7PTu9FRWVCQmJCwmLJyWnJSSlIR+hDQ2NBwWHBQWFBweHNTO1KymrHRudFROVERGRBQOFAQGBPz6/IyKjJyanEQ+RExOTHx2fFxeXKSepKyqrFxaXFRSVGRiZExGTCwuLFxWXGxubGReZGxqbJSOlHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAXABcAAAb+QIBwSCwaj8SAYIBsDgcCQsGZNAgAgwNhK0QkmgrrACoQHBALRsPxaI4HEIUiAhksJI8JZYIcywMHBRUWFxgZGhtNBxARHAUdFh4SHyAhIiJHI1kBBCQlJRYJDiYnGhooBEV2FhYlDikJKggrCR8PGCEaE3xDCCgsLS4gLygrAQMlEi8PGzAfH0QeMBsbHyYYMRYICCSkJhsgKSlGuQ8ntzEeMicmMw8fEk26EjPLGBgm6iAXIE0TMMRIeFB3oQG9BAuQsANBSgaJBJJS0KixAEEFJDHSyWDzQAKKVisIrHDCDwCCEylsjBOSkMqQBhYWyHCJpAItmjhz6txZJAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== exit-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBKy+zHS2/HS6/Hy+/ITC/JTK/KTS/KzW/LTa/Lza/MTi/Mzm/NTm/Gx+jJyy1ByG/CyO/Dya/Eyi/FSm/Fyu/Gy2/ExqjCSK/DSW/GSy/ARezARe3Axq5ESC1ISSpKSipJSSlGyOxGSa3HSi7ISy7JzG9FxeZLy6vPz+/Pz6/PT29MzKzKyurLSytJyenNza3Ozq7GRiZLy+vIyKjMzOzOzu7OTm5Hx6fNTS1ISGhHR2dIyOjISChKyqrFRWVJSWlGRmZGxubExKTKSmpFxeXPTy9OTi5Hx+fFRSVFxaXMTGxNze3MTCxExOTJyanAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoIBAgMEBAUGjwcHCAkKCgsMDQ6DDxAQERESEhMUFRaKBJAIF5udGBEZoqQaAoyQCauCDxsbHB0dHh8gISEfIiMkJSUmJ4MoKSoqKywtKC4uL8MtMDHcMoMz0CozLiwwLNMgNCEgNTE23oLOKTcgMzErNzcz2DQ4IDk34AEApwJECxYpUsTQl5CGjh0zYAiUxwMEuYQIU/Cg0UMGCBYCCap70cJHwhQhevT7AWRGkG/QaPAAAgLESRochQwJMWPiihVEOPJIGKKhkB9BWvpcUQNnihU6nKYoMgQHz5AxjBx5gQPHDiReZSQZIoTHwaU3cuiQ8UNJkR9DQ4rg0BECxZKJ3GIwaRIiiJMhZJHQeNKiyd1veY9AYYECxJNhhGfMYNFzUIsdMjJnLqKk7Y8immUEEXiotOnTqFObDgQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== fileclose-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBKyqrKyurGxqbPT29OTm5JyenPz6/Pz+/JSSlPTy9JSWlGRiZHRydFxeXExKTFRWVLzO5MTW7MTS7Ozu7AQCBDRahCxWfCxShDRSjDRWlDxenJyy3NTW1Nza3ERqlDRehExqrMTCxMzOzDxijDRWhERqpFx6vCRKdLy6vMTGxDxejERmpExqpExyrFyCtDxmjEx2tFR2rGSGvIyKjKSmpERmnGyOvHSWvISChDxilGSGtGySvHyaxHyezHR2dExypGyKvHyexERurHSSxMzKzFx+tISizHx+fNTS1LSytGRmZISGhNze3Hx6fLS2tExOTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAAAAQKEhoWIAQOCjIwBBJCRkgUBBouNgo8HCJycBwcEBwEICZeNj52pCJujCgsMmJqqqQENDg8QmAIEnhESEhO/BQUUFBUPsaEEExYXGBkaGxwdHtW5jbsKER8gGRkY0SEcIiMdyKcKEh8kFiWcGxsmJygpKueOyx8r+5wsLS4vUBhIcS/TMhj7SHCKIePFDBQ0ahQEUIPCBBgkPthYOOMGDhQ5DEwMYFGfjo0IdvDo4QPFjwQTK04AwsLGBk5BcAgR4hKmLgoiOAwxYSLGCyI+Pjp4OVEAhSI1OLiIYeTGEZ4QBiDx2agGgSRKEnBAQZYsBAYNaIiMRcGDiBo0QxoMcOCAwZIGTBJIxFSxyYgUcHM4afAjB40FNWpcY1RDRIoniQ3QyJEDiZPLDZxMzAHhAS7PoB9AGd15MabTqBvRCQQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filefind-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBJS2tJyyxPTy9Ozq7Nzm5LS+xHSKlEx2hESarESitEx6jGyGnFyCpEx6pER+lDx2pJSqvKzCxKS6vJSutFyCjFyqvIS+zNTu9MTi7Cx+nBxqhCRifCRujARGjGyWrDRyhCxidDxebDSGnGyapPz+/PT+/Nze3MTGxGyqtDyWrCSCpISqxJS63Fym3Aw+dISivHyuzFSazESClJyutNTS1IyOjEyivDSSrAQybLTOzIyitHS6xLS+vNza3CRylHyatAQyZHyevKzS3GSanOT6/MzKzKSipEyOvHyetLTa5PT29CR6lCRmhCRedESGxKzGzKy+vOzu7OTi5CRWbDyGxAQuZKzGxOTm5JzW1Fx2hJSipCyGpFSuxKyqrJyanCxKVESOzLza3Ky6vFx+hDyivCyCpDR2jGRmZFx6hDR6lCyKrDyOrCRyjISChLSytAQuXKzS1ISanDRyjFRSVDw6PHx6fDSGpCxabCQmJAQmVAQiTAQiRAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiQABAowBioYCAwMEBQYHCAkKCwwMDQ4PEIUREhMTFBUWFxgZFwoaGxwdHR6EHyAhIiMkJSUmJygpKissLS4vhDAxMjMXNL0lNSU2NzgzAi45yTo7PBk90D69Njg/QDJBhEJDRBdF4L01Rkc2sw1I2oNJOgpKJQbQllCywaSJkyfpBgGBoiCDiSi9BkghMMXGDw5UqlghBOQKEx4YApRYIgXLlBM2NlARoZHjlQo3slgoQemkDxsYtVRJKEiIji1culhA4eWLjaM2qIABEmajQjFjyHApU8bMjAdnZnHogaZKPkEwxFzZkkaNmTVsRrTpQAWNmzdoR+CoyxIngJw5a+fMacKBTh06duAmu8PljhoqiDdscIKHSp08gL2gIRQkRxArcPTs4cNnj57OjwELhlQotB06pA3VWZ0akp1AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= filenew-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBLSytKyqrGxqbOTm5Ozq7OTi5KyurPz+/Pz6/Nza3PTy9JyenJSWlISChFxaXMTCxLy6vOzu7IyKjPT29LS2tAQCBLy+vKSipNTW1Nze3NTS1MzKzKSmpMTGxHx+fHR2dHRydGRiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbQQIBwSCwai4GAILlUBgZHYoBQKFCtBYEBGgUcCoiwOBFIKLjHAFgsLiO20S8bsUAcGA3HIxowzAl0BhARe2kScwEICQkGAYVGfXMTYRQGFY9FB4cIiQgDiwsFhHx+YQMIFgsDAgQXmFKbYRazBQaNr0N9EBgDswuzAw6OcQUUCQgUsxYGChkCuEJqCxQUAwUWGgMbGwfQAAIFCwtfBAMK3BwY3tLiEgQT5xscHd7gHNscHgIRFQcd6nEaTPjwAUSIASIeKFTYpaHDhxAjAqATBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileopen-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBESOBCxiBNz+xFTCBIz+NEymBFzOBIT+JKT+XNT+tDyKBEyiBFS2BGzuBHz+DFRSVFxaXMTGxHx6fISGhPz+/DQ2NIyOjJyanKSmpJyenKSipJSWlHRydGxubGRmZAQCBOzu7PTy9Nze3MzOzLy+vLS2tNza3KyurNTS1Ly6vKyqrIyKjDw6PExKTGxqbNTW1ERCRMzKzMTCxJSSlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbNQIBwSAwQj8ijYGBMOoUCQoH5TAoMB0RC0axCF4zGwfHges9VSETCbkvOkQlFUqlX6O+nZXLB0O13EhB6GRkaf4ASFBFOFhsaGYh2ioNJFhoaHB0em52cHR0fHUcWHJodICEiIiMkJCUmGRwfpJkQJCMnua8mKJi0pKcnwycpKiYmKxoswEQtHC4lI9MnJMm+mpYdLzAj3SmwKxkbzJYxGTIwMCQzvRobHB6NEyglM/a9hssvjRQZKygKZaLBYpYeDy8SKlzID41DAHaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 fileprint-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBNTW1KSipJyanHx6fMzGzKSepJyenISChNTS1Pz+/Pz6/GxubOTm5PT29Pz2/PTy9PTu9Ozu7Ozm7NTO1KyqrLSytOTe5NzW3MzKzMTCxLy+vJSylGTaZIyujJymnNze3MzOzLy6vBTGFHSmdIyGjNza1KymrKSmpJyWnIyOjHRudMTGxLy2vHx2fNza3JSSlGRmZHR2dHRydGxqbFxWXLy2nMS6nMzGlMzCjMS6jLyyhLSqhFxeXOTarOzivOzitOTirPz27Pz69AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeCAQIDBIiIAQUBBgYEBQUHCI6DCQqdngsMmZoADZ6moYgOCw8OrQ4QERKyDRMNFAKFDxUTFhcYFBQZGhscHR4fCKKDDhQgASAJIZYaIiMKIyQlCI2DJtPDGxYWJygpKSoIDAQrhA6yERMXIBcBGAHSLAUWBAztGP8YpoloMe7EgBQu+BGS0ADECwwIVzCAgQLFgXMECMQgFAHEvwTUxqEwYC4FDAYyNg6aAKJAhQHothFwMYNGKBcxanAEYcHGDRxAc+jQsYPHjHQxehBiicLHj6c/gPwI8sPHDH49dA6iUKKAkCFCXH0VYoJBjbOGLEQwZWpIAU0oF9iyNTAKhTgLFU4IEHCA0qi/gAMDsBMIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= filequickprint-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBMTCxKSipJySjGxqbLy6vJyenISChLy2vLSytNTS1Nza3Ozm7MzKzJSOlHR2dNzW3Pz2/Pz+/Pz6/HRudPT29PTu9OTi3OTm5KyqrOTe3LTCtKSmpMzOzNzW1My2dLyiPLyylIyyjHzSfGS6ZHyOfIyKjMSydOzitOTCXJR6NJSmlIy+jHSudOTe5MzGvLyqbNSyVIRyNISGhJyWnKSepJyanJyalIyGjHx6dNy+ZIxyDJR6JJSKXKymrIR+hMy6fNzCVOzaXPzufPTaVKSKJHRqXJSWlHx6fHRydKSafOzalOzajLSSLHxyXJSSlKyifNTGlPTijMSmPGxiLGxiTISCdIR+dHx2bOzq7MS6lNTChPzqnPzmXMyqNNTKlNTOnNTGnHx2dGRmZLy2tKyKNJyCLNTOtPTqzPTuzFxaXNzGbKSOPLS2tIyGfHxqNLy+vNTW1Hx2fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeCAQIDBIiIAQUFBgYHCAkGjoMKCwsKDAoNCgoOD5kAEBESqhITqgkUjhUVFhETthG4FRcXGBmGFQzBDBqcCw0NARsJHA4HhZ8KHR4fICGRCSIjJCUmzoQWGhcQJygpKgnoKywtJQfegy4KLzAoMTIzNAk1AjY3Bzg5CgEjp2MHjx4ZEBRI4ENAsx/PgAAJImQIkSJGHPA74gAJkiTPIChRsYRJEycODNSw8QQHkgelCH2CEkXKFCpVjFixcgVLEgJAC2XRsoVLly5eVGj5AuZLGDEUxjQipIFMmSIgmJiBcgZNGjRoHqgZWyhAAAc91rAZEOBCK1UHKsgessJmbRsXqVYdyeTmzQABcBRAiNNpgZxMkwwIUKy4Rg2IpiJLnmwgEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 filesaveas-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBJyyvGyipKza3JTOzIS+xEyGjER2dDxudDRKTNTe5JSyxPz6/LTm5FyqrFSanDRaXJyuvMTCxBSyLASeFASWFASGFPT6/Ozq7Mzq7GSutARiDARyDBSaJGxqbFyGnHSmvPTy9JS+lJTypIzinHzKjFySZGyudGxubER6lFySrHyqxPT29OTm5NTS1GSipPz+/JyanLSytMzOzDxuhFyatJy2xKyqrISChKSipFRSVGRmZFxeXCRKVEyKrNzm7Nza3Ly+vFxaXMzWpPy6fHx6fKyurKSmpHR2dHx+fDRidPxyJPzKrPzixIyOjFROTOyifPz25Py+lExKTJRuHMReLOSOXPSifOTGvHRydGxqXERGRGxGJKRaLOSGVOyWbPy6lDw6PGxSPJRaNMx2TNyynGRiZMzKzJSSlExOTHxybHxSPGRGNNTW1AQCBDQyNDwqJFRWVCwqLJSWlBwaHJyenCQiJOzu7MTGxDw+PDQ2NAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhgABhQIDBAQFAgYHBwgJhQoLigwNmw4PBhCGEQwBEhMUFRYCFxgZGg8QGxwdHoMfICELIiMjJCWqrRAmJyUiKIMpKisXARgsLC0uLzAQMTIzGBK0gjTINSw2GDc4OR4vOjg7zRI8gz3cPiA/C80sGEAzLhgMIUFChO7dhhApYgTHESQ3ksBgcURHoR5KUvhYwqRJMxgMYGjE4OSJIYgplkCJIkWfRgYsFOCYYihGDypVrFyJggUJkiwetGTJssWQjCxauHTx8gVMFhxFduYMY0gCjiw6xIwh86WMmR08POwww7TQGTRZ0uhQs4YMmzZuXOjgweONoTNOTYpsSVMEjRY4T2acmRInjpymc+QKcSKDjpkiZ85s0aHjbyEZTsLGqeOCjo4gEiQs1mHHUI6ncTzkaHHnHp4gefTo6XyotevXsGPDphMIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= filesave-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBGSipLTa5JzS1JzO1IS+xEyGjEx+hERudDRKTPz+/MTq7Lzm7GSqtFSanDxaXNTS1BS6LASiHASWFASKFPz6/Nzy9Mzq9Gy6vARiFARyDBSeLGxqbOTi5KTSrJz2rJTmnITOlGyipGyyvGSWbGyudJS+nHR2dOzq7JyanLSytMTCxISChKSmpHRydFxWXMTGxGxmbMzKzNza3MzOzLy6vFRSVMzGzPz2/IyKjKyqrIR+hKSipFxaXNze3Ly+vPTy9JSSlExGTIyOjISGhHx6fGxubJyenIyGjERCRNzW3GRiZDw6POTm5FxeXDQuNOTe5CQiJJyWnExOTLS2tOzm7KSepHRudDw2PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhocBAgMEBQEGBwgICYeFAQoLCwwNDgYPlAAQERITFAEVFhcYDg8ZGhschh0eHx8gISKXIw8kJSEmJ7EQCgoVKBCWDykqECgrsIUdwgoqLC0uIi8sHCgVMDGxMhXDxCgzNDPcFTU2sTc40znUOjs8LMQ6PYY+Pyjj4+LDgAQRYmhGDWn+xuHosINdoRk8gkgcMoQIiyInjHBwwYHgQx08eBxJITEHkh0nTnDgkMSQkpAWT+xw4SJGjB5GlnBgYghCChZLiuhAV6FCkxk2ljh5YkhGkB1CnPCAEiUGkGhCbPSI0lRKwx46qFqdAWFKDxtMC1HJUUTICx5VIqqWW5HVBtdCVpBc6cGBB5AKVyGsYIKFyd1PiBMrXqzYTiAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== filter1-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDw6PERCRExKTFRSVFxWXFxaXGRiZGxqbHR2dISGhHx+fHx2fIyGjJyWnKSmpKSepIR+hDw+PERGRFxeXLy6vLSytJSOlJSWlLSutMTCxMzKzMzOzNTO1KymrMzGzHRydExOTOTm5IyOjKyurGReZExGTJyenNze3NTS1Ly2vKSipHRudMS+xIyKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbxQIBwSCwaj4CAYDAgFAwH5DCgFBAMiERCoUgsGEZqtQlFLBqOB8QR4QrFksBgYqBkIw3Io8K3ON5iS1cIWQsXGBkaGxwdFlFwggcHCQwNFx4WHxsdHxkGSQFxSwZYIAsKGA8WGhoWEAcEgAMCIVgIDBEXDhm8Dw4Mn0MGAqMHpg0Yehm/AkcVIgoEWQoX1SMJBAFSJBwVCggHJQYEJibaUgAnKCkaKivfA+foABcdGiQOLAby8wAKLRlcIODXT0GFBwoOEJzXwIKHhAvRjahwIsG+fkQuUMQWUcoFDRgYxMM4xEEFDAlGkhTyzcAAKQaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 find-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBGxubGRmZDxudEyWpESmtDxufHx6fFSuvIzCzNTu9Mzm7ESitCyCnIR+hFxaXGxqbGyapPz+/OTe5MzGzHyyvDyavExKTDRWZJyyvNza3Pz6/JSOlDyWtCRmhERCRGS2xMzq9LS+xDSSrCRylDRyfJTG1OT6/LzCxNTW1KSepIyOjCx2nCRqjCRGVEyqvLTa5Pz2/PTu9CRujCRefPT+/PTy9Ozq7CRWbNTy/Ozm7JTW5FyqvOTm5CQyPFyyzMzOzKyqrCRKVCyGrDyixDyGpEyGnEx+lDRyjLy6vCx2lESStISChLSytCxmfExOVDw6PHRudCwqLFROVGxmbJyWnJSSlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf+gACCg4SFgwGGiYqCAooDBAUGhgeIiQYICQoLCQwNgw4BDw8AEIQEERKpExQVFp4AAqIXhRgJGakSGhscDB0egg8fhiAhIrgTqRwjJIslJicouCkUKissLS6KLzAS0akbMTIrJDM0igwhNd4xNjc34zQ4ig0VObfsNzoTHOXZiS4IdvCQYKNHjwkaVsTzsajBDx5AgqjgwGGFQiGLALgYQoRIESNHkJCjkaTRIgxKhgxZUoRECxoCmDQxWcgkjRkkkMzw4OQJlCcOZiqKIsjFjBnyAECRMiUoFUJVmGRUKgWoUABWKI2iaWhpU6GgRE2lCvQJsFFjlX6AknaqgUAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== finish-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBIS2fHy2jIS6jHSuhPz+/HSefOz27HymfNTu1PT69GSOXHSmbHyudIS6hNTuzNzu1FyKVJzKnER6NOz25MTmtNzy1ESCNOTu5DRyNLTWrNTuxNTqzLzmvDRqNJTCjJzWlKTWlJzWjKTanLTerLzitMTmxITGhLzSxJzSjJzSlDxaRHzKfKzCtDReRFSeVGSqXGyyZHy6dJTKlJzOnIyylDRONDRmPFSeXHSOfDROTERyRFyWXGSabFSSVER2TERyVDRaTDRWPEyCVGy6dHTCfDxiTDxmZDRSTFSubFyqZEx6XDReVESaXDxWVDxaXDxeVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfZgACCg4SFhocAAYiLhAIDjIwEBYqQhwYHBY+VhQgJCpOVCwwNow4PEJiaghENEoQTCrEKFBUPFp+UABcYCoQZGhscDxsVHQ8JqYIXFRiEHh8gISIjJCUdJg8YoBknKM4BKSkqKiQjJRocHNorGSwthC4vMDExMjM0EjMSNQg2ADc4chDS4SHDjh08Tig80cPHD0E2gAAZGMRGECFDiBQh4gOIkUFBXBwhFEQHEh06XCRRsiRIEJJMXiIK0gSICyebCD2xKTOnoCdBnvgkBGXk0EFGjypdKshOIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 folder_new-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBPz+pExOTHx6fISGhIyOjPz+/JyenJyanJSWlGRmZKSipJSSlIyKjAQCBGxqbGxubPT29OTm5NTS1MTGxLy+vKyurFRWVNze3Nza3MzKzLy6vLS2tKSmpKyqrMTCxFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa9QIBwSCwaj0hAIMlsOpVMgVRKXFqPggGhwBVUDUtjtnA4IBKDgCIQMLjZUKGgsDAnEgWCntAOF+cLCAwFDXt8fA5+QwINBwUPCpAKk5Nqk38FaBARnBESExMUFRYJEJgJFxUYqxkaGxwWAWhiBQMQGbgZExUcHB0HtmINqasYrRseFgelWLa5urwev8FiFx4aoBMfsAsLzFgQHhUfFdF1CNRiBAvJHb8JDA0FpkgXICD29/r29E/+/wCf2AkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= forward-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHy2jIS6hHSuhPz+/HSefPT69IS6jHymfNTqzGSOXHSmbKzKpHyudNTuzNzu1Oz27ER+NOTu5ER6NOz25MTmtNzy1ESCPLzitDR2NLTWrNTuxMzqxNTu1IzKhLzOvDRqNJTCjJzWlKTWlJzWjKTanLTerLTirHTGdKzCtJzSjJzSlKzepFyiZGyOfDReRFSeVGSqXGyyZHy6dJTKlJzOnJzKnIyylEx6TDxWVDxuTFRyZDRSRERyRER2TFSSVITGhGSabDxmTDxiTDRaTDRWPEyCVGy6dERyVDxiVDReTDROTFSubEx6XESaXDxmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfWgACCg4SFhoeFAYiLhAECjIwDBIqQhwUGBAeVhggJmJSGCgsMAKINCw0CDg8QmYcREgYAEwa1BhQVDhafhhcYEgAZGhsJDhsVHAkdFK6EGR4fACAhIiMkJSYnGBwbEpPOKCnSDSQqKysmLCYaCQnemoIgLS4ALzAxMjIzNDU2NDY3EOAglEPHDgA8QOjo4eMHkIdAgvzwUeiFkCEIiRTZaOQIiiM/kGAslCSJEoRLeCxZ8oJJiyYvcmwalMMJkpgzad6UmVNQSZ49AeR4EnQQ0aJIe9oJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 frameprint-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBNTO1KSipJyanHx6fMTGxNza1KSepHx2fMzGzNTW1Pz+/GxubISChOzm7PT27Pz6/PTy9PT29Pz2/Ozq7OTi5KymrLy2vMzKzMTCxJSylGTaZIyujJymnNze3MzOzLy6vBTGFHSmdIyGjIR+hLy+vLSytKyqrJyenIyOjNzW3Nza3NTS1AQCBJyWnFxaXGxmbJSSlKSmpHRydGRmZHR2dFxWXJyWdKymfLyyhMS6jLSqhFxeXMzGpNzWrOzitOTirOTarPTu5Pz27Pz69HRudHx+fJSWlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeCAQIDBIiIAQUGBwcICQUHjY6CCgudngsMDZqCDp+eoYgPEA8REhMRsBSyFQ4OioUTFhQXFQoBARgZGRobHB0NooQRAR7MAR/BGSAhCyEiIySZgh4FBRkFFyUmJicWKAMpDaEMhBQV7x4eKisqBiwY3RkmJOwALS0L/gVscQHEhQvkLLhwQYBAP4CmWryAASOGDAEoXMQgMIOGIFOeYqAQIODAgAExYjAg4NEfyBY0ZtRAQDOmOho2BEH81OIGjhw6dOTYMWMEAxo8PoJcgKOHjx9AfgRZyYBHTpcRS3gQMoTIEA9FbIgdJLBsiwQOHngqoMmIsAQYGDxQgODpgKYaI44MMDkJI6VRgAMLBkAnEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 gear-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBOTi5Nza3NTS1MTCxLSytOTe5MzKzLy6vISChPTy9Ozq7MzGzKymrIyGjHR2dGRmZDw6PMS+xFxeXCwqLCQiJJyWnJSSlIyKjGxubBwaHNTO1KyqrHRudFRWVFROVGReZAwKDPz6/JyanKSipKSepERCRHx2fFxaXGRiZExGTERGRExOTDQyNBQSFFxWXDw2PEQ+RGxmbExKTCQmJIR+hJSOlHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBwSCwaj8OAYIBsCgcCQsGZNAgAgwNhK0QkkArrYBAILASMhuMBiSDHAoVcHpBMIpQK5TiWLw4FFhcYGRqGSAcLChsFHBgdHh8gESEhRiIDDAEEGCMjFwkZEZEVDwREAySDIxATCSUIHAkfJh6GFRVDCCcoJikqKiccAQMjHisTFBQfLEMdLRouKyYtLxcICA4rkhTIIEWVESwRMC8dGSwxMh4THkguGpIzES0RKx0JLAkrSBQ0Kw8edYBQIwEEEAlIHPlgTxwEGxhqQMjwkAQCC0deTDgnI8KoBxdGFCDQoEkNfghYTLgxYYhCKkJAkugA88iIBl9q6tzpxEAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= gohome-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBKSutGRqfGxyfGRyfFxidOTu5FxibLSytPz+/FxmdGx2hOzu9FRebKSqtPT2/NTW3GRufExWZHR6hMTK1KyyvPz6/PT6/OTq7MzS3ISKlFRabPT29OTi5JSapFRiXKyqrNze5MTGzJymtIySnHyGlFxqdOzu7LS6xGRqdNTS1MTCxKy+tEROXDxKVDxGVJSmnNTi3MzW1Mza1MzS1MTSzLTKvKSyrJyanHyOhGx+dExaVERaTERSTOzy7Nzm3OTq5NTe3KyyrISOjFRmXExeVKy6tOTy7JSqnISajKSmfKSidJyedISGhExiVKS6rKSmpKyurMTGxKyuhPz+TLS2hLy6vNzm5Ly+vLS2jPz+XPz+tMzKpHx6fLS2tLy+nNTSrGxubERWTMzSzHSKfMTKxGRuZGyCfMzOzFxyZCRyJIyelNTi1CziLCy2LCReJCyeLCySLCxuLCx+LFxqZCyyLCyGLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBAgMEBYSLgwYHgggJCgMLAo+MhAwNAA4JDxAFCxEREpiDmpEJDBAIDRMCAqWmFBUWCRcYGQgaEgsEBxumnbYcHRQBHgsflbGMIKoWFgwhIiMkJQsSAybAhAGqJxa4ECgeGpUH2hEpsgEqFBQiIissCMkNEi0uLy0bDQqyAMCIIWMGBBo1bCC4gSOHjh08ePRYxMLHDyBADASRIYKFEBhDiBD5UGSRkSNBkHhIcqOGkiVMlDT58MFJSUJPfMRIAiXKDylTqFCpMrNIER6LbhiQkQOBlStYsmjZwqXLjh1GF8EwUCOHlxUxEHzhAgZMmKtFxGg1MIYMgjIxboRAwdGkixkxR28OSsL1zAo0MW7AAKkjjRqsSAmtuVJDhxQVbD62aePGzRs4hwnFkTOnDZ0yKmbAaVOnjps2di6rIaRmDmYnIKDYgAPHjpracdS8ebN60Bw7cpKsWZNkjhrdunnPeTPHlHNMBgIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= goto-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBHy6RKTGjIy2tFyOrGyipFSmNJTGZHy6bGyyZITCdHSixGSipFSiVIzCTNzy9FyuPIzCXHy+VFyihEyGxFSKvFSajESePMTWrJTKTLzufPT2/GyyPIy6bGymlEx+zER2xER6tERynHSaPJzKTJzOTKTOTKz2RHS2PDxurCReRISmTNTutOT2xOT6xKz6NLz6RMT2hHy6PFyOdFSKnDRmtBxWXKzmVLT2XLz2XKT2LExyrCxetBxGdCROHESCJGSuNGy6NHzCNIzSNITaJJTaVJzafExytCRWrBw6dCRSLDRqJBxqFCx2FDR6HESOFFSmHFSqLFy2LFSuFDyKHFR2fDRirBxKnBw+RCRiHCR6FDySHDSWHCyCHFSCPFyKRER2dBQ6hBw6bBxaJBReLCx6FBRuHBRSLEx6JDRyTBRChBwyZBRaNBRqHBRWLGyGVFSCLDx+HBxSRBQyZBxGjBRiPBRiJDRSZGyOZGSWRCxiNBw6XBw2bBw2ZBRyRCxKdFyCVFSGPDxqPCxKXAwqXCxSTAwuRAwmVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGDCBMqXGgwgEABAwgUYDgwgIEDBxAkULCAQQOGDh5AOBBBwgQKFSxcUIghg4YNHDp4oPABRAgRBkeQIFGihIkTL1EQsFABBIgUKgquYNHChdMXMGKwkDGDhtEaNgqOuIEjh1cdJ3BoYMFBRIodPHr4IPgDSBAhQoYQITKkiBEJEI7sQJJECcElTJo4eQIlShQpEKZQqbLDypUkWAhmmcxEC5UtXLZ0YeLlC5grYcQUHENmjOkxWsqYOYPmx480apKsSZiEjZk2bt7AieNEzpw5CunUsVPnDp48P/Ts4dNnYR0/Sf4ACiRokJjmC/0AILSmkA9Dhw5RChxPvrz58wLtBAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== help-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIYAAPwCBDyCxCyCzCyS1Fy+/ITO/IzS/Gy+/Fyu/DSS5BxatFS6/Iza/LTm/MTq/LTi/JzW/HS+/Eyu/Cx65AQmTGS6/Lzm/Nzy/Jza/ITK/HS6/Eya9CR+/AROvAQaTDyO1KTe/Pz+/Mzq/DyS/Bxy9BRe3AQylGS+/MTm/Oz6/Mzu/Bxi3AxKxAQ2nAQWTCSCzHzK/NTy/KTS/Hy29EyS7BxSzBRGvAQypAQibBSa7HTK/LTe/EyK7Cxm3Aw6tAQulByKzFzG/HTG/ITC/IS+/Dx25CRe3AQifBRqlCye/HzG/ES2/Eym7Fym9BRSxAQmjAQSTAx+3DSS7DSG5DyC5BRCvAwunAQihAQKJAyC3BSK/BR25ISexERmvAxWlAxmzBRezBRSvAxGtAQeVAQubAw6jAQ6nAQaXAQmZAQqdAQSNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfEgACCgwABAoSIggMEBQYHCAkKiQALDA0ODxAREhMUiBUWFxcWGBkaGxwdHoMfIBchFyIhIRsjJCUmgycoFykhKrMjEyssLS4ALzAqKjGxMjM0EzU2NzgAOTooDBg7syE8PSw+P9ZACw9BQkNEs0VGNuNHAEhJSktMTRuzK04+N09QBEWRkETKFCqzalS5YeUKlkFZtGzh4i1Elx9HAg7y8gUMizBi/P0A+JDQGDJlzNww8eTImUmCXKBJgwOKGpg4CfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 history-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBJSqrKSyvKS2xHyWpGyGpExurFR2vDRerKy+vMza3NTe1MTaxKzK1HymvFx+lGSKtFSOpDR6VLTGvPz6/PT69Oz61MTqrLzmpJzSnITCnGSanExynFySnFymXESaJNzq5Pz+/PT65OT6xKzelIzKhGSinEx6nFSWhEyePCRiRJSuzOTy5NTyxIS+vFSSzEyCvERadDx2nCRSdBRKNJSy1MTe1Pz+9PT27LTi1HS21GSqtEyKtDRepDRirBxeRBxSDJS+1MTezMzm1OTy9NTu/JzS7HSy1FySvDRmrCRaZBRGFISmvISq1Hy2vIzG1MTm5KzW9IS65FyezFSKxExadERmnCxatBxGdCRKLCxWpHSaxGyqxJTG1JzOvJTG3HSq3GSa1ExidDxqtBxCfCRWrDxenGyezHSmxIS6nFSKjGxubIyKlBxGnBw2bBxCTCRevDRmtCxShERqjExylFR+rGSOnFR+fERedEQ+RGxmbKSmpCRGfBQ2dAwyTBQuJCxGfDxWdDRaXExiVDRmHDxSJDw+PKSipISCjDRCZBQmRDRivCRSnCROjDxWhGR6ZGyKVFSGNCxGJBQuTBxSrCxWnERuhIyufHSmTEyKNBRClBxKnDxipHSebGSWRDxiLCxGVAwqXBwqNKyqrGRiZBxOHAweTAQWNAQOFAQOJBQiTAQGFAQCBCQmJAQKFAQKHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGDCBMWDCBgAIECBg4gUCgwgYIFCxg0cPAAQgQJCidQqGDhAoYMGjZw6ODhA0ICIEKEEDHiAokSJk5wQJFCxcEVLGTObEHCxQsYMWTImEHDYA0bFG5UwMEih44dPGL08PEDSEEfNYIIGYKDSBEjR0wgieEjiZIlXgf6YNLEyZMcUKJImUKFQxUrV7BkiStQS4EtU7h08fIFTBgYYmKM0UKGBmEAZcw8gIHkDJo0JtSIWcPGShs3b5YQhBNHzhw6dU7YuYMnj549bPj08fOnYBwffAAFCiRoEKFChtYcQpRIkcFFVxg1cgToEaRIhCTZ3oNo0kFKZSpVUjJj6RKmTEv+JMd9UFObTYzKcOrk6ROoUKLyrBlF6mCoPgD2IUgpk5hiyimo5EFKHgilooqBvBmYyiqsoNIKKwq5gsqGr1DIyocYUiTiiBTZERAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== htmlvalidator-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCRSlHSevIyuzDRqpCxinEx6rARKjAQ6hDxypARCjARChAQyhFyGtER6rAQqfFSGtKS+1ISmxJS2zGSWvBxalBRSlLTO3GyWvAQyfKzG3ERyrCRanAxKjDxqpHyexBRalGSOvJy21AxKlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbNQIBwSCwaj8ikcgkICIiBQZFQqFoNgEOAiEgQBQiEYrxgeBsIokPxfUCGioMw8pAMBY/J0MCICPEUQwdeQg4MWEIVckIKFkQJbIwLixduQgRpbVICC5hSGBkaABIPB4FcGwAFHAAIDqqLFB0KD6+CFQAKrx24CoiCD1JCHgcQCIEbxQjCQx8IBUMSYpkDCAvLRnFEBwgggguO2YuXDyFDCZYUpwADDAREHxlE7SIA6KcFGU9EI0Xj3BUsdDOy7w6RAgsUQGPCsKFDhgaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 imagegallery-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBLSutMzKzMzGzMTGxLy2vHx6fLSytPz6/Pz+/PTu9HRydNza3Pz2/MzOzMS+xIyKjFxaXKyurOTi5Ly6vERCRKSepPTy9GRiZOzq7Ozm7OTe5ISChKSmrLS+xKy6xJSyvJSuxISqvHymvGyavFyOtKS6xIyGjOzu9LS2vPT2/OT2/Oz2/MTq/LTi/KTe/IzW9HzK9GS+9FS69Mzu/Kze/GSy5KTa/Ozu7JzS7OTy/CxyxFSa3PT29OTm5Ly6xMzm9HS25Gyu5Nzy/JTK7CRetCxevLze9Hy23Oz6/MTS7Jy+7BxCdDRqpLTi9HSy5Gyi3EyWzNTe7Dx6xCxixCRWtLTW9JyutHyq1GSm1DyK1FSO1Dx+1DR2zCxqxHyq3FyW1FyW3NzW3NTW1FxWXFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAABAgOEhgQFBgCLjI0ABwgJkQoIlQQDC46OkAmdDA2dDg8QEZqMnAkCEg8TCQoUBhWmi6gNAQ6SDRMWsrOclQoNDRcKEwEYs4+TCgoZGc0a0RoT1NSnwAjTExvV3BvfEw0ctAkNzB0eHh8fICEiIyQkJSYIJ7QIFygKKSorLC0tXLyAEUPGDBgJFCljpuCBChb+aASsYaPgjQTjHjXAQYyCihw3VuiQ6GIHjxgXFQbo4YPZDyBBhOhYMYQFkSJGeLhAkLFDsY5HbCBpkWSFkiVMijRxgkChhQcFXD6BEoWIAhZSiEyhUsWKOEYVIii4cAVLkCxatGzZooVLFy9fQ5o6YmZCCBQePMCE0at3yxIVGRlRmqCPoQYF0oplUMiImgJu1KRMkCJFjJQxYjBpwkAmgufOZUKLLkMmmenTqBsZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== key_enter-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIUAAPwCBHy6RFSmNIzCTNzy9GSuNJTKTLzufHS2PHSaPJzKTJzOTKTOTKz2RMT2hPT2/ISmTNTutOT2xOT6xKz6NLz6RGyWPKzmVLT2XLz2XKT2LGyyPFSCLGy6NHzCNIzSNITaJIzWNIzWPJTaVJzafHzGVFyuPDRqJBxqFCx2FDx+FESOFFSmHFSuFFSqLFy2LDyKHCRiHBRiJBRqHDyWHDSWHCyCHBxaJBRSLBRWLCR6FBRaNBRuHBReNBRqPBRyRCH5BAEAAAAALAAAAAAQABAAAAZ2QIBwGBgaj0QBcgkYEArMo+FAQCwTCsViwWg4HtYjJCIpTygVRyQ8tFwwmbimUTlENkZOoePxfEAhIiMkJSZDJygpKissLS4vJi0wRjEyM4kwNDUrNjNHNzI4Nzk3OikzOVFCOzwyPaqrMj6wQj4/tEK3uLB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 locationbar_erase-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIQAAPwCBGyirGSipPz+/AwKDLzm7BQSFKTe5Kzi5MTq7Nzy9GyipMzq9Mzq7ER2fFSanGSqtGy6vGyyvDxeZDxiZEyGjFSapDxaXERudEyKlDRaXDRKTAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVSICCOZGmeZCCgpjCsJHEGxQvIt2iQwlG7MtkuhUgoBosBgTDkFQqMxoswMFhxAMcDEpFMlFYTpfKwXJS5pmiCyWhygKFag3nHTpsNa8/v+09+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 lock-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBJyanJyWnLy+vNTO1NzW3NTW1MTGxIR+hMS+xNze3KyurGRiZLSutJSSlLS2tLy2vHRudIyGjFRWVKSmpGxqbIyOjMzOzJyenPz2/ExOTISGhKyqrPTu9HRydGxmbGReZHx2fOzm7HR2dMzGzFxaXHx+fJSWlOTe5KSepFROVOzu7DQ2NERCRCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbPQIBwSCwaj8OAQIlEBgaEguGAaBoTCgXBkFgwrMOGwVEFCB5fMGAAiQwlg4kakKBULI/LYpC2MhYYCAcEGQcJDBpgdxscBhkdBRAeHyBNFSESAhcdIiJTDgxySBUjAhQJBSQQHBghEyVNJhsnEI4oBAMpFRqiRwgbZwSQBw0CFSqVSCMItI4GJA8CDCq9RhUmGGIrBQkNFrvJRxXMDZsEBwsWiNVGIQ4PBR0KBxCgGixWLRIcByIEEBQkTMAHpoWFBiS6pRjhYo7DhxAf2gkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mail_forward-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBPT29OTi5Ozq7Nza3NTO1KSepFRSVGxqbLxa/KQC/NTS1MyG/KSipJyanMzKzASKBASSBJxuNJRmLJSSlLT+tOzChPTWnPzepAz+DHRSJNyybOzKjIyKjATuBFz+XMT+xHxWJNSmZOS+hOzGhAQCBATSBCT+JDT+NMyeXOS6fAS6BATWBATCBARiBMyaVNyydOS+fASiBASmBLyKPNyubLSCPMSORJxyNKx2NIReJAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbSQIBwSCwaj8ikcgkIOJ/QqLMYEAysVoKAwO0WDAdiwIAoGwRob0KxAIsH8Ou2y2UkFo3wcGxGzwuACwULDnpCVX4CBVyAiw+PhWJkCBARBGUFEhObEw8Uhk1+EBUQBJkWFxiqE59EA10QGRURDxobHBepEh2gAbAeHyARISIjJCUXrKAPBs0QJicowikbKhYTDrxFB9wQKywtLhovLzAqMRPcSBAyMy4AGjQvIjXVE0kQEO/wNjc4mhKU6BuiIYeNfveYENGgQYeOhAojSpzIxE4QACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mail_generic-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBPT29OTi5Ozq7Nza3NzW3NTO1KSipFRSVGxqbLxa/KQC/NTS1MyG/KSepJyanMzKzMTCxJSSlJSOlIyKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWRICCOZGmeaKqubOuaQSzPdFwGwpDvhEAQhaDhgCAFDonkQcD8BRULBtE4qOqYhd+voRgWR8ekgynIMgwGhvrxFeHIZbOaAYlA2EZkMkFIzu0QEBJtAG9lQARngYuChAFBiQV0BowRlhOOWUBzEJSBlhGDJBAHD6YSEhMUFKqrqBSEAAiztLW2sy+5uru8vSh0IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mail_get-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFRSVDw6PPT29PTy9Ozq7NTS1FxqZHyajHymlFyOrCRObERCRMzKzKyutFRWbHySdMTatOz27Nzu5JTO5HSmvCxWbDQ+RNzW3Nza3KSipDxKXHR2pPz+/NTm3ISyrITOnFSatDw+PLxa/KQC/Bw2TLTqrGy+jHSurDxmlMyG/Jy2pPT69MTuxJzqnHzajHSylGSuzEx6pJyanOTi5CRCXIymjNTu1LzyzIzmnEyu3DRehMTCxKSepFxufFx2fKTGpJzepIzCrHzCnFSyzEyevCRCbGxubMzK1IyKjDxWZGSGhGyubHSutGSivEyCpCRafJSSlLS6xER6RExidDRiRCQ+PBQWFFxaXISSnCwyPAwODCQmLCwuLJSOlAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf4gACCg4SFhoeIiYqLjI2DAQKRAYwDBAUGAgcICQoLDA0EoaGFlg4PEBESExQVFhcYGBkGGpODBBobHBIdHR4fICELIiMks7WCliUOvB0mICcoKQIqIw20hLclKxIsLS4vMDEyAgYGGDPHAAQ0NTY3OC45JzoxOww8DTzXgwM9Pj9AgggZQoRIESNHkDRokCTdugZKljBB0cTJEygCFi6Mkm5ALCk/FkyhUsXKFSwCeKjkiC2DSwxZqGjZwqXLES8peXhJ16CHhh4zokRJ4uUIFwFHeAiY0bBQgKdQoTK4wiCpgKeOBH1BqjTroK1HBHj9+mWsWUd2AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== mail_replyall-22:actions actions22 22:photo:22 22:R0lGODlhFgAVAIUAAPwCBPT29OTi5Ozq7Nza3NTS1JyanFRSVKSipGxqbLxa/KQC/MyG/NTO1JRmLMzKzOzChPTWnPzepAxOBBR+BHxSJNy2dOzGhJxuNMTCxBy2BNSqZOS+hBzWBHRSJMyeXNyybOzGjBSaBCT2BMSSTHxWJAQCBIyOjBzCBLyKPNyydOS6fDx+NBSGBBz+BLSCPNSiXKT+nKx2NNSmZOT+5JxyNMSORIReJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABUAAAbfQIBwSCwaj8gkIMBsOp/MYkAwoFIJAoJ2WzAciAFEYowQmLcExaKA+A4Dg3g1iy4wFGy3MEw20xsFgYBeRA6GhmiAgQ+MhEIOEBEREhIOBGOCjBMTFHoVFhcOGIcEBQ2MDxkTGhqeGxgckpQOD6ebqh2tQx4fHiAhk5W2IhOqI7pCHiQlGxAhJhEOJ5womxPHnim8KisQDgcsLR0jLuQuyAAVLxUkMCArHA4mGjExrPdEHjLKJDMbFiscANBAQ0MSDx5ekKgxSqAQVkr0vXhhw6GSIghv3LB4saPHj0WCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 mail_reply-22:actions actions22 22:photo:22 22:R0lGODlhFgAVAIUAAPwCBPT29OTi5Ozq7Nza3NTO1KSipFRSVGxqbNTS1Lxa/KQC/MyG/JyanMzKzJRmLJxuNAxOBBR+BOzChPTWnPzepBy2BHxSJNyydOzGhMTCxBzWBNSqZOS+hAQCBBSaBCT2BHRSJNSiXNyybJSOlIyOjMSSTDx+NBSGBBzaBBz+BKT+nLSCPOT+5Kx2NLyCPLyKPMSORHxWJIReJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABUAAAbPQIBwSCwaj8ikcikMOJ/QqLMYEAysVoKAwO0WDAdiwIAoGwTobkKx+IaHgYH8qu1yGQq3mIw4pwkJgQWBDW9NWltbXIODDo6FYg+SEA8EZYMJjhEREoYADxMUFBUVlYGOmhYWnhcYGaKlBQWaERoRG6tEFxwdGR4UD7MFER+1ESC5QyEiIx0dDyQlJZwWm8fJQhcmzM4PBycoKSAq4yrYACEm2yPNDwAWKyuq80UhLCYQlO5CFi0WSSFcvIARY98QVUpChJAxwyCThxAjCgkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= mail_send-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBPz2/PT29PTq9Ozq7Ozi7Nza3OTa5KymrFxWXGxqbKSipLxa/KwC/NTO1FRSVIS6jMyK/NzS3Hy2jNTS1JyWnPz+/NTK1JzGnHy2hMzKzMzGzOzy5ISyhOTy3Ozy7OTy5JSOlGyidJTOhGSWbKTWlLzetMzmzNzu3MTCxMzCzGSSZIzOhFyKXJTOjJzOjKzWpNTq1Ly+vEyCVHy6dISGhIS+dIzGfITGfJTKhJTKjJzOlFSiZDxmVJySnER2TFSSXExKTERuTGymZGyyZJTKlFSmZDxGPDRiRDxeRHzCfDxiTCQ6LBwmJDxyVERmVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfzgACCg4SFhoeIiYqLjI2OhgECkZOSlZQBhQIDBAOdBAWgBgUGBwYGCAmEAggKrQugo6UHDA0OCA+qAwWboBCipAcRDBK3qqwKCKATExISFM7NFbiDAbChEBYQFAYUFxcOC6nUExgKGcsZAhYZ3hoXG9KEHB0WBx0eHxwcINkXFBoOQkwTVEDEiA0kSpg4gQKFugwpVKSIN6jAChYbWrh4AWNhDBAoIEQMIU6QjBk0asywcQNHDh07ePRQ4KOCwEI/gAQRMoQIDRtFjPQ4EuRBggcDBSFJAgAJEiFAlPBYwuSRoBkym1gV5MSJ1q0AnoDdaiAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= misc-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBOTi5Nza3NTS1MTCxLSytOTe5MzKzLy6vISChPTy9Ozq7MzGzKymrIyGjHR2dGRmZDw6PMS+xFxeXCwqLCQiJJyWnJSSlIyKjGxubBwaHNTO1KyqrHRudFRWVFROVGReZAwKDPz6/JyanKSipKSepERCRHx2fFxaXGRiZExGTERGRExOTDQyNBQSFFxWXDw2PEQ+RGxmbExKTCQmJIR+hJSOlHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBwSCwaj8OAYIBsCgcCQsGZNAgAgwNhK0QkkArrYBAILASMhuMBiSDHAoVcHpBMIpQK5TiWLw4FFhcYGRqGSAcLChsFHBgdHh8gESEhRiIDDAEEGCMjFwkZEZEVDwREAySDIxATCSUIHAkfJh6GFRVDCCcoJikqKiccAQMjHisTFBQfLEMdLRouKyYtLxcICA4rkhTIIEWVESwRMC8dGSwxMh4THkguGpIzES0RKx0JLAkrSBQ0Kw8edYBQIwEEEAlIHPlgTxwEGxhqQMjwkAQCC0deTDgnI8KoBxdGFCDQoEkNfghYTLgxYYhCKkJAkugA88iIBl9q6tzpxE4QACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= move-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIIAAPwCBMTGxFRWVJyenGRmZISGhAAAAAAAACH5BAEAAAAALAAAAAAWABYAAANXCLobwjCyMMiTGNBSbI4UUDzeF41mhqYatC4XFDKvUjbDGS/3xv2FgQD4KwkII4FyyVwGAzCCLjKAMo6uHaAq0dZarC9LITaFULeUL82isMeOsXz+MSQAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= next-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBGSmZPT+9LTitExKTKTipLzqvNz23MzuzER6RFSiVFyuXGy+bGSyZDxaPDxmPEyKTFSeVDRONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAVaICCOZGmeaJoGbBuYgnC6LTzIKioQd1n8QCBJYODhckPCAdETCVM7QiLRRAIUC0bD8RgFfydIRCLpWkcPRcR8FqUhJpqLNJmcvsG2nvTc+/l5f394BYKGKAYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= ok-22:actions actions22 22:photo:22 22:R0lGODlhEAAOAIQAAPwCBOT+vKT+LITmBFyWBCxOBLT+TLT+PHzmBIz+BHzeBDxuBGzGBJT+BEyGBBwuBIzuBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQAA4AAAU/ICCOZGmeKBoIKbkORAu8RDEGRhkcSH0ficFP4RMVFoxEQzETIBw20gPZSKwg0NM0ycuitgpvalqUPaKytD0EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= openterm-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBOzq7OTm5NTS1Nza3MzGzIyGjIyOjJSOlJSSlJyanKymrKyqrLSutLy2vOTe5KSipISGhISihHy6fHSWdHR6dGxubGRiZFReVGReZFRWVFxaXIR+hISWhLy+vLTOtFx6XFxyXExmTERaRDxKPEQ+RDw2PHR2dLS+tLzKvHyOfCw+LCwyLFROVJSWlHx+fGyCbHSidFR2VFRiVCwmLDQuNKyurFxWXExWTDRGNCQmJHRudExKTDw+PCQiJCQuJBweHGxqbBwWHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLgwECA5ADBJIDBYuPBgYHCAkKCgsMDQ0OpAqFDxAREhMUFRYXGBkZGhobCQmEBAUcHR4fHSAhIiMkJSYmJQgGF4MEDScUKCkqIBjEJSsrLC0uL4QDCRcwHTEwMsMkJtosFgYWgwMerxcXMxgiJCTaKzQ1FRwaBhWwAevGjRY4iuVgwVCHCQ47Sgjk0IIHjxL5eqxjocNHCYA6BnlQsONCC2MmGHL8oQNIkB0tCC2wYQMChAMVLmgwUaOlEHYXWBRqccFCBQO3DER4ZbGFhRYhD5m4EIGDhSD0XlnAIDFRAhsFIOywiLFEiRqKDjgYYAOgMRZCEBgBMKBg2cWUcvPq3avXTiAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== player_eject-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBPT2/Nzu7NT2zMT2rLTylKTyfIzqXITeVGzaPFTONES2FDSuJCyeFKT2dKT2bJT2XIzyTITyPHTqLFzaJEzGHDSyFCymFByWFBx+FKz2hJzybHzuNGziLCSiFBySFBRuFJzqdHzSRGzSNFzOLFTGHEy+HDyuFBSCFBRmHDyqNFzKXESyNLzqtHzaZEyyRFy+NMTuvGzWVFzKRCSeFBRqJFS6NMz2vFTSJDS2HBSGHBRaLES6JCyqHBRqLBRWPKz6dKz+fGTeJDSuHBSOHJz2ZIz2TGTiJFTOLDSyJCSeHBReRKz6fJz6XJT+RIT+PFTSLCyuHByaFBSCHBRmNBRuVKT6ZJT+TIT2RIT6LHT2LDy6FCyqFBR2HBRqNHTKRHTWPHTWNBR6FBRePAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfVgACCg4SFhoeIiYqLjIwBAgMEkgUGBwgJCgsMDYeUDg8QERITFBULFhcYGZ0aGxASEhwdpRYeHx8ghyEhCCIjJCUmJ7YoICkpjcnKyiorucsALC0uL8/JMDEhMjM0Nck2Nw4hOAo5OjuMNgEaDgelPD0+P4rqQEEbEkIKPENEPuiH1DkAUsQIhyNIeCRRosPHEkMsBDAB0sTJk3xQeESRomMKlSqEXghw4MDKFSxZtBzBsYXLBxQoungBKejLFxFgwoww5QGFGGM7doz5MeYhtKOL7AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= player_end-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHTKREyyRGzSNNzu7ESyNHzSRJzydOTy9FS6NJzqdLTylKT2dPT2/Kz2hKTyfKT6ZKz6dKz6fITeVJzybKT2bNT2zJT+TJz6XJT2XMT2rFTCHIT+PJT+RJz2ZKz+fMz2vFy+NITyPES2FIT6LIz+PMTuvFzOLIzyTCyiFHzuNHz2NHzyPHzuRIzqXLzqtDyqNFTGHLz2nBSCFGTiJGTeJFzaJFzWJGzWVFzKXEy+HGziLHTqLBR6FEzKHFTSJFTSLFTOLFTONFzKRBRqJDSyFBRyFES+JES6JDy6JDS2HCSeFCyeFEzGHHzmTBRmHCyqFCyuHDSyJCSiFBSKHCSOFGzaPBReLByWFBySFCSeHBRuLBRWPBRaLBSGFBSGHBRuFDSuHBR2HBRmNBReRCyeHBRePBRuVBRiRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfqgAAAAQKChoeIiQMEBYmOiQYHCAmPCgsLCJAMDA2UiQoOD5mIAxAREp2JExQVFooXGBGcnoYGGRQaiRscHR4OHyAhhwMiGbmIIyQlIpsMJo2CJyIox4cpKissLS4KCi8wgjEqIjKJMzQ0NTY3NzgTOYI6OzwPiT0+P0AnQUJDBUSCitj44SKRkRFHjiBJomQJQEFMmjRxkugJlChSokyh8lBQlREjrCS6giWLlixbuCCaMaWIkERdvFD5kjIRmCxTRiTiMmNGzYpVsITZKWYMmUdPjMwok8jMljOPogpCA1Wq1atYs2p9ZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= player_pause-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBJzqdLTynMTytMzyxOTy9ITeXKTyfJzyfKzuhHTWRJTuXKT2dKT2bNTy1GTONITuTJT2ZIzyVFTGJHzqNJz6XEy+HGziJITyPIz2TMTyrES2FES6FGTaJHTmLLTylDyyFFzSHDyuFGziLCyiFETGHEzOHFzWHCSiFEzCFCSWFDy2FByOFEzGHByGFIzmXBx6FDy6FBRyFCSaFDSyFHTeRBySFBRqFES6JDSuFBRmHBSCFBRmJDSuHCyiHAAAACH5BAEAAAAALAAAAAAWABYAAAa0QIBwSCwaj8ikMCAYEApEphN6NBwQCarQitUWFQtGw0EEi8nHByTSGBAfErb7OKFIKnNh/Z4vWi4YGRpEG4CCSBwdHhQfhB0UGI1HICEdF5JCIiEjjEgkJSYnmAAoKSGXSCorKSYBRCwrLSeuRy4oHCUvRDAoMSa6RzIzNBs1RDI2xMZHNzYoNBNEzc/RzCwzKDjSNjY52kc6O9w0RDziNj1IOjIyOz5E6+0kSvT19vf4+VtBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= player_start-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBEyyRHTKRESyNNzu7PT2/LTylJzqdFS6NKT2dGzSNKTyfKz6fKT6dHzSRNT2zKT2bJzydITeVKT6ZMT2rJz2ZJT2XKz6dJz6XJT+RITyPFy+NMz2vKz2hKz+fJzybIT2REzGHFTSJMTuvIT6LES2FHzuNFTCHDyqNLzqtIzqXHzyPHT2LCSiFGTiJEy+HFzKXHzaZGzWVFzWJByGFGTaJDyuFBRuFFzKRFTONFTOLFTSLBR6FHzmTCyeFBRqJDSyFDy6JES6JES+JDy6FBySFBSKHCyqHCyuHDSyJCymFBRmHBSCFBRWPBRuLCSeHByaFBRaLBRqLBReLDSuHCSOFBRaNBRePBRmNBR2HBRuVBReRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfqgACCg4SFgwEChoqGAwSJhQUGBgeLCAQJCoYECwuUhggFDA0Ohg8QERKfBQkME5mFFBUWpISgDBcYGa+EFBYauwAbHB0eHxkgIYYGviKDCCMJEAkgJCQlyhomJ4IoKQcHKhorGiwthgsmLi+CMDEyM/Au8jSGKiI1NoI3Azg5OTo7RITgYahHiBA+Bv1oASSIkCFCXtwwpIBIiSKEfhg5giQJEiVLDOkA4oNJoSZOijyBUiSKISFKikw8KYWJESZTDFEpUiWkIZRMmFgxVPKGT0NXsGRpsqipIC1Otjh1quXK1KtYs2odZCAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= player_stop-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBJzqdLTynMTytMTyvMzyxOTy9ITeXKzyjJzyfLTylMTyrHTWRIzyVKT2dJz2bNzy5GTONJT2ZNTy1FzKJHzqPJTyVEzCHGziJITuPJT2XMzyvDy6FGTaJHzqNIzyTLzyrDSuFFTOHGzmLGziLLzynCyeFEzGFFzaJByOFFTSHKzuhBx+FIzmZBRyFCSaFCymFHziTBRmHFzKNBSCFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAazQIBwSCwaj8ikcikMCAbQqBRKKBiKhwAise1yuQjF4kpkNBzotPrhSDggxUijIanb73XHpEipNCxzgYJ/EgVFFxgZDRmMjYuMDRobRRwdHpceFZmYmB8gRSEiGKMjGKWmqCQZJUUmJx0oHbKztB0VCEUpHCq8vb69GCu5ISfFxsfGHQFFLCYcz9DR0CItRS4vITDZ29rdxDFFMikv5OXm5SEz4S7s7e7uNCZM8/T19vdEBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== previous-22:actions actions22 22:photo:22 22:R0lGODlhFQAWAIQAAPwCBAQCBGSmZPT+9ExKTLTitKTipNz23LTqtMzuzMTuxDxaPGSyZGy+bFSiVER6RFSeVEyKTDxmPERyRDRONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAVABYAAAVXICCOZGmeaBqsbJCWLXsKwosKQy0SfN+XuILONgoahqafCHdACInLQUJReJZ8vNGC0WA4HlAtBBKRhLWRx2IUa5kWE/MOqyxRKOdzPc8HYPt8dASAhGchACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= queue-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBKyqrKyurGxqbPT29OTm5JyanPz6/Pz+/JSWlIyKjHRydFxeXExOTPTy9JSSlHy6ROzu7Nza3Hx6fIzCTFyuPOzq7MzOzISGhJTKTOT29GyyPNze3Ly6vAQCBHSaPJzOTKTOTMT2hHS2POTi5ISmTOT2xOT6xLz6RLzyfKSipGSSNLT2XLz2XKz2RNTuvGSuNDxuJHzCNIzSNIzWNIzWPJTaVJzafHzGVNTS1BRWHCx2FDR+FESOFFSmHFSqLFy2LFSuFMzKzBRiFDSWHCyCHBRqHMTGxBRaLBRSLLy+vMTCxBReNFRSVHx+fBRqPBRyRLS2tISChLSytHR2dKSmpJyenGRmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAABAoOFhIcBAwCLjIsBBJCRkgUBBgOJjYIEBwicCJ+dBAIICZeKjI+gqp8HAgcECgOlqJudq58BCwwNDQ4PpwKbEA6eqhESARMNuw2OkBQVEcWhFhcYDcnNgg4EGRobFsUEEQUcHQ0eBs0fIO0hIgQj4Z0RFiTmDZTNJSYmJycoUpiQx60ACQnIGkhQ0WwFCxYtWrhgkeIFDBIR7km4IEChOgAxRsiQMYNGDRs3cFTggPDChQANcnzUsYNHDx8/gPwI0iOAkAs5LghheGHmkKM7iPQoYuSBgQ5HhBw5ou7Ig2ZIsibRwTSJggcBlCyZSrXBEQXaBjhlwgTJVxUdc6QeWdLBQJMOaBc5CRDgyZO3UC/MVdLhKl5tD4RCUZAA7hGhRzp0iHI1gBRtKiRwoKpiylTBHaZMEYBWABVtAQpIOFIlCtklS6KMDoDWyelFcDsEsFKFbwAVVh4owCDlNK8mi6hcYcCgiXNe0KE30bbITiAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== redo-22:actions actions22 22:photo:22 22:R0lGODlhEwAUAIUAAPwCBKyqrMTCxNTO1NTW1NzW3MzOzGyipJSOlPz6/Pz+/OTi5LSytPT6/GyirHx+fOzu7AQCBHx6fHRudLzm7NTS1Hx2fIR+hNza3KyurOzm7KTe5Kzi7OT2/LTe5NTu9PTy9Ex6fFSanGSqrGy6xGSutDxeZDxibEyGjFSapJSWlLy6vDxaXEx6hLSutERudFxeXDRKTJyanKSipKSmpLS2tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAATABQAAAavQIBwSCwaj8ikcgkICAYEQmHaNAysBcDhAEAkFGDwAsBYmBfZQ8PxgCQi8Ei2LJlI0hSFowKxXCQXGAAZGmdpGxQJDgNuYHMLdRBpHBQdegNxgmULhWkeFB8fehggCo+FGlkhIiMkJSYBmYOoaAAnKCkiJyorpKZknJxZLC0oLLyYcBUALrQCACwvLDArjF8KA2QM29sAMTEAEwKNYM9KFwgIMjIzNDVM8PHy80cGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 reload-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBDRqLDR2NDx2NEx+RJzSnJzOlIzKhHS6bGSqXFySXHS6ZHyifDx+NDyGNHy+bFyiVEyeRGSuXFyqXOz27Pz+/Gy6ZIzGhITCfESOPGy2ZFSiRAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAV0ICCOZGmeaKquZSAMQRwTLBAUuHEgiVILhYVwyPgFa6bGEUlyFB4nCComiBQkk4lkFJAsUAPIw0CpWLiQC+V7CkAwlLOoOy6zTfSRY29dWCxQJ1smGUtMIk53h4mHI4WKKgIaGBgGBoYrG0KAQgiNn6CNBCEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== revert-22:actions actions22 22:photo:22 22:R0lGODlhFgAVAIYAAPwCBJyanGxqbASaBAR+BJSSlPT29Ozu7PTy9LS2tLSytGRmZASWBGT6ZPz6/Pz+/Ly+vBT+FASGBJT+lETyRAT2BGz+bIT+hLT+tGxubASmBATOBATqBATGBATeBLz+vNze3ASOBNTW1BS6LASiFATWBHz+fJzOpJz6rJz+nASiBERGROTi5MzOzAT+BHx6fFRWVHR2dAQCBFxaXOTm5Nza3MzKzKyqrExOTExKTKSmpIyKjISGhHx+fHRydMTGxKSipJyenIyOjISChFxeXDQyNFRSVCQiJCwqLDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABUAAAf/gAABg4SDAgCIAwSIjIwFBgcGCJEJCgsADA2LjYwBBg4PoQ8JDxCZEQwSBKuNBQiioQoPEhMUFRYNFhcYD5uesA8BGRobHBwdGxseFR+brsAGIAkaHRwh1yEeE76voiIjJOEaJRLhEiUm3LAgJyjuKSohKCkhG5orAI+wLC0PoMAhOrgggC9ANwfR+r1Y8QLGwhgBO0goaCCUAwQg+gELpaEjA3zPJB2QoXBFjBkLFz5oAYOiSBo1bGyEdQNHjnwIJtFgIUJHgZ87ePR44SODAB8rCvK08QOCCCBAgvwUMmRIjxg+BCQFkGEGjK8wngbgMeQFVgELiKAtgo8TgBZjSonEEEEDIQ0RRoiwdQvARoEeOIiAOLLgQMYcMJC05aRgR4wcM2gQvvtjBY4jixsBGZIBhoADDg7w+5GkCGa+AJKqXpFjdY7WAAIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= run-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBNTS1BS6LASiFHRydOTi5JzOpEyeNJz6rGxqbERGRMzOzHS2PFSmNPz6/Pz+/MzKzNza3IzCTNzy9GSuNKyurJSSlHR2dLS2tLy+vJTKTLzufOT29GyyPFxaXHSaPJzKTJzOTKTOTKz2PMT2hPT29Gy6NGxubISChJyanPTy9FRSVISmTNTutOT2xOT6xKz6NLz6RIyKjGSSNKzmVLT2XLz2XKT2LKz2RNTuvHx+fExOTDxuJFSmHHzCNIzSNITaJIzWPJTaVJzafHzGVFyuPBRWHBRqFCx2FDR+FESOFFSyLFSuFHx6fBRiFCyCHDyWHFxeXGRmZGRiZDw6PBReLBRSLBRqPNTW1DQyNBReNBRuHBRiLCQiJNze3ExKTFRWVCwqLKSipOzu7LSytBR2TOTm5MTGxDw+PDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLhAECA5CRkpACBIYFBgcIm5ydCAYJCoUFCwwNDg+oqqkPEKGFEQsSExQVFhcXFhgRDw8Zr4QREBobHB29yL0OGB6iAB8gIdIiIyQlJgQnKCkZDyoVK84sLS4v5jAxJC4Myd4y4YIzNDU1NjY3ODgbOcepJRE6djjj0cOEDx8/gPwIImQIkSLZEhAI5czIESRJlPTosaTIEiZKUDS5MPGEgopHjDhx8gQKFCVPjiSYGSWBlClUnFWxcsWIEStIYlop4EBFASwronjI4mwQBAtatnDREqGLFBVeFnwBAyZMU0FPr1S5IqaA1TERAmxd4bUQGRllMMp4EGOmy5QxAc4o2LGiy1cAYlCUWZFAzJiiXgJkQEMljV9DJyNLnnySkeXLhugEAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 showmenu-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIUAAPwCBGRiZISChHx6fHRydGxqbMTGxLy+vLS2tKSmpJyanJSSlIyOjIyKjHx+fFRSVFxeXFxaXFRWVExKTERCRARiBARqBARyBAR2BAR+BASGBASOBASSBAyWDBSKFASKBASiBAS6BATSBATuBAz+DKz+rASmBATWBCT+JFz+XLT+tATCBDT+NMT+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZkQIBwSCwaj8WAYDkgNAmEQiEQEAoMB4Q2kVAoFoxGFTDofhsNgaMpfQipAUhE8nhM7pQ8cs9HViwXGBkaGxwdHhdGFR8gISIjJCUdfiYnKCkqG3wVKywtmn0VLRx9Q6ClqKh+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 spellcheck-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBAQGBBQWFAwKDOT+vJz6JHzOBKz2TKTyPHTOBEx+BKTqRITuBBwyBDRWBGS2BIz+BHzSBER6BAwSBCxSBGSuBKT6JDxqBBQiBKT+LHzeBDRaBFSOBAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWAICCOZGmOQSqm6iq0aLAC7UDLczwTuAzjqx6AN4OVWCpey0haDoVMHe1ZBAJvO6i1qf0hC6dwqWAQm8mHM8JUSCgW4gKjkR61345w4AGJROpkEhN5YhQVFhENCAUXBxiEZhkVEA0aCRKPZiSGEBsKg5pHHB0LkKEjDqmnq6xmdiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== sphere-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIUAAPwCBNTS1MzKzMTGxLy+vLSytKSipNTW1MTCxLy6vKyurJyenIyKjHx+fJSSlISChHRydOTi5Ozq7HR2dFxaXFRSVNza3Pz+/GRmZExKTDw+PJSWlFxeXExOTDQyNKyqrIyOjDQ2NISGhCQmJERGRCwuLERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQIAQEBAMCAXDcEk8IBAJxYLRcDADgUN2kDAsHpDGMhuRRAII6WNCqQidFslFYkEUpg1M5o2wlM9pUxB6GgADCAIBFkVdG2AcHR4ABAkJT3YfBiB5FBmSSAYKBQofCw5gGBUan1MLrhsgqJ0hkgAGDQwMIiINg52rQw4QE8SDGL8eI0vGx20kq8pMHdMZGRq0I4VMQh2rHiUaGiQm2+VMfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== start-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHy2hPz+/EyuZOz27NTqzKTGpHSmbFyKVMzqzMzqxIS2dHSqdHSqbNzy3ER+NOTy3Nzy1MTmtER6NNzq3LzirOTy5NTu1LTWrDR2NLzOvITKhCxuNLzitKzapKTWlJzSjJTSjJS+jCxmNKzCrHTGdDReTNzu3MTixJzWjGyOfFSeXER2THymfIyyjJzOnJTKlHS2bGSyZGSqXFSWVExuXDxuTDRSPEyOTGSWZHzChHzCfER2RDxuRDReRDxiTDRSRERyVGy6dGy+fEx+TDRORDReVDRSTFyqZESaXDReXDxiXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfTgACCg4SFhoeIAYiLgwGKjIkCA5CHAQIEk5SElgQFmYcGBwiblwkKCwwHDaKEAg4PjQIQEQkSBASXBBOEFBWwAJYWFwkVFRKmChgZhBobHMACFLUdHhUfICEfIiOEJCUcJgInCSgYHucp2CEL3IMqK9wsLS4vMPYwMTIyMzQmhDU2bghigSOHjg07NuDg0SODD4GDTPwAMuhHEBxChsQg8vCGiSKETJgwQuiICRZIBvwowrIIRUhHLCY5oqlQTBv+apY0oURnISU9fRJaIrSoTzqBAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 stop-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAASC/JxaVJxSTKRSTKRORJxORJRORIxORIRORJRWVMxyZNx6bNRyZLxaTKxaVIxCPIxGRHxCPKxiXNR+dNRuZNxqVORaRMxaRMRWRLxiXIQ6NJROTIRaVMxmVNRWRNxSNOROLOxKLNRCJLROPIw6NKR6fKxqZKRuZMxiTPRKJPxOJPxSLPRCHNRONORKLPxiPPx6VOQ6FMRCLLRORPz+/Ow6FKQ6LKxWTPRCFLRCLKRGPHw6NNRybMROPIxWVJRiXMxaTKRKRHQ2LGxWVIxqbLR+fKxeVIxSTFw2NGxKTNSGfGwqJHQ6NIRSTJR6fHxeXDweHDwaHEw2NHRaXEw6PFxSVGxaXJSChEw6NGRSVFxKRFRGREQ6PGxiZKSanJyOjJSGhIR2dHxubHRiZIR6fExGRFRKTGRiZFxeXHRydIR+fHRqbFROTGxmZGReXDQyNIyKjJSSjHx6fFxaXFQ+PFRSVHx+fFxWVDw6PCQiJERCRFRWVExKTDQ2NGRmZCwuLGxqbBQWFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHAgggIABBAoYOICAoEOCCRQoWMCggYMHECI8dChhAoUKFi5gwJBBwwYOHDYCkJChg4cPIEKIwDAiAwkEJVI6NHFCAYoPKVSsYCGiBQEND1QKpODBhYoXMFTEkDFCgwalAGZ4AKECBg0VNWTYsHFV6Q0MLYKqwOEihw4NO7AO4AESZoseDR5o8OFD5Q+WDjAAATKCQBAJQiKUGPLwB5EiJwYY0YGBxIANR5AkwQo5QYQHSpYwidAECRKsQ5w8SQIlShQpSaZIoYK1ipUpV7BAkZJFyxYuUrB28eLlC5gwYsaQKWPmDBqVXdKoCbOmC5stbdyoecMGjpWHaMLEU5EzBw0aOmzqmOeOFY2dOXfe4Mmjh86ZN2+w6pGzh08dOHm8oQcafeSnlB577OHHH3nQpwceb/yBFQD7yYEGHnrowWAeEwrkByCAEPhGIIFsZEBAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= top-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBKzKrPz6/OTu5LzWtKzCtGyOfFRyZDxiTDxiVHSqdMTmvIzKhHS+fFyiZDRqPDRaTFyOVESCNDR2NDRiPDRWRDxWPHy2hPz+/CxONISqhER2ROTy5MzmzFSSVPT27NTq1MTmxKTOpGSWbEx2VDRORNTqzLzetJTKlITGhFSOXDxmVOT25Nzy3MzqzLzitKzapJzOnHzCfERyVNzy1LTirLTerITGjGSuZDxWVLzirJTOlHTCfGy6fEyuZEyeZIS6jHSuhHSifHSmfIy6jKTanKTWlHS2dFSaVEyCTDxeXDReXDxiZPz+9JzWlJTSjGy2bHyudPT69NTuzJzSlDRSTHSqbMzqxJS+jIS2fDxqRDReVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfMgACCg4SFhoeIiYUBAgMEBQYHCAmKgwoDCwwNDg8JEJWCERISExMUFRWUoIQWq4cXGBmuhLADGhuzALAcHRoeCK6wHyAhIiMkJaDCJh0nKCkqK8mJsCwtLi8wMTINMwnThsI0Jgs1NjE3DTjeOeEYLOMLOjUwOzw9Pj+dqoIXQEFChhBhYaKIkSNIkqzIoWQJEyaIFDQx4eQJlA0WZIGKImWKESo4NlSosspKkytGnuB4kLHkBwJYsiDRAqEdKFETHjzYUqJnrp9ADQQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= undo-22:actions actions22 22:photo:22 22:R0lGODlhEwAUAIUAAPwCBNzW3NTS1NTW1MTCxKyqrPz+/JSWlGymbMzOzNTO1Nza3AQCBJSOlPT+9OTi5KyurIR+hHx6fHx2fPz6/LzqvHRydLS2tKTipLSutOT25MTqxNTy1LTitPTu9DxiPGS2ZGzCbGSuZFSiVEx+TPTy9DxePEyKTOzq7Ozu7ERyRDRONLSytKSmpKSipJyanAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAATABQAAAapQIBwSCwaj8ikchhoCgYBQmEZMFivBwACAUh4FYnpgkFmWBsIB5cQeLghgEBEEpkYKAhDhVuwWCQPF3FXd2kVGFwXbW4ZcWV4BhobiAB9f4EAD1d5HBwbHXyLD3BVVh4fICEiIySVfhOYpQYlCyYjIycmlaKNshQeAiYnJLqWKJgKhAYpEiYqugeicATKKA0AKysADRAZFyyCFy0uL+UvWUvp6uvs7UR2QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 unlock-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBKSepLy+vMS+xJyWnNTW1PTu9Pz2/Ozu7OTe5KyurHx+fNTO1IyGjJSOlLSytISGhOTm5FxaXKSmpFROVHRudHRydLy6vMzGzKyqrHx6fIR+hOzm7Nze3GRmZMzOzLS2tExOTNza3MTGxHR2dLy2vFxWXEQ+RBQWFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbBQIBwSCwaj8aAQDAQEJDHQMFwQCQUC2iRIWgsGo5HQDuERBrEgEJCBjgi2aFiQjlKFmqBglEpOuwWARcYERkDFhZkEhobShwHHQoODR5aFRsOChFVCR8gGyGWeAoFXGIOHmxQCw4BHwYRIp4QEqFQmAEjVgwDAbR1UBatIwYJXFi1tkckELkIsiUBGxImJ1AazSUcIhjRC7XWSB4NzsYj0hInKFoWBCARBRgPBBYh62QeAQPdGQ0m920CChxIUAiiIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 up-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBIS2fHy2hPz+/ER2TNzq3HyudERuTPT27MzmzIyyjFSSVDRmPOTy5NTq1MzqxKTOpGSWbDRORNzu1MTmvLzWtJTKlITGjFSOXERmVOT25Nzy3LTirJzOnHzCfHS+fDxiVNzy1NTqzKzapHTCfGSuZERyVDxWVOz25LzitJTOlGy6fEyuZEyeZDxeVIS6jHSuhHSifIy6jNTuzKTanHS2dFyaXEyCTDxmVDReVDxiZHSqdJzSlJTSjGy2bDR2NDRaRPT69KTWlHSqbPz+9ERuRJS+jFSaVDRqPDRSRFyKVER+NKTGpPz6/LzSxKzCrHSOfERmXHzKfDReTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAfKgACCg4SFhoeEAYiLgwIDBIyIjgUGB5GFjggJCgsMl4KODQ4PEBEHEpeZExQVFhcYGaiLjhobDhwcHR4fBCCyhpkhIhQcIx0XJCUmICfAAyghDxQpxSokKywtByAuhAIvMDExMigzNCM1Njc4Jzk5OjqIOwMPPD0+P0C/jAZBM0I8ShzQ92kIkQdCepQoQvDSDgQVjAQ4ggRIkk9KlvxAwoCBhI+fQiJi0qSAkydQDkQB8skACgpSpGhjhnGJRiQVp0wRybPnIAOBAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 validators-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCRSlHSevIyuzDRqpCxinEx6rARKjAQ6hDxypARCjARChAQyhFyGtER6rAQqfFSGtKS+1ISmxJS2zGSWvBxalBRSlLTO3GyWvAQyfKzG3ERyrCRanAxKjDxqpHyexBRalGSOvJy21AxKlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbNQIBwSCwaj8ikcgkICIiBQZFQqFoNgEOAiEgQBQiEYrxgeBsIokPxfUCGioMw8pAMBY/J0MCICPEUQwdeQg4MWEIVckIKFkQJbIwLixduQgRpbVICC5hSGBkaABIPB4FcGwAFHAAIDqqLFB0KD6+CFQAKrx24CoiCD1JCHgcQCIEbxQjCQx8IBUMSYpkDCAvLRnFEBwgggguO2YuXDyFDCZYUpwADDAREHxlE7SIA6KcFGU9EI0Xj3BUsdDOy7w6RAgsUQGPCsKFDhnSCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 view_choose-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIQAAASC/IS+jIS6hGyubJSSlPz+/KzSrEyeTPzuzPyaBPxaBJS+lESGRIQCBFSeVEySRDRqNGxqbHSydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVQICCOZCkGgjCMhCkKhXGwIpIoo7AMDA3cjdHA8YD4gK6jIgiIOJ+i1m+ZjIqQVemSCUhJVlYXzPDwmXQ8nw0nGhwYxjA2qW0wn1CAtMoX+UMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== view_detailed-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIMAAPwCBIS6hIy+jGyubPz+/KzSrEyeTJS+lESGRGxqbEySRDRqNAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQwEMhJq701iDAwDURheFNwDIiUJMDqSoOhLGRt33igdzUo2iaUiuVawWQ0nHJ580cAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= view_icon-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIMAAPwCBIS6hGyubPz+/KzSrEyeTJS+lESGREySRDRqNGxqbAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ7EMhJ6wxYUBz0HUSxgeJlCMd2ppNQIAnlwlZtKXgu5brt/zWORyIchYwl4kqFkr1irSfQxsPtqtOKPwIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== viewmag--22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBIS+1ITC1Lza5Mzm9NTu/OTy/Nzq9LTW5GSitDRulJTC1LTa5OTy9Oz2/PT2/Lzi9JzG3FSevDx6pIzC1KzW5NTq9PT6/Nzy9ESWvKTK3Pz6/Oz6/JzS7Hy2zEySvBxilIy+1Lza7Gy63CxynCxafJTG3PTy9FyixGRmZIzG1MTCxKSmpJSSlIyKjHx6fIzO5EyexCRGXIzC3Nzy/JyanGxqbGReZExKTHzK5GS21DyezCRWfBxCXHSyzMTq9LTe9FSqzCx6rCRSbBw+VGymvKTS5Jza7KTa9GSu1CxunFRidHSqxHzC3GSuzESWzDRypCwyNFyWvHy63HS21Gyy1ESSxDSCtCRWdLS2tDyCpDx+rESCtFSKrCwqLFROVIR+hCxSdDRSdERCRDw2PFxaXDw+PFRSVISChNTO1Ozm7Pz+/CwuLJSWlNTW1NzW3Ly6vFRWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCggEChQGDiYqDAQMEBQYHCAkKi4sLDAcNDg8GEBESE5aDFBUWBhcPDhifEhmioxqaGxccBqwdHh8goyEiGKkXDg4FEB0jEiQlliYWDicbG53FxyjKKYsqBw8PKywtLi8vMCMxIDLYijOnNDUvNjc3ODk6Ozw9Nos+FRA/EP9AOpALImQIkXyKioQw0gHIESQCRyTZoYTIknSKmHho0iQHjBwjnDyBMiRKDYSKJEhBoUPHFCpVrFzBEiWLDZSKtEzYwoVLlwkgenj5AiYLxkUgwgwRM8TgmCVkvrywOarFizJmsp5BkwbM0KJHB7VQQ1bNmrNrTqRgI5WqojZuKt6kSQNnRRY4d+N8Naqoxc2/gFPYMMO2KM5RiswMRfMFMeKsZhxLHmQnEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 viewmag-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHS6zHy61Hy6zLTW5Mzi7NTq9OTy/KzS5FSSrCxafIS+1KzW5Oz2/OTy9Lze7Iy+1EyOtCxmjJzO5PT2/EyavDyCpCxihJzG3NTm9Pz6/Oz6/Nzy/NTy/Lzm9GSmzESCrBRKdNzu9PT6/Kze9IzO7GS21EySvCxejMzm7PTy9IzS7Fyy3ESezCQ+VFRWVHzG5DSOvBxObBwyRNzu/NTu/JzW9FSq1BxCZGSqzJTS7Fy21CQ6VBQmNFxaXFyevKTS5Gy+3CRahExKTGSivGyuzHS61HzC5FSizBw+VBQWFJyanEyKtFymzDyGtCxupBweHKyqrDRylDxynDx6nEx6nDxqjDw+RHR2dFROVCQeJGxubIyKjDQuNCwqLHx6fMzKzEQ+RHRydOTi5Ozq7Pz+/NTS1MTGxLy6vKyurLSytERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCggEChQGDiYqDAwQFBgcGCAkKi4sLDAYNmw4PEBESloMQE5AUDRQGnhUWF6IAGBmoGhscHR4THyAhoo0iIxQjDZEkJSYnKLyLECkNKhoapwYkKywtFy4vywanpwcc0zAsMTIz2ooLkDQcNTUeJDYwNzE45os5Ew/vHu86MDstJPDo4WPRDwFAbNhYsRBGkHlCZgw5p4hIESNBYBwRhySGkCRKlhRcxIRJhSY3TBT54ORJEihRfFBUJEXCkylUqlgJMUPJFSwxX4VIMgNHkiQ9emTRcmVLUEtctgzp4sXLlS9gtigJIybKzEFcxpAZq6GMWRU+tnYdmYiLGTNgJ86gQZNGjd01PoF+5fLCh1+ZgPt68bn2lajBYbZcMXy4KuPHAOwEAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 viewmag+-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBIS+1ITC1Lza5Mzm9NTu/OTy/Nzq9LTW5GSitDRulJTC1LTa5OTy9Oz2/PT2/Lzi9JzG3FSevDx6pIzC1KzW5NTq9Pz6/OTu9ESWvKTK3PT6/Oz6/Nzy/JzS7Hy2zEySvBxilLza7Ozm7LSytISGjNzy9Gy63CxynCxafJTG3KSepGxubLTi9FyixGRmZIzG3MTCxKSmpJSSlHx2fIzO5EyexCRGXIzC3JyanHx6fFxaXExOTHzK5ESWzCRWdHSyxMTq9Lzm9FSqzCx6rCRSbBw+VGymvIy+1KTS5KTW7Jza7ExKTCwyNGS21DyezCRqlFRidHSqxHzC3IzK5IzG5GSu1KSipFyWvGyy1HSuzCRWfDw2PLS2tGxqbDx+rESCtFSKrBxCXCwuNFROVCxSdERCRISChJSWlDw+PNTO1CwqLFRWVPz+/PTy9IR+hNTW1NzW3Ly6vCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCggEChQGDiYqDAQMEBQYHCAkKi4sLDAcNDg8GEBESE5aDFBUWBhcODhifEhmioxoWnBscBh0QHh8gIaMUIiMbDxskJSa5JxIoKZYqBBwPFxcrLAUtHicuyy+LMBYPDjEyMzTlNSc2ITfcijinHTk6Ojs7PD0nPj83LItACBBBIAh5wcPDuSFEihhhl+gIkiRKlixh0uSckydQbkRhmEjKhylTalCpcsKKDxRFmlzhOEgCFhdZspw4oQUEkS1cunhhOejLBCJgwoSZEELMGDI0SHgZBSBEmSJQFZrZwYXMGaWj0MxLk4bLjjNqzqxhQ6MLTwAzRqgd0aZtGzcvN9aQeaNzUQ44cdSokROjixy/bOTSZTnjBQsviBMbfpFmDtIu/JhaSiP3DA/Jo9KYSYO5MwA6gQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== view_multicolumn-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIMAAPwCBIS6hIy+jGyubPz+/KzSrEyeTJS+lESGRGxqbEySRDRqNAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ9EMhJq700iDCq5lNAFIY3llJwDAiQvIDKuslgKEtl41jv/8BYAJQZdiSCk4kUWrVeiZiTtstRqsGstuePAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 view_sidetree-22:actions actions22 22:photo:22 22:R0lGODlhFQATAIUAAPwCBIS+jIS6hGyubHyitPz+/KzSrEyeTJS+lESGREySRDRqNOz29HyutNzu7GSKlJTSzKza3MTi5OTy9KSipFR+jITKxNTm5NTi5ExyfHzCvITGvIzGxIzKxDROXERqdFyipGSurGy2tFSOpDxWZDxibFSGlHSyvERmfDxGZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAVABMAAAZ4QIBwSCwaAYGAYHAEEJqBguHQJDyNAsQgUS1ciYODYlG0WhneprHhaLfT6uEDEpG0J3AhZV+sWCB0EhcOGF9NGRqJGxwdDR5DSUtFHyAhIiIcI4+QUlREHiQlJieaRVlbTSilRWFjTSQkcWopsrVHexS2uru8vUVBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= view_text-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIAAAPwCBERGRCH5BAEAAAAALAAAAAAQABAAAAIbhI+py50BQYTU2XvqpAH7pnVc95VIKHHm+vkFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= view_tree-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIMAAPwCBGxqbIS6hIy+jGyubPz+/KzSrEyeTJS+lESGREySRDRqNAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ3EARAq73z6prFEMRGdYVxiNIkIEQyTkEsUcShLGiGWvo++jyKYBgSkUw5FcuVSvVqN6B0SqX4IwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 webarchiver-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBHx2fJyanLSutLy6vIR+hFxaXEQ+RCQmJNze3PTy9Pz6/KSipLy2vMzOzNzW3HR2dJyenMTCxJyulGSGrERurISWtLSytHx6fJSSlDQuNOTe5NTO1MTStLzSpKTGlGye1FyWrFSGxDx2dISSfKymrKSepMzKzOzq7KzerNT6nLzyfKzmbHTGVITKZFyWzFSafESKHNTS1MS+xFyudOT21PT25OT+tLTufEyatDx+3ESGvDySdBxWbPz+/MzGzNTW1AQCBCx23FyqpMTmpITKzGSqtESC1DRyzDRuvBxiNHSWdGxmbCRu1FSWzHzCpNTuxOz29MTm9Gyy3EyetEySxCRezBRSRBxSDCwqLGRmZFSO5IzGxLTmvJTG9GSi5BxWvAxGbJSOlDRuzDx+1Gyi1HSyxJTOjFyqjGyqpGyexBRKrBQ2bBxKJCwyLCxmxDx21GSW5KzajHzSNIzSRGy2TCRmrAw2hDRSVLTenITKTFSqHDyOHAwmVHyGnIyOjKyqrBROvGSanFymLAwubLy+vMTGxBQ+lBxKnDxqlFSKPCxaPHx+fAQeTBQ+LAQKHAQOFPT29FROVLS2tISGhGReZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGDAgMIGEBgQAEDBxAgNBgggYIFDAogGNBgIkEHBR4sgICAQIQEEiZOoFDBwgUMGTREGBBhgwIOBjt4+AAihIgRJDCUMHFiAIoFKQmmULGCRQsXL2DEICHDBIoZHAcQpFHDxg0cLnLo2MGjR4ICPhT8AHIiiEAhQ4jYsFGjiJEjSJIoWcJEgVUUCdwCaOLkCZQoUqZQqYLEyhUsWbSgmLxBcJMtVLh08fJly5EjYMJgQaGBiRgCbQWOEUKmjJkzaNKoQbKGTRs3FRMAcSD4DZwxcUDImUOnjp07bPBAeCCGAwcJgq1IP7Ijj549fMKw6ePnjwwHgCQQZBAMIBAYMGMEuRh0hQ2hAmLEFHJgSEIJ8gAOIVqTSNEi94z84QYEAlxAACAMGNRIH4Q40kgjBQDhQwAIBGEhfgQ98ggkkDACRCQKMICBRB4NJIkADUxyASWVRFTiizDGKONBAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== window_fullscreen-22:actions actions22 22:photo:22 22:R0lGODlhIAAgAIUAAPwCBCQiJDw+PExOTJSS5FRW3Gxq3Hx+5Kyq7Ly+9Fxe3AQCzBwezDw+1Jye5HRyxLS27MTC7NTS9KSmzMzO7ERGlPTy9Pz6/MTCxOzu7DQydPT29OTm5AQCZOzq7Ly6vOTi5Nze3JyanJSSlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAgACAAAAaiQIBwSCwaj8ikcslsOp/QqHRKrQYCgsFyILg2sc9uUwAIfAFkphawTq7bTkKhYDgQEAk8oapYLBgNCgcOgwp8BA8OCBAREhMUFXwWFxgWlhgZGRqSG5YWmRwcHZwWHBmmoaNUCpYZpR6hopIZH6gfICGqUwocIqehISO5VQwdxsfIUW9bQnBJZGZMZmlLYE5i0ljORlxeVd/g4eLj5OXmRAZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= window_new-22:actions actions22 22:photo:22 22:R0lGODlhEAAQAIUAAPwCBISGhGx+1FxuzExexDxOxCQ+vBQuvAQirFRWVOTm5MTGxLTG7KS27JSm7Iyi3HyOzGyGxFRqxNze3ISa5GyG5Exu5DRe3CRK1AwuxMTCxFxyzDRSvBQytAQitPz+/Pz+9AQCBLS2tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZyQIBwSCwKA0jBgFAwHBAIZOKoWDAajgckIiFMFlNAYLFwUCqWCyaTWWjCyEBkQ+AYOgiP9Pj5gPqAgBNwgYEhIR+DfIUfhyKJhI2Iko+QiyKHjoKRH5ghlX2KYoEioKFwE6mqq6lhCa+wsbFGtLW2Q35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs= window_nofullscreen-22:actions actions22 22:photo:22 22:R0lGODlhIAAgAIUAAPwCBLSytKSmpJyenJSSlJyanLy6vPT29Pz6/Pz+/PTy9HR2dOTm5Nza3JSW7FRW3Gxq3Hx+5Kyq7Ly+9Kyq5MTC5Fxe3AQCzBwezDw+1Jye7ISG3Hx+1IyO1Jye3LS25LSy3ERCjISChCwqbOzu7AQCZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAgACAAAAaaQIBwSCwaj8ikcslsOp/QqHRKrVqv1EBAINBqBdfAgEAYFAYCwtVwQCQOcMUinEggFIxGY24NvB0PDxARDhITFBUOUmwJFhcXGBkWERqUFotwFhscHR4UHxUgHyFSASILFnVudW8HI1WprHZuJCWwqrgIDLZUFm6rvwe8U6m/CKvCsMdxJHDJVBgl0tPUWNbX2Nna29zd3k0GQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7 wizard-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBPz+zPz+xPz+1Pz+3Pz+9Pz+7Pz+/Pz+5Pz6zOzmxPT2zNTOvPTu1MTCtOzq3OTezMzKtLy6nLS2jPz6xLSurOTm3Ly6rKSilHx+bNTOrJSOlNTSzKyqpISCfFRSRFxWXJyenIyGjHx2fDw6NKSipFROVEQ+RBweHDw6PAwODDw2PGRiZIR+hFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaAQIBwSCwaj8ikcslsIgPQgMApFAQGBOi0CSUUvoMtE2o4mBECsTKQKJ+lTcVigDggwk1GoyGfQ5kODxAREhMUVkwVFhAXGBkaThscHB0eH1QgISIiIySYJSMmJyiYGCMfKSpUJqAmK6pOLCGhJLBOJS0mtVRCIy67vAAmqcFCBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw== ferret-0.6.orig/widgets/tablelist/0000755000175000017500000000000010244441702015652 5ustar fikefikeferret-0.6.orig/widgets/tablelist/scripts/0000755000175000017500000000000010244441702017341 5ustar fikefikeferret-0.6.orig/widgets/tablelist/scripts/mwutil.tcl0000644000175000017500000002334207741225421021400 0ustar fikefike#============================================================================== # Contains utility procedures for mega-widgets. # # Structure of the module: # - Namespace initialization # - Public utility procedures # - Private procedures used in bindings # # Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csaba.nemethi@t-online.de) #============================================================================== package require Tcl 8 package require Tk 8 # # Namespace initialization # ======================== # namespace eval mwutil { # # Public variables: # variable version 1.3 variable library [file dirname [info script]] # # Public procedures: # namespace export wrongNumArgs configure fullConfigOpt fullOpt enumOpts \ attribSubCmd configSubCmd # # Define the binding tag allModif to be a duplicate of all (having the # same events and scripts), but replace the script corresponding to the # events and <> with a new one which skips # the widget's parent when searching for the previous window in "focus # order" ( was replaced with <> in Tk 8.3.0) # proc defineAllModif {} { foreach event [bind all] { if {[string compare $event ] == 0 || [string compare $event <>] == 0} { bind allModif $event [list mwutil::skipParent %W $event] } else { bind allModif $event [bind all $event] } } } defineAllModif } # # Public utility procedures # ========================= # #------------------------------------------------------------------------------ # mwutil::wrongNumArgs # # Generates a "wrong # args" error message. #------------------------------------------------------------------------------ proc mwutil::wrongNumArgs msg { return -code error "wrong # args: should be \"$msg\"" } #------------------------------------------------------------------------------ # mwutil::configure # # Configures the widget win by processing the command-line arguments specified # in optValPairs and, if the value of initialize is true, also those database # options that don't match any command-line arguments. #------------------------------------------------------------------------------ proc mwutil::configure {win configSpecsName configValsName \ configCmd optValPairs initialize} { upvar $configSpecsName configSpecs upvar $configValsName configVals # # Process the command-line arguments # set cmdLineOpts {} set savedVals {} set failed no set count [llength $optValPairs] foreach {opt val} $optValPairs { if {[catch {fullConfigOpt $opt configSpecs} result] != 0} { set failed yes break } if {$count == 1} { set result "value for \"$opt\" missing" set failed yes break } set opt $result lappend cmdLineOpts $opt lappend savedVals $configVals($opt) if {[catch {eval $configCmd [list $win $opt $val]} result] != 0} { set failed yes break } incr count -2 } if {$failed} { # # Restore the saved values # foreach opt $cmdLineOpts val $savedVals { eval $configCmd [list $win $opt $val] } return -code error $result } if {$initialize} { # # Process those configuration options that were not # given as command-line arguments; use the corresponding # values from the option database if available # foreach opt [lsort [array names configSpecs]] { if {[llength $configSpecs($opt)] == 1 || [lsearch -exact $cmdLineOpts $opt] >= 0} { continue } set dbName [lindex $configSpecs($opt) 0] set dbClass [lindex $configSpecs($opt) 1] set dbValue [option get $win $dbName $dbClass] if {[string compare $dbValue ""] != 0} { eval $configCmd [list $win $opt $dbValue] } else { set default [lindex $configSpecs($opt) 3] eval $configCmd [list $win $opt $default] } } } return "" } #------------------------------------------------------------------------------ # mwutil::fullConfigOpt # # Returns the full configuration option corresponding to the possibly # abbreviated option opt. #------------------------------------------------------------------------------ proc mwutil::fullConfigOpt {opt configSpecsName} { upvar $configSpecsName configSpecs if {[info exists configSpecs($opt)]} { if {[llength $configSpecs($opt)] == 1} { return $configSpecs($opt) } else { return $opt } } set optList [lsort [array names configSpecs]] set count 0 foreach elem $optList { if {[string first $opt $elem] == 0} { incr count if {$count == 1} { set option $elem } else { break } } } switch $count { 0 { ### return -code error "unknown option \"$opt\"" return -code error \ "bad option \"$opt\": must be [enumOpts $optList]" } 1 { if {[llength $configSpecs($option)] == 1} { return $configSpecs($option) } else { return $option } } default { ### return -code error "unknown option \"$opt\"" return -code error \ "ambiguous option \"$opt\": must be [enumOpts $optList]" } } } #------------------------------------------------------------------------------ # mwutil::fullOpt # # Returns the full option corresponding to the possibly abbreviated option opt. #------------------------------------------------------------------------------ proc mwutil::fullOpt {kind opt optList} { if {[lsearch -exact $optList $opt] >= 0} { return $opt } set count 0 foreach elem $optList { if {[string first $opt $elem] == 0} { incr count if {$count == 1} { set option $elem } else { break } } } switch $count { 0 { return -code error \ "bad $kind \"$opt\": must be [enumOpts $optList]" } 1 { return $option } default { return -code error \ "ambiguous $kind \"$opt\": must be [enumOpts $optList]" } } } #------------------------------------------------------------------------------ # mwutil::enumOpts # # Returns a string consisting of the elements of the given list, separated by # commas and spaces. #------------------------------------------------------------------------------ proc mwutil::enumOpts optList { set optCount [llength $optList] set n 1 foreach opt $optList { if {$n == 1} { set str $opt } elseif {$n < $optCount} { append str ", $opt" } else { if {$optCount > 2} { append str "," } append str " or $opt" } incr n } return $str } #------------------------------------------------------------------------------ # mwutil::attribSubCmd # # This procedure is invoked to process the attrib subcommand. #------------------------------------------------------------------------------ proc mwutil::attribSubCmd {win argList} { set classNs [string tolower [winfo class $win]] upvar ::${classNs}::ns${win}::attribVals attribVals set argCount [llength $argList] switch $argCount { 0 { # # Return the current list of attribute names and values # set result {} foreach attr [lsort [array names attribVals]] { lappend result [list $attr $attribVals($attr)] } return $result } 1 { # # Return the value of the specified attribute # set attr [lindex $argList 0] if {[info exists attribVals($attr)]} { return $attribVals($attr) } else { return "" } } default { # # Set the specified attributes to the given values # if {$argCount % 2 != 0} { return -code error "value for \"[lindex $argList end]\" missing" } array set attribVals $argList return "" } } } #------------------------------------------------------------------------------ # mwutil::configSubCmd # # This procedure is invoked to process configuration subcommands. #------------------------------------------------------------------------------ proc mwutil::configSubCmd {win configSpecsName configValsName configCmd argList} { upvar $configSpecsName configSpecs upvar $configValsName configVals switch [llength $argList] { 0 { # # Return a list describing all available configuration options # foreach opt [lsort [array names configSpecs]] { if {[llength $configSpecs($opt)] == 1} { set alias $configSpecs($opt) if {$::tk_version < 8.1} { set dbName [lindex $configSpecs($alias) 0] lappend result [list $opt $dbName] } else { lappend result [list $opt $alias] } } else { set dbName [lindex $configSpecs($opt) 0] set dbClass [lindex $configSpecs($opt) 1] set default [lindex $configSpecs($opt) 3] lappend result [list $opt $dbName $dbClass $default \ $configVals($opt)] } } return $result } 1 { # # Return the description of the specified configuration option # set opt [fullConfigOpt [lindex $argList 0] configSpecs] set dbName [lindex $configSpecs($opt) 0] set dbClass [lindex $configSpecs($opt) 1] set default [lindex $configSpecs($opt) 3] return [list $opt $dbName $dbClass $default $configVals($opt)] } default { # # Set the specified configuration options to the given values # return [configure $win configSpecs configVals $configCmd \ $argList no] } } } # # Private procedures used in bindings # =================================== # #------------------------------------------------------------------------------ # mwutil::skipParent # # This procedure handles and <> events in the child # w of a mega-widget. It generates the given event for the parent of the # widget. #------------------------------------------------------------------------------ proc mwutil::skipParent {w event} { set parent [winfo parent $w] focus $parent ;# necessary on Windows event generate $parent $event } ferret-0.6.orig/widgets/tablelist/scripts/tablelistSortByColumn.tcl0000644000175000017500000000305607741225421024363 0ustar fikefike#============================================================================== # Contains the implementation of the tablelist::sortByColumn command. # # Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csaba.nemethi@t-online.de) #============================================================================== #------------------------------------------------------------------------------ # tablelist::sortByColumn # # Sorts the contents of the tablelist widget win by its col'th column. Returns # the sorting order (increasing or decreasing). #------------------------------------------------------------------------------ proc tablelist::sortByColumn {win col} { # # Check the arguments # if {![winfo exists $win]} { return -code error "bad window path name \"$win\"" } if {[string compare [winfo class $win] Tablelist] != 0} { return -code error "window \"$win\" is not a tablelist widget" } if {[catch {::$win columnindex $col} result] != 0} { return -code error $result } if {$result < 0 || $result >= [::$win columncount]} { return -code error "column index \"$col\" out of range" } # # Determine the sorting order # set col $result if {$col == [::$win sortcolumn] && [string compare [::$win sortorder] increasing] == 0} { set sortOrder decreasing } else { set sortOrder increasing } # # Sort the widget's contents based on the given column # if {[catch {::$win sortbycolumn $col -$sortOrder} result] == 0} { return $sortOrder } else { return -code error $result } } ferret-0.6.orig/widgets/tablelist/scripts/tablelistWidget.tcl0000644000175000017500000055717207741225421023223 0ustar fikefike#============================================================================== # Contains the implementation of the tablelist widget. # # Structure of the module: # - Namespace initialization # - Public procedure # - Private configuration procedures # - Private procedures implementing the tablelist widget command # - Private callback procedures # - Private procedures used in bindings # - Private helper procedures # # Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csaba.nemethi@t-online.de) #============================================================================== # # Namespace initialization # ======================== # namespace eval tablelist { # # The following procedure returns 1 if arrName($name) exists and # 0 otherwise. It is a (partial) replacement for [info exists # arrName($name)], which -- due to a bug in Tcl versions 8.2, # 8.3.0 - 8.3.2, and 8.4a1 (fixed in Tcl 8.3.3 and 8.4a2) -- # causes excessive memory use if arrName($name) doesn't exist. # The first version of the procedure assumes that the second # argument doesn't contain glob-style special characters. # if {[regexp {^8\.(2\.[0-3]|3\.[0-2]|4a1)$} $tk_patchLevel]} { proc arrElemExists {arrName name} { upvar $arrName arr return [llength [array names arr $name]] } } else { proc arrElemExists {arrName name} { upvar $arrName arr return [info exists arr($name)] ;# this is much faster } } # # The array configSpecs is used to handle configuration options. The # names of its elements are the configuration options for the Tablelist # class. The value of an array element is either an alias name or a list # containing the database name and class as well as an indicator specifying # the widget(s) to which the option applies: c stands for all children # (text widgets and labels), b for the body text widget, h for the header # text widget, l for the labels, f for the frame, and w for the widget # itself. # # Command-Line Name {Database Name Database Class W} # ------------------------------------------------------------------------ # variable configSpecs array set configSpecs { -activestyle {activeStyle ActiveStyle w} -arrowcolor {arrowColor ArrowColor w} -arrowdisabledcolor {arrowDisabledColor ArrowDisabledColor w} -background {background Background b} -bg -background -borderwidth {borderWidth BorderWidth f} -bd -borderwidth -columns {columns Columns w} -cursor {cursor Cursor c} -disabledforeground {disabledForeground DisabledForeground w} -exportselection {exportSelection ExportSelection w} -font {font Font b} -foreground {foreground Foreground b} -fg -foreground -height {height Height w} -highlightbackground {highlightBackground HighlightBackground f} -highlightcolor {highlightColor HighlightColor f} -highlightthickness {highlightThickness HighlightThickness f} -incrarrowtype {incrArrowType IncrArrowType w} -labelbackground {labelBackground Background l} -labelbg -labelbackground -labelborderwidth {labelBorderWidth BorderWidth l} -labelbd -labelborderwidth -labelcommand {labelCommand LabelCommand w} -labeldisabledforeground {labelDisabledForeground DisabledForeground l} -labelfont {labelFont Font l} -labelforeground {labelForeground Foreground l} -labelfg -labelforeground -labelheight {labelHeight Height l} -labelpady {labelPadY Pad l} -labelrelief {labelRelief Relief l} -listvariable {listVariable Variable w} -relief {relief Relief f} -resizablecolumns {resizableColumns ResizableColumns w} -resizecursor {resizeCursor ResizeCursor w} -selectbackground {selectBackground Foreground w} -selectborderwidth {selectBorderWidth BorderWidth w} -selectforeground {selectForeground Background w} -selectmode {selectMode SelectMode w} -setgrid {setGrid SetGrid w} -showarrow {showArrow ShowArrow w} -showlabels {showLabels ShowLabels w} -showseparators {showSeparators ShowSeparators w} -sortcommand {sortCommand SortCommand w} -state {state State w} -stretch {stretch Stretch w} -stripebackground {stripeBackground Background w} -stripebg -stripebackground -stripeforeground {stripeForeground Foreground w} -stripefg -stripeforeground -stripeheight {stripeHeight StripeHeight w} -takefocus {takeFocus TakeFocus f} -width {width Width w} -xscrollcommand {xScrollCommand ScrollCommand h} -yscrollcommand {yScrollCommand ScrollCommand b} } proc extendConfigSpecs {} { variable helpLabel variable configSpecs # # Append the default values of the configuration options # of a temporary, invisible listbox widget to the values # of the corresponding elements of the array configSpecs # set helpListbox .__helpListbox for {set n 0} {[winfo exists $helpListbox]} {incr n} { set helpListbox .__helpListbox$n } listbox $helpListbox foreach configSet [$helpListbox config] { if {[llength $configSet] != 2} { set opt [lindex $configSet 0] if {[arrElemExists configSpecs $opt]} { lappend configSpecs($opt) [lindex $configSet 3] } } } destroy $helpListbox # # Append the default values of some configuration options # of an invisible label widget to the values of the # corresponding -label* elements of the array configSpecs # set helpLabel .__helpLabel for {set n 0} {[winfo exists $helpLabel]} {incr n} { set helpLabel .__helpLabel$n } label $helpLabel foreach optTail {font height} { set configSet [$helpLabel config -$optTail] lappend configSpecs(-label$optTail) [lindex $configSet 3] } if {[catch {$helpLabel config -state disabled}] == 0 && [catch {$helpLabel config -state normal}] == 0 && [catch {$helpLabel config -disabledforeground} configSet] == 0} { lappend configSpecs(-labeldisabledforeground) [lindex $configSet 3] } else { unset configSpecs(-labeldisabledforeground) } if {[string compare $::tcl_platform(platform) windows] == 0} { lappend configSpecs(-labelpady) 0 } else { set configSet [$helpLabel config -pady] lappend configSpecs(-labelpady) [lindex $configSet 3] } # # Steal the default values of some configuration # options from a temporary, invisible button widget # set helpButton .__helpButton for {set n 0} {[winfo exists $helpButton]} {incr n} { set helpButton .__helpButton$n } button $helpButton foreach opt {-disabledforeground -state} { set configSet [$helpButton config $opt] lappend configSpecs($opt) [lindex $configSet 3] } foreach optTail {background foreground} { set configSet [$helpButton config -$optTail] lappend configSpecs(-label$optTail) [lindex $configSet 3] } if {[string compare $::tcl_platform(platform) macintosh] == 0} { lappend configSpecs(-labelborderwidth) 1 } else { set configSet [$helpButton config -borderwidth] lappend configSpecs(-labelborderwidth) [lindex $configSet 3] } destroy $helpButton # # Extend the remaining elements of the array configSpecs # lappend configSpecs(-activestyle) underline lappend configSpecs(-arrowcolor) {} lappend configSpecs(-arrowdisabledcolor) {} lappend configSpecs(-columns) {0 {} left} lappend configSpecs(-incrarrowtype) up lappend configSpecs(-labelcommand) {} lappend configSpecs(-labelrelief) raised lappend configSpecs(-listvariable) {} lappend configSpecs(-resizablecolumns) 1 lappend configSpecs(-resizecursor) sb_h_double_arrow lappend configSpecs(-showarrow) 1 lappend configSpecs(-showlabels) 1 lappend configSpecs(-showseparators) 0 lappend configSpecs(-sortcommand) {} lappend configSpecs(-stretch) {} lappend configSpecs(-stripebackground) {} lappend configSpecs(-stripeforeground) {} lappend configSpecs(-stripeheight) 1 } extendConfigSpecs variable configOpts [lsort [array names configSpecs]] # # The array colConfigSpecs is used to handle column configuration options. # The names of its elements are the column configuration options for the # Tablelist widget class. The value of an array element is either an alias # name or a list containing the database name and class. # # Command-Line Name {Database Name Database Class } # ----------------------------------------------------------------- # variable colConfigSpecs array set colConfigSpecs { -align {align Align } -background {background Background } -bg -background -font {font Font } -foreground {foreground Foreground } -fg -foreground -formatcommand {formatCommand FormatCommand } -hide {hide Hide } -labelalign {labelAlign Align } -labelbackground {labelBackground Background } -labelbg -labelbackground -labelborderwidth {labelBorderWidth BorderWidth } -labelbd -labelborderwidth -labelcommand {labelCommand LabelCommand } -labelfont {labelFont Font } -labelforeground {labelForeground Foreground } -labelfg -labelforeground -labelheight {labelHeight Height } -labelimage {labelImage Image } -labelpady {labelPadY Pad } -labelrelief {labelRelief Relief } -resizable {resizable Resizable } -selectbackground {selectBackground Foreground } -selectforeground {selectForeground Background } -showarrow {showArrow ShowArrow } -sortcommand {sortCommand SortCommand } -sortmode {sortMode SortMode } -title {title Title } -width {width Width } } # # Extend some elements of the array colConfigSpecs # lappend colConfigSpecs(-align) - left lappend colConfigSpecs(-hide) - 0 lappend colConfigSpecs(-resizable) - 1 lappend colConfigSpecs(-showarrow) - 1 lappend colConfigSpecs(-sortmode) - ascii lappend colConfigSpecs(-width) - 0 # # The array rowConfigSpecs is used to handle row configuration options. # The names of its elements are the row configuration options for the # Tablelist widget class. The value of an array element is either an alias # name or a list containing the database name and class. # # Command-Line Name {Database Name Database Class } # ----------------------------------------------------------------- # variable rowConfigSpecs array set rowConfigSpecs { -background {background Background } -bg -background -font {font Font } -foreground {foreground Foreground } -fg -foreground -selectable {selectable Selectable } -selectbackground {selectBackground Foreground } -selectforeground {selectForeground Background } -text {text Text } } # # Extend some elements of the array rowConfigSpecs # lappend rowConfigSpecs(-selectable) - 1 # # The array cellConfigSpecs is used to handle cell configuration options. # The names of its elements are the cell configuration options for the # Tablelist widget class. The value of an array element is either an alias # name or a list containing the database name and class. # # Command-Line Name {Database Name Database Class } # ----------------------------------------------------------------- # variable cellConfigSpecs array set cellConfigSpecs { -background {background Background } -bg -background -font {font Font } -foreground {foreground Foreground } -fg -foreground -image {image Image } -selectbackground {selectBackground Foreground } -selectforeground {selectForeground Background } -text {text Text } } # # Use a list to facilitate the handling of the command options # variable cmdOpts [list \ activate attrib bbox bodypath cellcget cellconfigure cellindex \ cget columncget columnconfigure columncount columnindex configure \ curselection delete get index insert insertlist labelpath labels \ nearest nearestcell nearestcolumn resetsortinfo rowcget rowconfigure \ scan see selection separatorpath separators size sort sortbycolumn \ sortcolumn sortorder xview yview] # # Use lists to facilitate the handling of miscellaneous options # variable activeStyles [list underline frame] variable alignments [list left right center] variable arrowTypes [list up down] variable states [list disabled normal] variable sortModes [list ascii command dictionary integer real] variable sortOrders [list -increasing -decreasing] variable scanCmdOpts [list mark dragto] variable selCmdOpts [list anchor clear includes set] # # Define some Tablelist class bindings # bind Tablelist { tablelist::addActiveTag %W if {[string compare [focus -lastfor %W] %W] == 0} { focus [%W bodypath] } } bind Tablelist { tablelist::removeActiveTag %W } bind Tablelist { tablelist::cleanup %W } # # Define the binding tag TablelistBody to have the same events as Listbox # and the binding scripts obtained from those of Listbox by replacing the # widget %W with [winfo parent %W] as well as the %x and %y fields with # [expr {%x + [winfo x %W]}] and [expr {%y + [winfo y %W]}], respectively # proc defineTablelistBody {} { foreach event [bind Listbox] { set script [bind Listbox $event] regsub -all %W $script {$tablelist::win} script regsub -all %x $script {$tablelist::x} script regsub -all %y $script {$tablelist::y} script regsub -all {tk(::)?ListboxAutoScan} $script \ tablelist::tablelistAutoScan script bind TablelistBody $event [format { if {[winfo exists %%W]} { set tablelist::win [winfo parent %%W] set tablelist::x [expr {%%x + [winfo x %%W]}] set tablelist::y [expr {%%y + [winfo y %%W]}] %s } } $script] } } defineTablelistBody # # Define the virtual event <> # switch $::tcl_platform(platform) { unix - windows { event add <> } macintosh { event add <> } } } # # Public procedure # ================ # #------------------------------------------------------------------------------ # tablelist::tablelist # # Creates a new tablelist widget whose name is specified as the first command- # line argument, and configures it according to the options and their values # given on the command line. Returns the name of the newly created widget. #------------------------------------------------------------------------------ proc tablelist::tablelist args { variable configSpecs variable configOpts if {[llength $args] == 0} { mwutil::wrongNumArgs "tablelist pathName ?options?" } # # Create a frame of the class Tablelist # set win [lindex $args 0] if {[catch { frame $win -class Tablelist -colormap . -container 0 \ -height 0 -width 0 } result] != 0} { return -code error $result } # # Create a namespace within the current one to hold the data of the widget # namespace eval ns$win { # # The folowing array holds various data for this widget # variable data array set data { charWidth 1 hasListVar 0 isDisabled 0 hdrPixels 0 oldActiveIdx 0 activeIdx 0 anchorIdx 0 seqNum -1 itemList {} itemCount 0 lastRow -1 colList {0 left} colCount 1 lastCol 0 clickedLblCol -1 arrowCol -1 sortCol -1 sortOrder {} forceAdjust 0 fmtCmdFlagList {0} 0-delta 0 0-hide 0 } # # The following array is used to hold arbitrary # attributes and their values for this widget # variable attribVals } # # Initialize some further components of data # upvar ::tablelist::ns${win}::data data foreach opt $configOpts { set data($opt) [lindex $configSpecs($opt) 3] } set data(colFontList) [list $data(-font)] set data(listVarTraceCmd) [list tablelist::listVarTrace $win] set data(body) $win.body set data(hdr) $win.hdr set data(hdrTxt) $data(hdr).t set data(hdrTxtFr) $data(hdrTxt).f set data(hdrTxtFrCanv) $data(hdrTxtFr).c set data(hdrTxtFrLbl) $data(hdrTxtFr).l set data(hdrLbl) $data(hdr).l set data(lb) $win.lb set data(sep) $win.sep # # Create a child hierarchy used to hold the column labels. The # labels will be created as children of the frame data(hdrTxtFr), # which is embedded into the text widget data(hdrTxt) (in order # to make it scrollable), which in turn fills the frame data(hdr) # (whose width and height can be set arbitrarily in pixels). # set w $data(hdr) ;# header frame frame $w -borderwidth 0 -colormap . -container 0 -height 0 \ -highlightthickness 0 -relief flat -takefocus 0 -width 0 bind $w [list tablelist::stretchColumnsWhenIdle $win] pack $w -fill x set w $data(hdrTxt) ;# text widget within the header frame text $w -borderwidth 0 -highlightthickness 0 -insertwidth 0 \ -padx 0 -pady 0 -state normal -takefocus 0 -wrap none place $w -relheight 1.0 -relwidth 1.0 frame $data(hdrTxtFr) -borderwidth 0 -colormap . -container 0 -height 0 \ -highlightthickness 0 -relief flat -takefocus 0 \ -width 0 $w window create 1.0 -window $data(hdrTxtFr) label $data(hdrTxtFrLbl)0 set w $data(hdrLbl) ;# filler label within the header frame label $w -bitmap "" -highlightthickness 0 -image "" -takefocus 0 \ -text "" -textvariable "" -underline -1 -wraplength 0 place $w -relheight 1.0 -relwidth 1.0 # # Create a canvas as a child of the frame data(hdrTxtFr), # needed for displaying an up- or down-arrow when # sorting the items by a column. Set its width and # height to temporary values and create two 3-D arrows # set w $data(hdrTxtFrCanv) set size 9 canvas $w -borderwidth 0 -height $size -highlightthickness 0 \ -relief flat -takefocus 0 -width $size create3DArrows $w # # Remove the binding tag Text from the list # of binding tags of the header text widget # set w $data(hdrTxt) bindtags $w [list $w [winfo toplevel $w] all] # # Create the body text widget within the main frame # set w $data(body) text $w -borderwidth 0 -exportselection no -highlightthickness 0 \ -insertwidth 0 -padx 0 -pady 0 -state normal \ -takefocus tablelist::focusCtrl -wrap none bind $w [list tablelist::adjustSepsWhenIdle $win] pack $w -expand yes -fill both # # Replace the binding tags Text and all with TablelistBody and allModif, # respectively, in the list of binding tags of the body text widget # (see mwutil.tcl for the definition of the bindings for the tag allModif) # bindtags $w [list $w TablelistBody [winfo toplevel $w] allModif] # # Create the "active", "stripe", "select", and "disabled" tags # in the body text widget. Don't use the built-in "sel" tag # because on Windows the selection in a text widget only # becomes visible when the window gets the input focus. # $w tag configure stripe -background "" -foreground "" $w tag configure active -borderwidth 1 -underline yes $w tag configure select -relief raised $w tag configure disabled -underline no # # Create an unmanaged listbox child, used to handle the -setgrid option # listbox $data(lb) # # Configure the widget according to the command-line # arguments and to the available database options # if {[catch { mwutil::configure $win configSpecs data tablelist::doConfig \ [lrange $args 1 end] 1 } result] != 0} { destroy $win return -code error $result } # # Move the original widget command into the current namespace # and build a new widget procedure in the global one # rename ::$win $win proc ::$win args [format { if {[catch {tablelist::tablelistWidgetCmd %s $args} result] == 0} { return $result } else { return -code error $result } } [list $win]] # # Register a callback to be invoked whenever the PRIMARY selection is # owned by the window win and someone attempts to retrieve it as a STRING # selection handle $win [list ::tablelist::fetchSelection $win] # # Set a trace on the array element data(activeIdx) # trace variable data(activeIdx) w [list tablelist::activeIdxTrace $win] return $win } # # Private configuration procedures # ================================ # #------------------------------------------------------------------------------ # tablelist::doConfig # # Applies the value val of the configuration option opt to the tablelist widget # win. #------------------------------------------------------------------------------ proc tablelist::doConfig {win opt val} { variable helpLabel variable configSpecs upvar ::tablelist::ns${win}::data data # # Apply the value to the widget(s) corresponding to the given option # switch [lindex $configSpecs($opt) 2] { c { # # Apply the value to all children and save the # properly formatted value of val in data($opt) # foreach w [winfo children $win] { if {[regexp {^(body|hdr|sep[0-9]+)$} [winfo name $w]]} { $w configure $opt $val } } $data(hdrTxt) configure $opt $val $data(hdrLbl) configure $opt $val foreach w [winfo children $data(hdrTxtFr)] { $w configure $opt $val foreach c [winfo children $w] { $c configure $opt $val } } $helpLabel configure $opt $val set data($opt) [$helpLabel cget $opt] } b { # # Apply the value to the body text widget and save # the properly formatted value of val in data($opt) # set w $data(body) $w configure $opt $val set data($opt) [$w cget $opt] switch -- $opt { -background { # # Apply the value to the frame (because of the shadow # colors of its 3-D border), to the header frame (this will # make it fully invisible if the labels are not being # shown), to the separators, and to the "disabled" tag # $win configure $opt $val foreach c [winfo children $win] { if {[regexp {^(hdr|sep[0-9]+)$} [winfo name $c]]} { $c configure $opt $val } } $w tag configure disabled $opt $val } -font { # # Apply the value to the listbox child, adjust the columns, # rebuild the lists of the column fonts and tag names, # and make sure the items will be redisplayed at idle time # $data(lb) configure $opt $val set data(charWidth) [font measure $val -displayof $win 0] makeColFontAndTagLists $win adjustColumns $win all 1 redisplayWhenIdle $win } -foreground { # # Apply the value to the "disabled" tag if needed # if {[string compare $data(-disabledforeground) ""] == 0} { $w tag configure disabled $opt $val } } } } h { # # Apply the value to the header text widget and save # the properly formatted value of val in data($opt) # set w $data(hdrTxt) $w configure $opt $val set data($opt) [$w cget $opt] } l { # # Apply the value to all not individually configured labels # and save the properly formatted value of val in data($opt) # set optTail [string range $opt 6 end] ;# remove the -label for {set col 0} {$col < $data(colCount)} {incr col} { set w $data(hdrTxtFrLbl)$col if {![arrElemExists data $col$opt]} { configLabel $w -$optTail $val } } $helpLabel configure -$optTail $val set data($opt) [$helpLabel cget -$optTail] switch -- $opt { -labelbackground { # # Apply the value to the label child of the header frame # and conditionally both to the children of the labels (if # any) and to the canvas displaying an up- or down-arrow # $data(hdrLbl) configure -$optTail $val for {set col 0} {$col < $data(colCount)} {incr col} { set w $data(hdrTxtFrLbl)$col if {![arrElemExists data $col$opt]} { foreach c [winfo children $w] { $c configure -$optTail $val } } } if {$data(arrowCol) >= 0 && ![arrElemExists data $data(arrowCol)$opt]} { configCanvas $win } } -labelborderwidth { # # Apply the value to the label child of the # header frame and adjust the columns # (including the height of the header frame) # $data(hdrLbl) configure -$optTail $val adjustColumns $win all 1 } -labeldisabledforeground { # # Apply the value to the children of the labels (if any) # foreach w [winfo children $data(hdrTxtFr)] { foreach c [winfo children $w] { $c configure $opt $val } } } -labelfont { # # Conditionally apply the value to the children of # the labels (if any), conditionally resize the canvas # displaying an up- or down-arrow, and adjust the # columns (including the height of the header frame) # for {set col 0} {$col < $data(colCount)} {incr col} { set w $data(hdrTxtFrLbl)$col if {![arrElemExists data $col$opt]} { foreach c [winfo children $w] { $c configure -$optTail $val } } } if {$data(arrowCol) >= 0 && ![arrElemExists data $data(arrowCol)$opt]} { configCanvas $win drawArrows $win } adjustColumns $win all 1 } -labelforeground { # # Conditionally apply the value to # the children of the labels (if any) # for {set col 0} {$col < $data(colCount)} {incr col} { set w $data(hdrTxtFrLbl)$col if {![arrElemExists data $col$opt]} { foreach c [winfo children $w] { $c configure -$optTail $val } } } } -labelheight - -labelpady { # # Adjust the height of the header frame # adjustHeaderHeight $win } -labelrelief { # # Apply the value to the label child of the header frame # $data(hdrLbl) configure -$optTail $val } } } f { # # Apply the value to the frame and save the # properly formatted value of val in data($opt) # $win configure $opt $val set data($opt) [$win cget $opt] } w { switch -- $opt { -activestyle { # # Configure the "active" tag and save the # properly formatted value of val in data($opt) # variable activeStyles set val [mwutil::fullOpt "active style" $val $activeStyles] set w $data(body) switch $val { underline { $w tag configure active -relief flat -underline 1 } frame { $w tag configure active -relief solid -underline 0 } } set data($opt) $val } -arrowcolor { # # Set the color of the normal arrow and save the # properly formatted value of val in data($opt) # set data($opt) [fillArrow $data(hdrTxtFrCanv) normal $val] } -arrowdisabledcolor { # # Set the color of the disabled arrow and save the # properly formatted value of val in data($opt) # set data($opt) [fillArrow $data(hdrTxtFrCanv) disabled $val] } -columns { # # Set up and adjust the columns, rebuild # the lists of the column fonts and tag # names, and redisplay the items # setupColumns $win $val 1 adjustColumns $win all 1 makeColFontAndTagLists $win redisplay $win 0 end } -disabledforeground { # # Configure the "disabled" tag in the body text widget and # save the properly formatted value of val in data($opt) # set w $data(body) if {[string compare $val ""] == 0} { $w tag configure disabled -fgstipple gray50 \ -foreground $data(-foreground) set data($opt) "" } else { $w tag configure disabled -fgstipple "" \ -foreground $val set data($opt) [$w tag cget disabled -foreground] } } -exportselection { # # Save the boolean value specified by val in # data($opt). In addition, if the selection is # exported and there are any selected rows in the # widget then make win the new owner of the PRIMARY # selection and register a callback to be invoked # when it loses ownership of the PRIMARY selection # set data($opt) [expr {$val ? 1 : 0}] if {$val && [llength [$data(body) tag nextrange select 1.0]] != 0} { selection own -command \ [list ::tablelist::lostSelection $win] $win } } -height { # # Adjust the height of the body text widget and save # the properly formatted value of val in data($opt) # set val [format %d $val] ;# integer check with error msg if {$val <= 0} { $data(body) configure $opt $data(itemCount) } else { $data(body) configure $opt $val } set data($opt) $val } -incrarrowtype { # # Save the properly formatted value of val # in data($opt) and draw the arrows if # the canvas widget is presently mapped # variable arrowTypes set data($opt) \ [mwutil::fullOpt "arrow type" $val $arrowTypes] if {$data(arrowCol) >= 0} { drawArrows $win } } -labelcommand - -selectmode - -sortcommand { # # Save val in data($opt) # set data($opt) $val } -listvariable { # # Associate val as list variable with the # given widget and save it in data($opt) # makeListVar $win $val set data($opt) $val if {[string compare $val ""] == 0} { set data(hasListVar) 0 } else { set data(hasListVar) 1 } } -resizablecolumns { # # Save the boolean value specified by val in data($opt) # set data($opt) [expr {$val ? 1 : 0}] } -resizecursor { # # Save the properly formatted value of val in data($opt) # $helpLabel configure -cursor $val set data($opt) [$helpLabel cget -cursor] } -selectbackground - -selectforeground { # # Configure the "select" tag in the body text widget # and save the properly formatted value of val in # data($opt). Don't use the built-in "sel" tag # because on Windows the selection in a text widget only # becomes visible when the window gets the input focus. # set w $data(body) set optTail [string range $opt 7 end] ;# remove the -select $w tag configure select -$optTail $val set data($opt) [$w tag cget select -$optTail] } -selectborderwidth { # # Configure the "select" tag in the body text widget # and save the properly formatted value of val in # data($opt). Don't use the built-in "sel" tag # because on Windows the selection in a text widget only # becomes visible when the window gets the input focus. # In addition, adjust the line spacing accordingly and # apply the value to the listbox child, too. # set w $data(body) set optTail [string range $opt 7 end] ;# remove the -select $w tag configure select -$optTail $val set data($opt) [$w tag cget select -$optTail] if {$val < 0} { set val 0 } $w configure -spacing1 $val -spacing3 [expr {$val + 1}] $data(lb) configure $opt $val } -setgrid { # # Apply the value to the listbox child and save # the properly formatted value of val in data($opt) # $data(lb) configure $opt $val set data($opt) [$data(lb) cget $opt] } -showarrow { # # Save the boolean value specified by val in # data($opt) and conditionally unmanage the # canvas displaying an up- or down-arrow # set data($opt) [expr {$val ? 1 : 0}] if {!$data($opt) && $data(arrowCol) >= 0} { place forget $data(hdrTxtFrCanv) set colOfUnknownWidth $data(arrowCol) set data(arrowCol) -1 adjustColumns $win $colOfUnknownWidth 1 } } -showlabels { # # Save the boolean value specified by val in data($opt) # and adjust the height of the header frame # set data($opt) [expr {$val ? 1 : 0}] adjustHeaderHeight $win } -showseparators { # # Save the boolean value specified by val in data($opt), # and create or destroy the separators if needed # set oldVal $data($opt) set data($opt) [expr {$val ? 1 : 0}] if {!$oldVal && $data($opt)} { createSeps $win } elseif {$oldVal && !$data($opt)} { foreach w [winfo children $win] { if {[regexp {^sep[0-9]+$} [winfo name $w]]} { destroy $w } } } } -state { # # Apply the value to all labels and their children (if # any), raise the corresponding arrow in the canvas, # add/remove the "disabled" tag to/from the contents # of the body text widget, configure the borderwidth # of the "active" and "select" tags, and save the # properly formatted value of val in data($opt) # variable states set val [mwutil::fullOpt "state" $val $states] catch { foreach w [winfo children $data(hdrTxtFr)] { $w configure $opt $val foreach c [winfo children $w] { $c configure $opt $val } } } raiseArrow $data(hdrTxtFrCanv) $val set w $data(body) switch $val { disabled { $w tag add disabled 1.0 end $w tag configure active -borderwidth 0 $w tag configure select -borderwidth 0 set data(isDisabled) 1 } normal { $w tag remove disabled 1.0 end $w tag configure active -borderwidth 1 $w tag configure select -borderwidth \ $data(-selectborderwidth) set data(isDisabled) 0 } } set data($opt) $val } -stretch { # # Save val in data($opt) and # stretch the stretchable columns # if {[string first $val all] == 0} { set data($opt) all } else { foreach col $val { colIndex $win $col 0 ;# index check with error msg } set data($opt) $val } set data(forceAdjust) 1 stretchColumnsWhenIdle $win } -stripebackground - -stripeforeground { # # Configure the "stripe" tag in the body text # widget, save the properly formatted value of val # in data($opt), and draw the stripes if necessary # set w $data(body) set optTail [string range $opt 7 end] ;# remove the -stripe $w tag configure stripe -$optTail $val set data($opt) [$w tag cget stripe -$optTail] makeStripesWhenIdle $win } -stripeheight { # # Save the properly formatted value of val val # data($opt) and draw the stripes if necessary # set val [format %d $val] ;# integer check with error msg set data($opt) $val makeStripesWhenIdle $win } -width { # # Adjust the widths of the body text widget # and of the header frame, and save the # properly formatted value of val in data($opt) # set val [format %d $val] ;# integer check with error msg $data(body) configure $opt $val if {$val <= 0} { $data(hdr) configure $opt $data(hdrPixels) } else { $data(hdr) configure $opt 0 } set data($opt) $val } } } } } #------------------------------------------------------------------------------ # tablelist::doColConfig # # Applies the value val of the column configuration option opt to the col'th # column of the tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::doColConfig {col win opt val} { upvar ::tablelist::ns${win}::data data switch -- $opt { -align { # # Set up and adjust the columns, and make sure the # given column will be redisplayed at idle time # set idx [expr {3*$col + 2}] setupColumns $win [lreplace $data(-columns) $idx $idx $val] 0 adjustColumns $win -1 1 redisplayColWhenIdle $win $col } -background - -foreground { set w $data(body) set tag $col$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget # $w tag configure $tag $opt $val $w tag raise $tag stripe if {!$data($col-hide)} { # # Apply the tag to the elements of the given column # for {set idx 0; set line 1} {$idx < $data(itemCount)} \ {incr idx; incr line} { if {[lsearch -exact [$w tag names $line.0] select] < 0} { findCellTabs $win $line.0 $col tabIdx1 tabIdx2 $w tag add $tag $tabIdx1 $tabIdx2+1c } } } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag $opt] } # # Rebuild the lists of the column fonts and tag names # makeColFontAndTagLists $win } -font { set w $data(body) set tag $col$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget # $w tag configure $tag $opt $val $w tag lower $tag if {!$data($col-hide)} { # # Apply the tag to the elements of the given column # for {set idx 0; set line 1} {$idx < $data(itemCount)} \ {incr idx; incr line} { findCellTabs $win $line.0 $col tabIdx1 tabIdx2 $w tag add $tag $tabIdx1 $tabIdx2+1c } } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag $opt] } # # Rebuild the lists of the column fonts and tag names # makeColFontAndTagLists $win # # Adjust the columns, and make sure the specified # column will be redisplayed at idle time if needed # adjustColumns $win $col 1 set pixels [lindex $data(colList) [expr {2*$col}]] if {$pixels != 0} { ;# convention: static width redisplayColWhenIdle $win $col } } -formatcommand { if {[string compare $val ""] == 0} { if {[arrElemExists data $col$opt]} { unset data($col$opt) } set fmtCmdFlag 0 } else { # # Save val in data($col$opt) # set data($col$opt) $val set fmtCmdFlag 1 } # # Update the corresponding element of the list data(fmtCmdFlagList) # set data(fmtCmdFlagList) \ [lreplace $data(fmtCmdFlagList) $col $col $fmtCmdFlag] # # Adjust the columns and make sure the specified # column will be redisplayed at idle time # adjustColumns $win $col 1 redisplayColWhenIdle $win $col } -hide { # # Save the boolean value specified by val in data($col$opt), # adjust the columns, and redisplay the items # set data($col$opt) [expr {$val ? 1 : 0}] adjustColumns $win $col 1 redisplay $win 0 end } -labelalign { if {[string compare $val ""] == 0} { # # Unset data($col$opt) # set alignment [lindex $data(colList) [expr {2*$col + 1}]] if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Save the properly formatted value of val in data($col$opt) # variable alignments set val [mwutil::fullOpt "label alignment" $val $alignments] set alignment $val set data($col$opt) $val } # # Adjust the col`th label # set pixels [lindex $data(colList) [expr {2*$col}]] if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } adjustLabel $win $col $pixels $alignment } -labelbackground { set w $data(hdrTxtFrLbl)$col set optTail [string range $opt 6 end] ;# remove the -label if {[string compare $val ""] == 0} { # # Apply the value of the corresponding widget configuration # option to the col'th label and its children (if any) # and conditionally to the canvas displaying an up- # or down-arrow, and unset data($col$opt) # $w configure -$optTail $data($opt) foreach c [winfo children $w] { $c configure -$optTail $data($opt) } if {$col == $data(arrowCol)} { configCanvas $win } if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Apply the given value to the col'th label and its # children (if any) and conditionally to the canvas # displaying an up- or down-arrow, and save the # properly formatted value of val in data($col$opt) # $w configure -$optTail $val foreach c [winfo children $w] { $c configure -$optTail $val } if {$col == $data(arrowCol)} { configCanvas $win } set data($col$opt) [$w cget -$optTail] } } -labelborderwidth { set w $data(hdrTxtFrLbl)$col set optTail [string range $opt 6 end] ;# remove the -label if {[string compare $val ""] == 0} { # # Apply the value of the corresponding widget configuration # option to the col'th label and unset data($col$opt) # configLabel $w -$optTail $data($opt) if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Apply the given value to the col'th label and save the # properly formatted value of val in data($col$opt) # configLabel $w -$optTail $val set data($col$opt) [$w cget -$optTail] } # # Adjust the columns (including the height of the header frame) # adjustColumns $win $col 1 } -labelcommand - -sortcommand { if {[string compare $val ""] == 0} { if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Save val in data($col$opt) # set data($col$opt) $val } } -labelfont { set w $data(hdrTxtFrLbl)$col set optTail [string range $opt 6 end] ;# remove the -label if {[string compare $val ""] == 0} { # # Apply the value of the corresponding widget # configuration option to the col'th label and # its children (if any), and unset data($col$opt) # $w configure -$optTail $data($opt) foreach c [winfo children $w] { $c configure -$optTail $data($opt) } if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Apply the given value to the col'th label and # its children (if any), and save the properly # formatted value of val in data($col$opt) # $w configure -$optTail $val foreach c [winfo children $w] { $c configure -$optTail $val } set data($col$opt) [$w cget -$optTail] } # # Conditionally resize the canvas displaying an up- or down-arrow # and adjust the columns (including the height of the header frame) # if {$col == $data(arrowCol)} { configCanvas $win drawArrows $win } adjustColumns $win $col 1 } -labelforeground { set w $data(hdrTxtFrLbl)$col set optTail [string range $opt 6 end] ;# remove the -label if {[string compare $val ""] == 0} { # # Apply the value of the corresponding widget # configuration option to the col'th label and # its children (if any), and unset data($col$opt) # $w configure -$optTail $data($opt) foreach c [winfo children $w] { $c configure -$optTail $data($opt) } if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Apply the given value to the col'th label and # its children (if any), and save the properly # formatted value of val in data($col$opt) # $w configure -$optTail $val foreach c [winfo children $w] { $c configure -$optTail $val } set data($col$opt) [$w cget -$optTail] } } -labelheight - -labelpady { set w $data(hdrTxtFrLbl)$col set optTail [string range $opt 6 end] ;# remove the -label if {[string compare $val ""] == 0} { # # Apply the value of the corresponding widget configuration # option to the col'th label and unset data($col$opt) # configLabel $w -$optTail $data($opt) if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Apply the given value to the col'th label and save the # properly formatted value of val in data($col$opt) # configLabel $w -$optTail $val set data($col$opt) [$w cget -$optTail] } # # Adjust the height of the header frame # adjustHeaderHeight $win } -labelimage { set w $data(hdrTxtFrLbl)$col if {[string compare $val ""] == 0} { foreach c [winfo children $w] { destroy $c } if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { if {![winfo exists $w.il]} { variable configSpecs variable configOpts foreach c [list $w.il $w.tl] { ;# image and text labels # # Create the label $c # label $c -borderwidth 0 -height 0 \ -highlightthickness 0 -padx 0 \ -pady 0 -takefocus 0 -width 0 # # Apply to it the current configuration options # foreach opt $configOpts { if {[llength $configSpecs($opt)] != 1 && [string compare [lindex $configSpecs($opt) 2] c] == 0} { $c configure $opt $data($opt) } } foreach opt {-background -font -foreground} { $c configure $opt [$w cget $opt] } foreach opt {-disabledforeground -state} { catch {$c configure $opt [$w cget $opt]} } set opt -labelimage ;# restore the original value # # Define for the binding tag $c the binding scripts # obtained from those of $w by replacing the %x # field with [expr {%x + [winfo x $c]}] and the # %y field with [expr {%y + [winfo y $c]}] # set _c [list $c] foreach event [bind $w] { set script [bind $w $event] regsub -all %x $script {$tablelist::x} script regsub -all %y $script {$tablelist::y} script bind $c $event [format { set tablelist::x [expr {%%x + [winfo x %s]}] set tablelist::y [expr {%%y + [winfo y %s]}] %s } $_c $_c $script] } } } # # Display the specified image in the label # $w.il and save val in data($col$opt) # $w.il configure -image $val set data($col$opt) $val } # # Adjust the columns (including the height of the header frame) # adjustColumns $win $col 1 } -labelrelief { set w $data(hdrTxtFrLbl)$col set optTail [string range $opt 6 end] ;# remove the -label if {[string compare $val ""] == 0} { # # Apply the value of the corresponding widget configuration # option to the col'th label and unset data($col$opt) # configLabel $w -$optTail $data($opt) if {[arrElemExists data $col$opt]} { unset data($col$opt) } } else { # # Apply the given value to the col'th label and save the # properly formatted value of val in data($col$opt) # configLabel $w -$optTail $val set data($col$opt) [$w cget -$optTail] } } -resizable { # # Save the boolean value specified by val in data($col$opt) # set data($col$opt) [expr {$val ? 1 : 0}] } -selectbackground - -selectforeground { set w $data(body) set tag $col$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget # set optTail [string range $opt 7 end] ;# remove the -select $w tag configure $tag -$optTail $val $w tag raise $tag select if {!$data($col-hide)} { # # Apply the tag to the elements of the given # column in all currently selected rows # set selRange [$w tag nextrange select 1.0] while {[llength $selRange] != 0} { set selStart [lindex $selRange 0] set selEnd [lindex $selRange 1] findCellTabs $win $selStart $col tabIdx1 tabIdx2 $w tag add $tag $tabIdx1 $tabIdx2+1c set selRange [$w tag nextrange select $selEnd] } } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag -$optTail] } } -showarrow { # # Save the boolean value specified by val in data($col$opt) and # conditionally unmanage the canvas displaying an up- or down-arrow # set data($col$opt) [expr {$val ? 1 : 0}] if {!$data($col$opt) && $col == $data(arrowCol)} { place forget $data(hdrTxtFrCanv) set data(arrowCol) -1 adjustColumns $win $col 1 } } -sortmode { # # Save the properly formatted value of val in data($col$opt) # variable sortModes set data($col$opt) [mwutil::fullOpt "sort mode" $val $sortModes] } -title { # # Save the given value in the corresponding # element of data(-columns) and adjust the columns # set idx [expr {3*$col + 1}] set data(-columns) [lreplace $data(-columns) $idx $idx $val] adjustColumns $win $col 1 } -width { # # Set up and adjust the columns, and make sure the # given column will be redisplayed at idle time # set idx [expr {3*$col}] setupColumns $win [lreplace $data(-columns) $idx $idx $val] 0 adjustColumns $win $col 1 redisplayColWhenIdle $win $col } } } #------------------------------------------------------------------------------ # tablelist::doRowConfig # # Applies the value val of the row configuration option opt to the row'th row # of the tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::doRowConfig {row win opt val} { upvar ::tablelist::ns${win}::data data set w $data(body) switch -- $opt { -background - -foreground { set item [lindex $data(itemList) $row] set key [lindex $item end] set tag $key$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget and # apply it to the given row if it is not selected # $w tag configure $tag $opt $val $w tag lower $tag disabled for {set col 0} {$col < $data(colCount)} {incr col} { if {[arrElemExists data $key-$col$opt]} { $w tag lower $key-$col$opt disabled } } set line [expr {$row + 1}] if {[lsearch -exact [$w tag names $line.0] select] < 0} { $w tag add $tag $line.0 $line.end } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag $opt] } } -font { # # Save the current cell fonts in a temporary array # set item [lindex $data(itemList) $row] set key [lindex $item end] for {set col 0} {$col < $data(colCount)} {incr col} { set oldCellFonts($col) [cellFont $win $key $col] } set tag $key$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget and # apply it to the given row if it is not selected # $w tag configure $tag $opt $val for {set col 0} {$col < $data(colCount)} {incr col} { if {[arrElemExists data $key-$col$opt]} { $w tag raise $key-$col$opt } } set line [expr {$row + 1}] $w tag add $tag $line.0 $line.end # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag $opt] } set colWidthsChanged 0 set line [expr {$row + 1}] set textIdx1 $line.1 set col 0 foreach text [lrange $item 0 $data(lastCol)] \ fmtCmdFlag $data(fmtCmdFlagList) \ {pixels alignment} $data(colList) { if {$data($col-hide)} { incr col continue } # # Adjust the cell text and the image width # if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } if {[arrElemExists data $key-$col-image]} { set image $data($key-$col-image) set imageWidth [image width $image] } else { set image "" set imageWidth 0 } if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } set cellFont [cellFont $win $key $col] adjustElem $win text imageWidth $cellFont $pixels $alignment # # Delete the old cell contents between the # two tabs, and insert the text and the image # set textIdx2 [$w search \t $textIdx1 $line.end] $w delete $textIdx1 $textIdx2 insertElem $w $textIdx1 $text $image $imageWidth $alignment if {$pixels == 0} { ;# convention: dynamic width # # Check whether the width of the current column has changed # set textWidth [font measure $cellFont -displayof $win $text] set newElemWidth [expr {$imageWidth + $textWidth}] if {$newElemWidth > $data($col-width)} { set colWidthsChanged 1 } else { set oldTextWidth [font measure $oldCellFonts($col) \ -displayof $win $text] set oldElemWidth [expr {$imageWidth + $oldTextWidth}] if {$oldElemWidth == $data($col-width) && $newElemWidth < $oldElemWidth && [incr data($col-widestCnt) -1] == 0} { set colWidthsChanged 1 } } } set textIdx1 [$w search \t $textIdx1 $line.end]+2c incr col } # # Adjust the columns if necessary # if {$colWidthsChanged} { adjustColumns $win all 1 } } -selectable { set val [expr {$val ? 1 : 0}] set item [lindex $data(itemList) $row] set key [lindex $item end] if {$val} { if {[arrElemExists data $key$opt]} { unset data($key$opt) } } else { # # Set data($key$opt) to 0 and deselect the row # set data($key$opt) 0 selectionSubCmd $win clear $row $row 2 } } -selectbackground - -selectforeground { set item [lindex $data(itemList) $row] set key [lindex $item end] set tag $key$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget # and apply it to the given row if it is selected # set optTail [string range $opt 7 end] ;# remove the -select $w tag configure $tag -$optTail $val $w tag lower $tag disabled for {set col 0} {$col < $data(colCount)} {incr col} { if {[arrElemExists data $key-$col$opt]} { $w tag lower $key-$col$opt disabled } } set line [expr {$row + 1}] if {[lsearch -exact [$w tag names $line.0] select] >= 0} { $w tag add $tag $line.0 $line.end } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag -$optTail] } } -text { if {$data(isDisabled)} { return "" } set colWidthsChanged 0 set oldItem [lindex $data(itemList) $row] set key [lindex $oldItem end] set newItem [adjustItem $val $data(colCount)] set line [expr {$row + 1}] set textIdx1 $line.1 set col 0 foreach text $newItem \ fmtCmdFlag $data(fmtCmdFlagList) \ {pixels alignment} $data(colList) { if {$data($col-hide)} { incr col continue } # # Adjust the cell text and the image width # if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } if {[arrElemExists data $key-$col-image]} { set image $data($key-$col-image) set imageWidth [image width $image] } else { set image "" set imageWidth 0 } if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } set cellFont [cellFont $win $key $col] adjustElem $win text imageWidth $cellFont $pixels $alignment # # Delete the old cell contents between the # two tabs, and insert the text and the image # set textIdx2 [$w search \t $textIdx1 $line.end] $w delete $textIdx1 $textIdx2 insertElem $w $textIdx1 $text $image $imageWidth $alignment if {$pixels == 0} { ;# convention: dynamic width # # Check whether the width of the current column has changed # set textWidth [font measure $cellFont -displayof $win $text] set newElemWidth [expr {$imageWidth + $textWidth}] if {$newElemWidth > $data($col-width)} { set colWidthsChanged 1 } else { set oldText [lindex $oldItem $col] if {$fmtCmdFlag} { set oldText \ [doFormat $data($col-formatcommand) $oldText] } adjustElem $win oldText imageWidth \ $cellFont $pixels $alignment set oldTextWidth \ [font measure $cellFont -displayof $win $oldText] set oldElemWidth [expr {$imageWidth + $oldTextWidth}] if {$oldElemWidth == $data($col-width) && $newElemWidth < $oldElemWidth && [incr data($col-widestCnt) -1] == 0} { set colWidthsChanged 1 } } } set textIdx1 [$w search \t $textIdx1 $line.end]+2c incr col } # # Replace the row contents in the list variable if present # if {$data(hasListVar)} { trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) upvar #0 $data(-listvariable) var set var [lreplace $var $row $row $newItem] trace variable ::$data(-listvariable) wu $data(listVarTraceCmd) } # # Replace the row contents in the internal list # lappend newItem [lindex $oldItem end] set data(itemList) [lreplace $data(itemList) $row $row $newItem] # # Adjust the columns if necessary # if {$colWidthsChanged} { adjustColumns $win all 1 } } } } #------------------------------------------------------------------------------ # tablelist::doCellConfig # # Applies the value val of the cell configuration option opt to the cell # row,col of the tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::doCellConfig {row col win opt val} { upvar ::tablelist::ns${win}::data data set w $data(body) switch -- $opt { -background - -foreground { set item [lindex $data(itemList) $row] set key [lindex $item end] set tag $key-$col$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget # $w tag configure $tag $opt $val $w tag lower $tag disabled if {!$data($col-hide)} { # # Apply the tag to the given cell if it is not selected # set line [expr {$row + 1}] if {[lsearch -exact [$w tag names $line.0] select] < 0} { findCellTabs $win $line.0 $col tabIdx1 tabIdx2 $w tag add $tag $tabIdx1 $tabIdx2+1c } } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag $opt] } } -font { # # Save the current cell font # set item [lindex $data(itemList) $row] set key [lindex $item end] set oldCellFont [cellFont $win $key $col] set tag $key-$col$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget # $w tag configure $tag $opt $val $w tag raise $tag if {!$data($col-hide)} { # # Apply the tag to the given cell if it is not selected # findCellTabs $win [expr {$row + 1}].0 $col tabIdx1 tabIdx2 $w tag add $tag $tabIdx1 $tabIdx2+1c } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag $opt] } set pixels [lindex $data(colList) [expr {2*$col}]] if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } set alignment [lindex $data(colList) [expr {2*$col + 1}]] # # Adjust the cell text and the image width # set text [lindex $item $col] if {[lindex $data(fmtCmdFlagList) $col]} { set text [doFormat $data($col-formatcommand) $text] } if {[arrElemExists data $key-$col-image]} { set image $data($key-$col-image) set imageWidth [image width $image] } else { set image "" set imageWidth 0 } set key [lindex $item end] set cellFont [cellFont $win $key $col] adjustElem $win text imageWidth $cellFont $pixels $alignment if {!$data($col-hide)} { # # Delete the old cell contents between the # two tabs, and insert the text and the image # findCellTabs $win [expr {$row + 1}].0 $col tabIdx1 tabIdx2 $w delete $tabIdx1+1c $tabIdx2 insertElem $w $tabIdx1+1c $text $image $imageWidth $alignment } # # Adjust the columns if necessary # if {$pixels == 0} { ;# convention: dynamic width set textWidth [font measure $cellFont -displayof $win $text] set newElemWidth [expr {$imageWidth + $textWidth}] if {$newElemWidth > $data($col-width)} { set data($col-width) $newElemWidth set data($col-widestCnt) 1 adjustColumns $win -1 1 } else { set oldTextWidth \ [font measure $oldCellFont -displayof $win $text] set oldElemWidth [expr {$imageWidth + $oldTextWidth}] if {$oldElemWidth == $data($col-width) && $newElemWidth < $oldElemWidth && [incr data($col-widestCnt) -1] == 0} { adjustColumns $win $col 1 } } } } -image { if {$data(isDisabled)} { return "" } set pixels [lindex $data(colList) [expr {2*$col}]] if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } set alignment [lindex $data(colList) [expr {2*$col + 1}]] # # Adjust the cell text and the image width # set item [lindex $data(itemList) $row] set text [lindex $item $col] if {[lindex $data(fmtCmdFlagList) $col]} { set text [doFormat $data($col-formatcommand) $text] } set oldText $text ;# will be needed later set image $val if {[string compare $image ""] == 0} { set imageWidth 0 } else { set imageWidth [image width $image] } set key [lindex $item end] set cellFont [cellFont $win $key $col] adjustElem $win text imageWidth $cellFont $pixels $alignment if {!$data($col-hide)} { # # Delete the old cell contents between the # two tabs, and insert the text and the image # findCellTabs $win [expr {$row + 1}].0 $col tabIdx1 tabIdx2 $w delete $tabIdx1+1c $tabIdx2 insertElem $w $tabIdx1+1c $text $image $imageWidth $alignment } # # Save the old image width # set name $key-$col$opt if {[arrElemExists data $name]} { set oldImageWidth [image width $data($name)] } else { set oldImageWidth 0 } # # Delete data($name) or save the specified value in it # if {[string compare $val ""] == 0} { if {[arrElemExists data $name]} { unset data($name) } } else { set data($name) $val } # # Adjust the columns if necessary # if {$pixels == 0} { ;# convention: dynamic width set textWidth [font measure $cellFont -displayof $win $text] set newElemWidth [expr {$imageWidth + $textWidth}] if {$newElemWidth > $data($col-width)} { set data($col-width) $newElemWidth set data($col-widestCnt) 1 adjustColumns $win -1 1 } else { adjustElem $win oldText oldImageWidth \ $cellFont $pixels $alignment set oldTextWidth \ [font measure $cellFont -displayof $win $oldText] set oldElemWidth [expr {$oldImageWidth + $oldTextWidth}] if {$oldElemWidth == $data($col-width) && $newElemWidth < $oldElemWidth && [incr data($col-widestCnt) -1] == 0} { adjustColumns $win $col 1 } } } } -selectbackground - -selectforeground { set item [lindex $data(itemList) $row] set key [lindex $item end] set tag $key-$col$opt if {[string compare $val ""] == 0} { if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } else { # # Configure the tag $tag in the body text widget # set optTail [string range $opt 7 end] ;# remove the -select $w tag configure $tag -$optTail $val $w tag lower $tag disabled if {!$data($col-hide)} { # # Apply the tag to the given cell if it is selected # set line [expr {$row + 1}] if {[lsearch -exact [$w tag names $line.0] select] >= 0} { findCellTabs $win $line.0 $col tabIdx1 tabIdx2 $w tag add $tag $tabIdx1 $tabIdx2+1c } } # # Save the properly formatted value of val in data($tag) # set data($tag) [$w tag cget $tag -$optTail] } } -text { if {$data(isDisabled)} { return "" } set pixels [lindex $data(colList) [expr {2*$col}]] if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } set alignment [lindex $data(colList) [expr {2*$col + 1}]] # # Adjust the cell text and the image width # if {[string first \t $val] >= 0 || [string first \n $val] >= 0} { regsub -all "\t|\n" $val " " val } set text $val set fmtCmdFlag [lindex $data(fmtCmdFlagList) $col] if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } set oldItem [lindex $data(itemList) $row] set key [lindex $oldItem end] if {[arrElemExists data $key-$col-image]} { set image $data($key-$col-image) set imageWidth [image width $image] } else { set image "" set imageWidth 0 } set cellFont [cellFont $win $key $col] adjustElem $win text imageWidth $cellFont $pixels $alignment if {!$data($col-hide)} { # # Delete the old cell contents between the # two tabs, and insert the text and the image # findCellTabs $win [expr {$row + 1}].0 $col tabIdx1 tabIdx2 $w delete $tabIdx1+1c $tabIdx2 insertElem $w $tabIdx1+1c $text $image $imageWidth $alignment } # # Replace the cell contents in the internal list # set newItem [lreplace $oldItem $col $col $val] set data(itemList) [lreplace $data(itemList) $row $row $newItem] # # Replace the cell contents in the list variable if present # if {$data(hasListVar)} { trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) upvar #0 $data(-listvariable) var set var [lreplace $var $row $row \ [lrange $newItem 0 $data(lastCol)]] trace variable ::$data(-listvariable) wu $data(listVarTraceCmd) } # # Adjust the columns if necessary # if {$pixels == 0} { ;# convention: dynamic width set textWidth [font measure $cellFont -displayof $win $text] set newElemWidth [expr {$imageWidth + $textWidth}] if {$newElemWidth > $data($col-width)} { set data($col-width) $newElemWidth set data($col-widestCnt) 1 adjustColumns $win -1 1 } else { set oldText [lindex $oldItem $col] if {$fmtCmdFlag} { set oldText \ [doFormat $data($col-formatcommand) $oldText] } adjustElem $win oldText imageWidth \ $cellFont $pixels $alignment set oldTextWidth \ [font measure $cellFont -displayof $win $oldText] set oldElemWidth [expr {$imageWidth + $oldTextWidth}] if {$oldElemWidth == $data($col-width) && $newElemWidth < $oldElemWidth && [incr data($col-widestCnt) -1] == 0} { adjustColumns $win $col 1 } } } } } } #------------------------------------------------------------------------------ # tablelist::setupColumns # # Updates the value of the -colums configuration option for the tablelist # widget win by using the width, title, and alignment specifications given in # the columns argument, and creates the corresponding label (and separator) # widgets if createLabels is true. #------------------------------------------------------------------------------ proc tablelist::setupColumns {win columns createLabels} { variable configSpecs variable configOpts variable alignments upvar ::tablelist::ns${win}::data data set argCount [llength $columns] set colConfigVals {} # # Check the syntax of columns before performing any changes # if {$argCount == 0} { return -code error "expected at least one column specification" } for {set n 0} {$n < $argCount} {incr n} { # # Get the column width # set width [lindex $columns $n] set width [format %d $width] ;# integer check with error message # # Get the column title # if {[incr n] == $argCount} { return -code error "column title missing" } set title [lindex $columns $n] # # Get the column alignment # set alignment left if {[incr n] < $argCount} { set next [lindex $columns $n] if {[catch {format %d $next}] == 0} { ;# integer check incr n -1 } else { set alignment [mwutil::fullOpt "alignment" $next $alignments] } } # # Append the properly formatted values of width, # title, and alignment to the list colConfigVals # lappend colConfigVals $width $title $alignment } # # Save the value of colConfigVals in data(-columns) # set data(-columns) $colConfigVals # # Delete the labels and separators if requested # if {$createLabels} { set children [winfo children $data(hdrTxtFr)] foreach w [lrange [lsort $children] 1 end] { destroy $w } foreach w [winfo children $win] { if {[regexp {^sep[0-9]+$} [winfo name $w]]} { destroy $w } } set data(fmtCmdFlagList) {} } # # Build the list data(colList), and create the labels if requested # set widgetFont $data(-font) set data(colList) {} set col 0 foreach {width title alignment} $data(-columns) { # # Append the width in pixels and the # alignment to the list data(colList) # if {$width > 0} { ;# convention: width in characters ### set str [string repeat 0 $count] set str "" for {set n 0} {$n < $width} {incr n} { append str 0 } set pixels [font measure $widgetFont -displayof $win $str] } elseif {$width < 0} { ;# convention: width in pixels set pixels [expr {(-1)*$width}] } else { ;# convention: dynamic width set pixels 0 } lappend data(colList) $pixels $alignment if {$createLabels} { if {![arrElemExists data $col-delta]} { set data($col-delta) 0 } if {![arrElemExists data $col-hide]} { set data($col-hide) 0 } if {![arrElemExists data $col-resizable]} { set data($col-resizable) 1 } if {![arrElemExists data $col-showarrow]} { set data($col-showarrow) 1 } if {![arrElemExists data $col-sortmode]} { set data($col-sortmode) ascii } lappend data(fmtCmdFlagList) [arrElemExists data $col-formatcommand] # # Create the label # set w $data(hdrTxtFrLbl)$col label $w -bitmap "" -highlightthickness 0 -image "" -takefocus 0 \ -text "" -textvariable "" -underline -1 -wraplength 0 # # Apply to it the current configuration options # foreach opt $configOpts { if {[llength $configSpecs($opt)] != 1 && [regexp {[lc]} [lindex $configSpecs($opt) 2] optGrp]} { if {[string compare $optGrp l] == 0} { set optTail [string range $opt 6 end] if {[arrElemExists data $col$opt]} { $w configure -$optTail $data($col$opt) } else { $w configure -$optTail $data($opt) } } else { $w configure $opt $data($opt) } } } catch {$w configure -state $data(-state)} # # Define some mouse bindings for the label, needed for resizing # bind $w [list tablelist::labelEnter $win $col %x] bind $w [list tablelist::labelEnter $win $col %x] bind $w [list tablelist::labelB1Down $win $col %x] bind $w [list tablelist::labelB1Motion $win %x %y] bind $w [list tablelist::labelB1Enter $win] bind $w [list tablelist::labelB1Leave $win %x %y] bind $w [list tablelist::labelB1Up $win] bind $w <> [list tablelist::labelB3Down $win $col] if {[arrElemExists data $col-labelimage]} { doColConfig $col $win -labelimage $data($col-labelimage) } } incr col } # # Save the number of columns in data(colCount) # set oldColCount $data(colCount) set data(colCount) $col set data(lastCol) [expr {$col - 1}] if {$data(colCount) < $oldColCount} { # # Clean up the data associated with the deleted columns # for {set col $data(colCount)} {$col < $oldColCount} {incr col} { if {[arrElemExists data $col-redispId]} { after cancel $data($col-redispId) } foreach name [array names data $col-*] { unset data($name) } } } # # Create the separators if needed # if {$createLabels && $data(-showseparators)} { createSeps $win } } #------------------------------------------------------------------------------ # tablelist::createSeps # # Creates and manages the separator frames in the tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::createSeps win { upvar ::tablelist::ns${win}::data data for {set col 0} {$col < $data(colCount)} {incr col} { # # Create the col'th separator frame and attach it # to the right edge of the col'th header label # set w $data(sep)$col frame $w -background $data(-background) -borderwidth 1 \ -colormap . -container 0 -highlightthickness 0 \ -relief raised -takefocus 0 -width 2 place $w -in $data(hdrTxtFrLbl)$col -anchor ne -bordermode outside \ -relx 1.0 # # Replace the binding tag Frame with TablelistBody # in the list of binding tags of the separator frame # bindtags $w [list $w TablelistBody [winfo toplevel $w] all] } adjustSepsWhenIdle $win } #------------------------------------------------------------------------------ # tablelist::adjustSepsWhenIdle # # Arranges for the height and vertical position of each separator frame in the # tablelist widget win to be adjusted at idle time. #------------------------------------------------------------------------------ proc tablelist::adjustSepsWhenIdle win { upvar ::tablelist::ns${win}::data data if {[arrElemExists data sepsId]} { return "" } set data(sepsId) [after idle [list tablelist::adjustSeps $win]] } #------------------------------------------------------------------------------ # tablelist::adjustSeps # # Adjusts the height and vertical position of each separator frame in the # tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::adjustSeps win { upvar ::tablelist::ns${win}::data data if {[arrElemExists data sepsId]} { unset data(sepsId) } # # Get the height to be applied to the separator frames # set w $data(body) set textIdx [$w index @0,[winfo height $w]] set dlineinfo [$w dlineinfo $textIdx] if {$data(itemCount) == 0 || [string compare $dlineinfo ""] == 0} { set sepHeight 1 } else { foreach {x y width height baselinePos} $dlineinfo { set sepHeight [expr {$y + $height}] } } # # Set the height and vertical position of each separator frame # foreach w [winfo children $win] { if {[regexp {^sep[0-9]+$} [winfo name $w]]} { $w configure -height $sepHeight if {$data(-showlabels)} { place configure $w -rely 1.0 -y 0 } else { place configure $w -rely 0.0 -y 1 } } } } #------------------------------------------------------------------------------ # tablelist::adjustColumns # # Applies some configuration options to the labels of the tablelist widget win, # places them in the header frame, computes and sets the tab stops for the body # text widget, and adjusts the width and height of the header frame. The # colOfUnknownWidth argument specifies the dynamic-width column(s) whose width # is to be computed when performing these operations (a number or "all"). The # stretchCols argument specifies whether to stretch the stretchable columns. #------------------------------------------------------------------------------ proc tablelist::adjustColumns {win colOfUnknownWidth stretchCols} { upvar ::tablelist::ns${win}::data data # # Configure the labels, place them in the header frame, and compute # the positions of the tab stops to be set in the body text widget # set data(hdrPixels) 0 set tabs {} set col 0 set x 0 foreach {pixels alignment} $data(colList) { set w $data(hdrTxtFrLbl)$col if {$data($col-hide)} { place forget $w incr col continue } # # Adjust the col`th label # if {$pixels != 0} { incr pixels $data($col-delta) } if {[arrElemExists data $col-labelalign]} { set labelAlignment $data($col-labelalign) } else { set labelAlignment $alignment } adjustLabel $win $col $pixels $labelAlignment if {$pixels == 0} { ;# convention: dynamic width # # Compute the column width if requested # if {[string compare $colOfUnknownWidth all] == 0 || $colOfUnknownWidth == $col} { computeColWidth $win $col } set pixels $data($col-width) incr pixels $data($col-delta) } if {$col == $data(arrowCol)} { # # Place the canvas to the left side of the label if the # latter is right-justified and to its right side otherwise # set canvas $data(hdrTxtFrCanv) if {[string compare $labelAlignment right] == 0} { place $canvas -in $w -anchor w -bordermode outside \ -relx 0.0 -x $data(charWidth) -rely 0.5 } else { place $canvas -in $w -anchor e -bordermode outside \ -relx 1.0 -x -$data(charWidth) -rely 0.5 } raise $canvas } # # Place the label in the header frame # set labelPixels [expr {$pixels + 2*$data(charWidth)}] place $w -x $x -relheight 1.0 -width $labelPixels incr x $labelPixels # # Append a tab stop and the alignment to the tabs list # incr data(hdrPixels) $data(charWidth) switch $alignment { left { lappend tabs $data(hdrPixels) left incr data(hdrPixels) $pixels } right { incr data(hdrPixels) $pixels lappend tabs $data(hdrPixels) right } center { lappend tabs [expr {$data(hdrPixels) + $pixels/2}] center incr data(hdrPixels) $pixels } } incr data(hdrPixels) $data(charWidth) lappend tabs $data(hdrPixels) left incr col } place $data(hdrLbl) -x $data(hdrPixels) # # Apply the value of tabs to the body text widget # $data(body) configure -tabs $tabs # # Adjust the width and height of the frames data(hdrTxtFr) and data(hdr) # $data(hdrTxtFr) configure -width $data(hdrPixels) if {$data(-width) <= 0} { if {$stretchCols} { $data(hdr) configure -width $data(hdrPixels) } } else { $data(hdr) configure -width 0 } adjustHeaderHeight $win # # Stretch the stretchable columns if requested # if {$stretchCols} { stretchColumnsWhenIdle $win } } #------------------------------------------------------------------------------ # tablelist::adjustLabel # # Applies some configuration options to the col'th label of the tablelist # widget win as well as to the label's children (if any), and places the # children. #------------------------------------------------------------------------------ proc tablelist::adjustLabel {win col pixels alignment} { upvar ::tablelist::ns${win}::data data # # Apply some configuration options to the label and its children (if any) # set w $data(hdrTxtFrLbl)$col switch $alignment { left { set anchor w } right { set anchor e } center { set anchor center } } set padX [expr {$data(charWidth) - [$w cget -borderwidth]}] $w configure -anchor $anchor -justify $alignment -padx $padX if {[arrElemExists data $col-labelimage]} { set imageWidth [image width $data($col-labelimage)] if {[string compare $alignment right] == 0} { $w.il configure -anchor e -width 0 } else { $w.il configure -anchor w -width 0 } $w.tl configure -anchor $anchor -justify $alignment } else { set imageWidth 0 } # # Make room for the canvas displaying an an up- or down-arrow if needed # set title [lindex $data(-columns) [expr {3*$col + 1}]] set labelFont [$w cget -font] if {$col == $data(arrowCol)} { if {[font metrics $labelFont -displayof $w -fixed]} { set spaces " " ;# 3 spaces } else { set spaces " " ;# 5 spaces } } else { set spaces "" } set spacePixels [font measure $labelFont -displayof $w $spaces] if {$pixels == 0} { ;# convention: dynamic width # # Set the label text # if {$imageWidth == 0} { ;# no image if {[string compare $title ""] == 0} { set text $spaces } else { set lines {} foreach line [split $title \n] { if {[string compare $alignment right] == 0} { lappend lines $spaces$line } else { lappend lines $line$spaces } } set text [join $lines \n] } $w configure -text $text } elseif {[string compare $title ""] == 0} { ;# image w/o text $w configure -text "" set text "" $w.il configure -width [expr {$imageWidth + $spacePixels}] } else { ;# both image and text $w configure -text "" set lines {} foreach line [split $title \n] { if {[string compare $alignment right] == 0} { lappend lines $spaces$line } else { lappend lines $line$spaces } } set text [join $lines \n] $w.tl configure -text $text set colFont [lindex $data(colFontList) $col] set gap [font measure $colFont -displayof $win " "] $w.il configure -width [expr {$imageWidth + $gap}] } } else { # # Clip each line of title according to pixels and alignment # set lessPixels [expr {$pixels - $spacePixels}] if {$imageWidth == 0} { ;# no image if {[string compare $title ""] == 0} { set text $spaces } else { set lines {} foreach line [split $title \n] { set line [strRangeExt $win $line \ $labelFont $lessPixels $alignment] if {[string compare $alignment right] == 0} { lappend lines $spaces$line } else { lappend lines $line$spaces } } set text [join $lines \n] } $w configure -text $text } elseif {[string compare $title ""] == 0} { ;# image w/o text $w configure -text "" set text "" if {$imageWidth <= $lessPixels} { $w.il configure -width [expr {$imageWidth + $spacePixels}] } else { set imageWidth 0 ;# can't display the image } } else { ;# both image and text $w configure -text "" set colFont [lindex $data(colFontList) $col] set gap [font measure $colFont -displayof $win " "] if {$imageWidth + $gap <= $lessPixels} { incr lessPixels -[expr {$imageWidth + $gap}] set lines {} foreach line [split $title \n] { set line [strRangeExt $win $line \ $labelFont $lessPixels $alignment] if {[string compare $alignment right] == 0} { lappend lines $spaces$line } else { lappend lines $line$spaces } } set text [join $lines \n] $w.tl configure -text $text $w.il configure -width [expr {$imageWidth + $gap}] } elseif {$imageWidth <= $lessPixels} { set text "" ;# can't display the text $w.il configure -width [expr {$imageWidth + $spacePixels}] } else { set imageWidth 0 ;# can't display the image set text "" ;# can't display the text } } } # # Place the label's children (if any) # if {$imageWidth == 0} { if {[arrElemExists data $col-labelimage]} { place forget $w.il place forget $w.tl } } else { if {[string compare $text ""] == 0} { place forget $w.tl } switch $alignment { left { place $w.il -anchor nw -relx 0.0 -x $padX -relheight 1.0 if {[string compare $text ""] != 0} { set textX [expr {$padX + [winfo reqwidth $w.il]}] place $w.tl -anchor nw -relx 0.0 -x $textX -relheight 1.0 } } right { place $w.il -anchor ne -relx 1.0 -x -$padX -relheight 1.0 if {[string compare $text ""] != 0} { set textX [expr {-$padX - [winfo reqwidth $w.il]}] place $w.tl -anchor ne -relx 1.0 -x $textX -relheight 1.0 } } center { if {[string compare $text ""] == 0} { place $w.il -anchor n -relx 0.5 -x 0 -relheight 1.0 } else { set halfWidth [expr {([winfo reqwidth $w.il] + \ [winfo reqwidth $w.tl]) / 2}] place $w.il -anchor nw -relx 0.5 -x -$halfWidth \ -relheight 1.0 place $w.tl -anchor ne -relx 0.5 -x $halfWidth \ -relheight 1.0 } } } } } #------------------------------------------------------------------------------ # tablelist::computeColWidth # # Computes the width of the col'th column of the tablelist widget win to be just # large enough to hold all the elements of the column (including its label). #------------------------------------------------------------------------------ proc tablelist::computeColWidth {win col} { upvar ::tablelist::ns${win}::data data set fmtCmdFlag [lindex $data(fmtCmdFlagList) $col] set colFont [lindex $data(colFontList) $col] set data($col-width) 0 set data($col-widestCnt) 0 # # Column elements # foreach item $data(itemList) { if {$col >= [llength $item] - 1} { continue } set text [lindex $item $col] if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } set key [lindex $item end] if {[arrElemExists data $key-$col-image]} { set imageWidth [image width $data($key-$col-image)] } else { set imageWidth 0 } if {[arrElemExists data $key-$col-font]} { set cellFont $data($key-$col-font) } elseif {[arrElemExists data $key-font]} { set cellFont $data($key-font) } else { set cellFont $colFont } adjustElem $win text imageWidth $cellFont 0 left set textWidth [font measure $cellFont -displayof $win $text] set elemWidth [expr {$imageWidth + $textWidth}] if {$elemWidth > $data($col-width)} { set data($col-width) $elemWidth set data($col-widestCnt) 1 } elseif {$elemWidth == $data($col-width)} { incr data($col-widestCnt) } } # # Column label # set w $data(hdrTxtFrLbl)$col if {[arrElemExists data $col-labelimage]} { set title [lindex $data(-columns) [expr {3*$col + 1}]] if {[string compare $title ""] == 0} { ;# image w/o text set netLabelWidth [winfo reqwidth $w.il] } else { ;# both image and text set netLabelWidth [expr {[winfo reqwidth $w.il] + [winfo reqwidth $w.tl]}] } } else { ;# no image set netLabelWidth [expr {[winfo reqwidth $w] - 2*$data(charWidth)}] } if {$netLabelWidth > $data($col-width)} { set data($col-width) $netLabelWidth set data($col-widestCnt) 1 } elseif {$netLabelWidth == $data($col-width)} { incr data($col-widestCnt) } } #------------------------------------------------------------------------------ # tablelist::adjustHeaderHeight # # Sets the height of the header frame of the tablelist widget win to the max. # height of its children and adjusts the y-coordinate of the canvas containing # an up- or down-arrow. #------------------------------------------------------------------------------ proc tablelist::adjustHeaderHeight win { upvar ::tablelist::ns${win}::data data # # Compute the max. label height # set maxLabelHeight 0 set children [winfo children $data(hdrTxtFr)] foreach w [lrange [lsort $children] 1 end] { if {[string compare [winfo manager $w] ""] == 0} { continue } set reqHeight [winfo reqheight $w] if {$reqHeight > $maxLabelHeight} { set maxLabelHeight $reqHeight } foreach c [winfo children $w] { if {[string compare [winfo manager $c] ""] == 0} { continue } set reqHeight \ [expr {[winfo reqheight $c] + 2*[$w cget -borderwidth]}] if {$reqHeight > $maxLabelHeight} { set maxLabelHeight $reqHeight } } } # # Set the height of the header frame and adjust the separators # $data(hdrTxtFr) configure -height $maxLabelHeight if {$data(-showlabels)} { $data(hdr) configure -height $maxLabelHeight } else { $data(hdr) configure -height 1 } adjustSepsWhenIdle $win } #------------------------------------------------------------------------------ # tablelist::stretchColumnsWhenIdle # # Arranges for the stretchable columns of the tablelist widget win to be # stretched at idle time. #------------------------------------------------------------------------------ proc tablelist::stretchColumnsWhenIdle win { upvar ::tablelist::ns${win}::data data if {[arrElemExists data stretchId]} { return "" } set data(stretchId) [after idle [list tablelist::stretchColumns $win -1]] } #------------------------------------------------------------------------------ # tablelist::stretchColumns # # Stretches the stretchable columns to fill the tablelist window win # horizontally. The colOfFixedDelta argument specifies the column for which # the stretching is to be made using a precomputed amount of pixels. #------------------------------------------------------------------------------ proc tablelist::stretchColumns {win colOfFixedDelta} { upvar ::tablelist::ns${win}::data data if {[arrElemExists data stretchId]} { unset data(stretchId) } set forceAdjust $data(forceAdjust) set data(forceAdjust) 0 if {$data(hdrPixels) == 0 || $data(-width) <= 0} { return "" } # # Get the list data(stretchableCols) of # numerical indices of the stretchable columns # set data(stretchableCols) {} if {[string compare $data(-stretch) all] == 0} { for {set col 0} {$col < $data(colCount)} {incr col} { lappend data(stretchableCols) $col } } else { foreach col $data(-stretch) { lappend data(stretchableCols) [colIndex $win $col 0] } } # # Compute the total number data(delta) of pixels by which the # columns are to be stretched and the total amount # data(stretchablePxls) of stretchable column widths in pixels # set data(delta) [winfo width $data(hdr)] set data(stretchablePxls) 0 set lastColToStretch -1 set col 0 foreach {pixels alignment} $data(colList) { if {$data($col-hide)} { incr col continue } if {$pixels == 0} { ;# convention: dynamic width set pixels $data($col-width) } incr data(delta) -[expr {$pixels + 2*$data(charWidth)}] if {[lsearch -exact $data(stretchableCols) $col] >= 0} { incr data(stretchablePxls) $pixels set lastColToStretch $col } incr col } if {$data(delta) < 0} { set delta 0 } else { set delta $data(delta) } if {$data(stretchablePxls) == 0 && !$forceAdjust} { return "" } # # Distribute the value of delta to the stretchable # columns, proportionally to their widths in pixels # set rest $delta set col 0 foreach {pixels alignment} $data(colList) { if {$data($col-hide) || [lsearch -exact $data(stretchableCols) $col] < 0} { set data($col-delta) 0 } else { set oldDelta $data($col-delta) if {$pixels == 0} { ;# convention: dynamic width set dynamic 1 set pixels $data($col-width) } else { set dynamic 0 } if {$data(stretchablePxls) == 0} { set data($col-delta) 0 } else { if {$col != $colOfFixedDelta} { set data($col-delta) \ [expr {$delta*$pixels/$data(stretchablePxls)}] } incr rest -$data($col-delta) } if {$col == $lastColToStretch} { incr data($col-delta) $rest } if {!$dynamic && $data($col-delta) != $oldDelta} { redisplayColWhenIdle $win $col } } incr col } # # Adjust the columns # adjustColumns $win -1 0 update idletasks } #------------------------------------------------------------------------------ # tablelist::redisplayWhenIdle # # Arranges for the items of the tablelist widget win to be redisplayed at idle # time. #------------------------------------------------------------------------------ proc tablelist::redisplayWhenIdle win { upvar ::tablelist::ns${win}::data data if {[arrElemExists data redispId] || $data(itemCount) == 0} { return "" } set data(redispId) [after idle [list tablelist::redisplay $win 0 end]] # # Cancel the execution of all delayed redisplayCol commands # foreach name [array names data *-redispId] { after cancel $data($name) unset data($name) } } #------------------------------------------------------------------------------ # tablelist::redisplay # # Redisplays the items of the tablelist widget win, in the range specified by # first and last. #------------------------------------------------------------------------------ proc tablelist::redisplay {win first last} { upvar ::tablelist::ns${win}::data data if {$first == 0 && [string first $last end] == 0 && [arrElemExists data redispId]} { unset data(redispId) } if {$first < 0} { return "" } if {[string first $last end] == 0} { set last $data(lastRow) } set w $data(body) for {set idx $first; set line [expr {$first + 1}]} {$idx <= $last} \ {incr idx; incr line} { # # Check whether the line is selected # set tagNames [$w tag names $line.0] if {[lsearch -exact $tagNames select] >= 0} { set selected 1 } else { set selected 0 } # # Empty the line, clip the elements if necessary, # and insert them with the corresponding tags # $w delete $line.0 $line.end set item [lindex $data(itemList) $idx] set keyIdx [expr {[llength $item] - 1}] set key [lindex $item end] set rowTags {} foreach opt {-background -font -foreground} { if {[arrElemExists data $key$opt]} { lappend rowTags $key$opt } } set newItem {} set col 0 foreach colFont $data(colFontList) \ colTags $data(colTagsList) \ fmtCmdFlag $data(fmtCmdFlagList) \ {pixels alignment} $data(colList) { if {$col < $keyIdx} { set text [lindex $item $col] } else { set text "" } lappend newItem $text if {$data($col-hide)} { incr col continue } # # Adjust the cell text and the image width # if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } if {[arrElemExists data $key-$col-image]} { set image $data($key-$col-image) set imageWidth [image width $image] } else { set image "" set imageWidth 0 } if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } if {[arrElemExists data $key-$col-font]} { set cellFont $data($key-$col-font) } elseif {[arrElemExists data $key-font]} { set cellFont $data($key-font) } else { set cellFont $colFont } adjustElem $win text imageWidth $cellFont $pixels $alignment # # Insert the text and the image # set tagNames {} eval lappend tagNames $colTags $rowTags foreach opt {-background -font -foreground} { if {[arrElemExists data $key-$col$opt]} { lappend tagNames $key-$col$opt } } if {$imageWidth == 0} { $w insert $line.end \t$text\t $tagNames } else { $w insert $line.end \t\t $tagNames insertElem $w $line.end-1c $text $image $imageWidth $alignment } incr col } lappend newItem $key set data(itemList) [lreplace $data(itemList) $idx $idx $newItem] # # Select the item if it was selected before # if {$selected} { selectionSubCmd $win set $idx $idx 2 } } # # Restore the stripes in the body text widget # makeStripesWhenIdle $win } #------------------------------------------------------------------------------ # tablelist::redisplayColWhenIdle # # Arranges for the elements of the col'th column of the tablelist widget win to # be redisplayed at idle time. #------------------------------------------------------------------------------ proc tablelist::redisplayColWhenIdle {win col} { upvar ::tablelist::ns${win}::data data if {[arrElemExists data $col-redispId] || [arrElemExists data redispId] || $data(itemCount) == 0} { return "" } set data($col-redispId) \ [after idle [list tablelist::redisplayCol $win $col 0 end]] } #------------------------------------------------------------------------------ # tablelist::redisplayCol # # Redisplays the elements of the col'th column of the tablelist widget win, in # the range specified by first and last. #------------------------------------------------------------------------------ proc tablelist::redisplayCol {win col first last} { upvar ::tablelist::ns${win}::data data if {$first == 0 && [string first $last end] == 0 && [arrElemExists data $col-redispId]} { unset data($col-redispId) } if {$data($col-hide) || $first < 0} { return "" } if {[string first $last end] == 0} { set last $data(lastRow) } set fmtCmdFlag [lindex $data(fmtCmdFlagList) $col] set colFont [lindex $data(colFontList) $col] set w $data(body) set pixels [lindex $data(colList) [expr {2*$col}]] if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } set alignment [lindex $data(colList) [expr {2*$col + 1}]] for {set idx $first; set line [expr {$first + 1}]} {$idx <= $last} \ {incr idx; incr line} { # # Adjust the cell text and the image width # set item [lindex $data(itemList) $idx] set text [lindex $item $col] if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } set key [lindex $item end] if {[arrElemExists data $key-$col-image]} { set image $data($key-$col-image) set imageWidth [image width $image] } else { set image "" set imageWidth 0 } if {[arrElemExists data $key-$col-font]} { set cellFont $data($key-$col-font) } elseif {[arrElemExists data $key-font]} { set cellFont $data($key-font) } else { set cellFont $colFont } adjustElem $win text imageWidth $cellFont $pixels $alignment # # Delete the old cell contents between the # two tabs, and insert the text and the image # findCellTabs $win $line.0 $col tabIdx1 tabIdx2 $w delete $tabIdx1+1c $tabIdx2 insertElem $w $tabIdx1+1c $text $image $imageWidth $alignment } } #------------------------------------------------------------------------------ # tablelist::makeStripesWhenIdle # # Arranges for the stripes in the body of the tablelist widget win to be # redrawn at idle time. #------------------------------------------------------------------------------ proc tablelist::makeStripesWhenIdle win { upvar ::tablelist::ns${win}::data data if {[arrElemExists data stripesId] || $data(itemCount) == 0} { return "" } set data(stripesId) [after idle [list tablelist::makeStripes $win]] } #------------------------------------------------------------------------------ # tablelist::makeStripes # # Redraws the stripes in the body of the tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::makeStripes win { upvar ::tablelist::ns${win}::data data if {[arrElemExists data stripesId]} { unset data(stripesId) } set w $data(body) $w tag remove stripe 1.0 end if {[string compare $data(-stripebackground) ""] == 0 && [string compare $data(-stripeforeground) ""] == 0} { return "" } set step [expr {2*$data(-stripeheight)}] for {set n [expr {$data(-stripeheight) + 1}]} {$n <= $step} {incr n} { for {set line $n} {$line <= $data(itemCount)} {incr line $step} { $w tag add stripe $line.0 $line.end } } } #------------------------------------------------------------------------------ # tablelist::makeListVar # # Arranges for the global variable specified by varName to become the list # variable associated with the tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::makeListVar {win varName} { upvar ::tablelist::ns${win}::data data if {[string compare $varName ""] == 0} { # # If there is an old list variable associated with the # widget then remove the trace set on this variable # if {$data(hasListVar)} { synchronize $win trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) } return "" } # # The list variable may be an array element but must not be an array # if {![regexp {^(.*)\((.*)\)$} $varName dummy name1 name2]} { if {[array exists ::$varName]} { return -code error "variable \"$varName\" is array" } set name1 $varName set name2 "" } if {[info exists ::$varName]} { # # Invoke the trace procedure associated with the new list variable # listVarTrace $win $name1 $name2 w } else { # # Set ::$varName according to the value of data(itemList) # set ::$varName {} foreach item $data(itemList) { lappend ::$varName [lrange $item 0 $data(lastCol)] } } # # If there is an old list variable associated with the # widget then remove the trace set on this variable, # and in any case set a trace on the new list variable # if {$data(hasListVar)} { trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) } trace variable ::$varName wu $data(listVarTraceCmd) } #------------------------------------------------------------------------------ # tablelist::synchronize # # This procedure is invoked either as an idle callback after the list variable # associated with the tablelist widget win was written, or directly, upon # execution of some widget commands. It makes sure that the contents of the # widget is synchronized with the value of the list variable. #------------------------------------------------------------------------------ proc tablelist::synchronize win { upvar ::tablelist::ns${win}::data data # # Nothing to do if the list variable was not written # if {![arrElemExists data syncId]} { return "" } # # Here we are in the case that the procedure was scheduled for # execution at idle time. However, it might have been invoked # directly, before the idle time occured; in this case we should # cancel the execution of the previously scheduled idle callback. # after cancel $data(syncId) ;# no harm if data(syncId) is no longer valid unset data(syncId) upvar #0 $data(-listvariable) var set newCount [llength $var] if {$newCount < $data(itemCount)} { # # Delete the items with indices >= newCount from the widget # set updateCount $newCount deleteSubCmd $win $newCount $data(lastRow) 0 } elseif {$newCount > $data(itemCount)} { # # Insert the items of var with indices # >= data(itemCount) into the widget # set updateCount $data(itemCount) insertSubCmd $win $data(itemCount) \ [lrange $var $data(itemCount) end] 0 } else { set updateCount $newCount } # # Update the first updateCount items of the internal list # set itemsChanged 0 for {set idx 0} {$idx < $updateCount} {incr idx} { set oldItem [lindex $data(itemList) $idx] set newItem [adjustItem [lindex $var $idx] $data(colCount)] lappend newItem [lindex $oldItem end] if {[string compare $oldItem $newItem] != 0} { set data(itemList) [lreplace $data(itemList) $idx $idx $newItem] set itemsChanged 1 } } # # If necessary, adjust the columns and make sure # that the items will be redisplayed at idle time # if {$itemsChanged} { adjustColumns $win all 1 redisplayWhenIdle $win } } # # Private procedures implementing the tablelist widget command # ============================================================ # #------------------------------------------------------------------------------ # tablelist::tablelistWidgetCmd # # This procedure is invoked to process the Tcl command corresponding to a # tablelist widget. #------------------------------------------------------------------------------ proc tablelist::tablelistWidgetCmd {win argList} { variable cmdOpts upvar ::tablelist::ns${win}::data data set argCount [llength $argList] if {$argCount == 0} { mwutil::wrongNumArgs "$win option ?arg arg ...?" } set cmd [mwutil::fullOpt "option" [lindex $argList 0] $cmdOpts] switch $cmd { activate { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd index" } synchronize $win set index [rowIndex $win [lindex $argList 1] 0] if {$data(isDisabled)} { return "" } else { return [activateSubCmd $win $index] } } attrib { return [mwutil::attribSubCmd $win [lrange $argList 1 end]] } bbox { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd index" } synchronize $win set index [rowIndex $win [lindex $argList 1] 0] return [bboxSubCmd $win $index] } bodypath { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } return $data(body) } cellcget { if {$argCount != 3} { mwutil::wrongNumArgs "$win $cmd cellIndex option" } # # Check the cell index # synchronize $win set cell [lindex $argList 1] scan [cellIndex $win $cell] %d,%d row col if {$row < 0 || $row >= $data(itemCount) || $col < 0 || $col >= $data(colCount)} { return -code error \ "cell index \"$cell\" out of range" } return [cellcgetSubCmd $win $row $col [lindex $argList 2]] } cellconfigure { if {$argCount < 2} { mwutil::wrongNumArgs "$win $cmd cellIndex ?option? ?value?\ ?option value ...?" } # # Check the cell index # synchronize $win set cell [lindex $argList 1] scan [cellIndex $win $cell] %d,%d row col if {$row < 0 || $row >= $data(itemCount) || $col < 0 || $col >= $data(colCount)} { return -code error \ "cell index \"$cell\" out of range" } return [cellconfigureSubCmd $win $row $col [lrange $argList 2 end]] } cellindex { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd cellIndex" } synchronize $win return [cellIndex $win [lindex $argList 1]] } cget { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd option" } # # Return the value of the specified configuration option # variable configSpecs set opt [mwutil::fullConfigOpt [lindex $argList 1] configSpecs] return $data($opt) } columncget { if {$argCount != 3} { mwutil::wrongNumArgs "$win $cmd columnIndex option" } # # Check the column index # synchronize $win set colArg [lindex $argList 1] set col [colIndex $win $colArg 1] return [columncgetSubCmd $win $col [lindex $argList 2]] } columnconfigure { if {$argCount < 2} { mwutil::wrongNumArgs "$win $cmd columnIndex ?option? ?value?\ ?option value ...?" } # # Check the column index # synchronize $win set colArg [lindex $argList 1] set col [colIndex $win $colArg 1] return [columnconfigureSubCmd $win $col [lrange $argList 2 end]] } columncount { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } return $data(colCount) } columnindex { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd columnIndex" } synchronize $win return [colIndex $win [lindex $argList 1] 0] } configure { variable configSpecs return [mwutil::configSubCmd $win configSpecs data \ tablelist::doConfig [lrange $argList 1 end]] } curselection { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } synchronize $win return [curselectionSubCmd $win] } delete { if {$argCount < 2 || $argCount > 3} { mwutil::wrongNumArgs "$win $cmd firstIndex ?lastIndex?" } synchronize $win set first [rowIndex $win [lindex $argList 1] 0] if {$argCount == 3} { set last [rowIndex $win [lindex $argList 2] 0] } else { set last $first } if {$data(isDisabled)} { return "" } else { return [deleteSubCmd $win $first $last 1] } } get { if {$argCount < 2 || $argCount > 3} { mwutil::wrongNumArgs "$win $cmd firstIndex ?lastIndex?" } synchronize $win set first [rowIndex $win [lindex $argList 1] 0] if {$argCount == 3} { set last [rowIndex $win [lindex $argList 2] 0] set idxCount 2 } else { set last $first set idxCount 1 } return [getSubCmd $win $first $last $idxCount] } index { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd index" } synchronize $win return [rowIndex $win [lindex $argList 1] 1] } insert { if {$argCount < 2} { mwutil::wrongNumArgs "$win $cmd index ?item item ...?" } synchronize $win set index [rowIndex $win [lindex $argList 1] 1] if {$data(isDisabled)} { return "" } else { return [insertSubCmd $win $index [lrange $argList 2 end] 1] } } insertlist { if {$argCount != 3} { mwutil::wrongNumArgs "$win $cmd index list" } synchronize $win set index [rowIndex $win [lindex $argList 1] 1] if {$data(isDisabled)} { return "" } else { return [insertSubCmd $win $index [lindex $argList 2] 1] } } labelpath { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd columnIndex" } # # Check the column index # synchronize $win set colArg [lindex $argList 1] set col [colIndex $win $colArg 1] return $data(hdrTxtFrLbl)$col } labels { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } set children [winfo children $data(hdrTxtFr)] return [lrange [lsort $children] 1 end] } nearest { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd y" } set y [lindex $argList 1] format %d $y ;# integer check with error message synchronize $win return [rowIndex $win @0,$y 0] } nearestcell { if {$argCount != 3} { mwutil::wrongNumArgs "$win $cmd x y" } set x [lindex $argList 1] format %d $x ;# integer check with error message set y [lindex $argList 2] format %d $y ;# integer check with error message synchronize $win return [cellIndex $win @$x,$y] } nearestcolumn { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd x" } set x [lindex $argList 1] format %d $x ;# integer check with error message synchronize $win return [colIndex $win @$x,0 0] } resetsortinfo { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } set data(sortCol) -1 set data(sortOrder) {} place forget $data(hdrTxtFrCanv) set colOfUnknownWidth $data(arrowCol) set data(arrowCol) -1 synchronize $win adjustColumns $win $colOfUnknownWidth 1 return "" } rowcget { if {$argCount != 3} { mwutil::wrongNumArgs "$win $cmd index option" } # # Check the row index # synchronize $win set rowArg [lindex $argList 1] set row [rowIndex $win $rowArg 0] if {$row < 0 || $row >= $data(itemCount)} { return -code error \ "row index \"$rowArg\" out of range" } return [rowcgetSubCmd $win $row [lindex $argList 2]] } rowconfigure { if {$argCount < 2} { mwutil::wrongNumArgs "$win $cmd index ?option? ?value?\ ?option value ...?" } # # Check the row index # synchronize $win set rowArg [lindex $argList 1] set row [rowIndex $win $rowArg 0] if {$row < 0 || $row >= $data(itemCount)} { return -code error \ "row index \"$rowArg\" out of range" } return [rowconfigureSubCmd $win $row [lrange $argList 2 end]] } scan { if {$argCount != 4} { mwutil::wrongNumArgs "$win $cmd mark|dragto x y" } set x [lindex $argList 2] set y [lindex $argList 3] format %d $x ;# integer check with error message format %d $y ;# integer check with error message variable scanCmdOpts set opt [mwutil::fullOpt "option" [lindex $argList 1] $scanCmdOpts] synchronize $win return [scanSubCmd $win $opt $x $y] } see { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd index" } synchronize $win set index [rowIndex $win [lindex $argList 1] 0] return [seeSubCmd $win $index] } selection { if {$argCount < 3 || $argCount > 4} { mwutil::wrongNumArgs "$win $cmd option index ?index?" } synchronize $win set first [rowIndex $win [lindex $argList 2] 0] if {$argCount == 4} { set last [rowIndex $win [lindex $argList 3] 0] set idxCount 2 } else { set last $first set idxCount 1 } variable selCmdOpts set opt [mwutil::fullOpt "option" [lindex $argList 1] $selCmdOpts] if {$data(isDisabled)} { return "" } else { return [selectionSubCmd $win $opt $first $last $idxCount] } } separatorpath { if {$argCount != 2} { mwutil::wrongNumArgs "$win $cmd columnIndex" } # # Check the column index # synchronize $win set colArg [lindex $argList 1] set col [colIndex $win $colArg 1] if {$data(-showseparators)} { return $data(sep)$col } else { return "" } } separators { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } set sepList {} foreach w [winfo children $win] { if {[regexp {^sep[0-9]+$} [winfo name $w]]} { lappend sepList $w } } return $sepList } size { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } synchronize $win return $data(itemCount) } sort { if {$argCount < 1 || $argCount > 2} { mwutil::wrongNumArgs "$win $cmd ?-increasing|-decreasing?" } if {$argCount == 1} { set order -increasing } else { variable sortOrders set order [mwutil::fullOpt "option" \ [lindex $argList 2] $sortOrders] } synchronize $win return [sortSubCmd $win -1 $order] } sortbycolumn { if {$argCount < 2 || $argCount > 3} { mwutil::wrongNumArgs "$win $cmd columnIndex\ ?-increasing|-decreasing?" } # # Check the column index # synchronize $win set colArg [lindex $argList 1] set col [colIndex $win $colArg 1] if {$argCount == 2} { set order -increasing } else { variable sortOrders set order [mwutil::fullOpt "option" \ [lindex $argList 2] $sortOrders] } return [sortSubCmd $win $col $order] } sortcolumn { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } return $data(sortCol) } sortorder { if {$argCount != 1} { mwutil::wrongNumArgs "$win $cmd" } return $data(sortOrder) } xview { synchronize $win return [xviewSubCmd $win [lrange $argList 1 end]] } yview { synchronize $win return [yviewSubCmd $win [lrange $argList 1 end]] } } } #------------------------------------------------------------------------------ # tablelist::activateSubCmd # # This procedure is invoked to process the tablelist activate subcommand. #------------------------------------------------------------------------------ proc tablelist::activateSubCmd {win index} { upvar ::tablelist::ns${win}::data data # # Adjust the index to fit within the existing items # if {$index >= $data(itemCount)} { set index $data(lastRow) } if {$index < 0} { set index 0 } set data(activeIdx) $index return "" } #------------------------------------------------------------------------------ # tablelist::bboxSubCmd # # This procedure is invoked to process the tablelist bbox subcommand. #------------------------------------------------------------------------------ proc tablelist::bboxSubCmd {win index} { upvar ::tablelist::ns${win}::data data set w $data(body) set dlineinfo [$w dlineinfo [expr {$index + 1}].0] if {$data(itemCount) == 0 || [string compare $dlineinfo ""] == 0} { return {} } foreach {x y width height baselinePos} $dlineinfo { lappend bbox [expr {$x + [winfo x $w]}] [expr {$y + [winfo y $w]}] \ $width [expr {$height - 2*$data(-selectborderwidth) - 1}] } return $bbox } #------------------------------------------------------------------------------ # tablelist::cellcgetSubCmd # # This procedure is invoked to process the tablelist cellcget subcommand. #------------------------------------------------------------------------------ proc tablelist::cellcgetSubCmd {win row col opt} { variable cellConfigSpecs upvar ::tablelist::ns${win}::data data # # Return the value of the specified cell configuration option # set opt [mwutil::fullConfigOpt $opt cellConfigSpecs] switch -- $opt { -text { set item [lindex $data(itemList) $row] return [lindex $item $col] } default { set item [lindex $data(itemList) $row] set key [lindex $item end] if {[arrElemExists data $key-$col$opt]} { return $data($key-$col$opt) } else { return "" } } } } #------------------------------------------------------------------------------ # tablelist::cellconfigureSubCmd # # This procedure is invoked to process the tablelist cellconfigure subcommand. #------------------------------------------------------------------------------ proc tablelist::cellconfigureSubCmd {win row col argList} { variable cellConfigSpecs upvar ::tablelist::ns${win}::data data # # Build an array from the cell configuration options and their values # set item [lindex $data(itemList) $row] set cellConfigVals(-text) [lindex $item $col] set key [lindex $item end] foreach opt {-background -font -foreground -image -selectbackground -selectforeground} { if {[arrElemExists data $key-$col$opt]} { set cellConfigVals($opt) $data($key-$col$opt) } else { set cellConfigVals($opt) "" } } return [mwutil::configSubCmd $win cellConfigSpecs cellConfigVals \ "tablelist::doCellConfig $row $col" $argList] } #------------------------------------------------------------------------------ # tablelist::columncgetSubCmd # # This procedure is invoked to process the tablelist columncget subcommand. #------------------------------------------------------------------------------ proc tablelist::columncgetSubCmd {win col opt} { variable colConfigSpecs upvar ::tablelist::ns${win}::data data # # Return the value of the specified column configuration option # set opt [mwutil::fullConfigOpt $opt colConfigSpecs] switch -- $opt { -align { return [lindex $data(-columns) [expr {3*$col + 2}]] } -title { return [lindex $data(-columns) [expr {3*$col + 1}]] } -width { return [lindex $data(-columns) [expr {3*$col}]] } default { if {[arrElemExists data $col$opt]} { return $data($col$opt) } else { return "" } } } } #------------------------------------------------------------------------------ # tablelist::columnconfigureSubCmd # # This procedure is invoked to process the tablelist columnconfigure subcommand. #------------------------------------------------------------------------------ proc tablelist::columnconfigureSubCmd {win col argList} { variable colConfigSpecs upvar ::tablelist::ns${win}::data data # # Build an array from the column configuration options and their values # set n [expr {3*$col}] foreach opt {-width -title -align} { set colConfigVals($opt) [lindex $data(-columns) $n] incr n } foreach opt {-background -font -foreground -formatcommand -hide -labelalign -labelbackground -labelborderwidth -labelcommand -labelfont -labelforeground -labelheight -labelimage -labelpady -labelrelief -resizable -selectbackground -selectforeground -showarrow -sortcommand -sortmode} { if {[arrElemExists data $col$opt]} { set colConfigVals($opt) $data($col$opt) } else { set colConfigVals($opt) "" } } return [mwutil::configSubCmd $win colConfigSpecs colConfigVals \ "tablelist::doColConfig $col" $argList] } #------------------------------------------------------------------------------ # tablelist::curselectionSubCmd # # This procedure is invoked to process the tablelist curselection subcommand. #------------------------------------------------------------------------------ proc tablelist::curselectionSubCmd win { upvar ::tablelist::ns${win}::data data # # Find the selected lines of the body text widget # set result {} set w $data(body) set selRange [$w tag nextrange select 1.0] while {[llength $selRange] != 0} { set selStart [lindex $selRange 0] set selEnd [lindex $selRange 1] lappend result [expr {int($selStart) - 1}] set selRange [$w tag nextrange select $selEnd] } return $result } #------------------------------------------------------------------------------ # tablelist::deleteSubCmd # # This procedure is invoked to process the tablelist delete subcommand. #------------------------------------------------------------------------------ proc tablelist::deleteSubCmd {win first last updateListVar} { upvar ::tablelist::ns${win}::data data # # Adjust the range to fit within the existing items # if {$first < 0} { set first 0 } if {$last >= $data(itemCount)} { set last $data(lastRow) } set count [expr {$last - $first + 1}] if {$count <= 0} { return "" } # # Check whether the width of any dynamic-width # column might be affected by the deletion # set w $data(body) if {$count == $data(itemCount)} { set colWidthsChanged 1 ;# just to save time } else { set colWidthsChanged 0 for {set idx $first} {$idx <= $last} {incr idx} { set item [lindex $data(itemList) $idx] set key [lindex $item end] set col 0 foreach text [lrange $item 0 $data(lastCol)] \ colFont $data(colFontList) \ fmtCmdFlag $data(fmtCmdFlagList) \ {pixels alignment} $data(colList) { if {$data($col-hide) || $pixels != 0} { incr col continue } if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } if {[arrElemExists data $key-$col-image]} { set imageWidth [image width $data($key-$col-image)] } else { set imageWidth 0 } if {[arrElemExists data $key-$col-font]} { set cellFont $data($key-$col-font) } elseif {[arrElemExists data $key-font]} { set cellFont $data($key-font) } else { set cellFont $colFont } adjustElem $win text imageWidth $cellFont $pixels $alignment set textWidth [font measure $cellFont -displayof $win $text] set elemWidth [expr {$imageWidth + $textWidth}] if {$elemWidth == $data($col-width) && [incr data($col-widestCnt) -1] == 0} { set colWidthsChanged 1 break } incr col } if {$colWidthsChanged} { break } } } # # Delete the given items and their tags from the body text widget. # Interestingly, for a large number of items it is much more efficient to # delete each line individually than to invoke a global delete command. # set textIdx1 [expr {$first + 1}].0 set textIdx2 [expr {$first + 2}].0 for {set idx $first} {$idx <= $last} {incr idx} { $w delete $textIdx1 $textIdx2 set item [lindex $data(itemList) $idx] set key [lindex $item end] foreach opt {-background -font -foreground -selectbackground -selectforeground} { set tag $key$opt if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } for {set col 0} {$col < $data(colCount)} {incr col} { foreach opt {-background -font -foreground -selectbackground -selectforeground} { set tag $key-$col$opt if {[arrElemExists data $tag]} { $w tag delete $tag unset data($tag) } } if {[arrElemExists data $key-$col-image]} { unset data($key-$col-image) } } } # # Delete the given items from the internal list # set data(itemList) [lreplace $data(itemList) $first $last] incr data(itemCount) -$count incr data(lastRow) -$count # # Delete the given items from the list variable if needed # if {$data(hasListVar) && $updateListVar} { trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) upvar #0 $data(-listvariable) var set var [lreplace $var $first $last] trace variable ::$data(-listvariable) wu $data(listVarTraceCmd) } # # Adjust the height of the body text widget if necessary # if {$data(-height) <= 0} { $w configure -height $data(itemCount) } # # Adjust the columns if necessary, adjust the separators, # and redraw the stripes in the body text widget # if {$colWidthsChanged} { adjustColumns $win all 1 } adjustSepsWhenIdle $win makeStripesWhenIdle $win # # Update the indices anchorIdx and activeIdx # if {$first <= $data(anchorIdx)} { incr data(anchorIdx) -$count if {$data(anchorIdx) < $first} { set data(anchorIdx) $first } } if {$last < $data(activeIdx)} { incr data(activeIdx) -$count } elseif {$first <= $data(activeIdx)} { set data(activeIdx) $first if {$data(activeIdx) >= $data(itemCount) && $data(itemCount) > 0} { set data(activeIdx) $data(lastRow) } } return "" } #------------------------------------------------------------------------------ # tablelist::getSubCmd # # This procedure is invoked to process the tablelist get subcommand. #------------------------------------------------------------------------------ proc tablelist::getSubCmd {win first last idxCount} { upvar ::tablelist::ns${win}::data data # # Adjust the range to fit within the existing items # if {$first >= $data(itemCount)} { return {} } if {$last >= $data(itemCount)} { set last $data(lastRow) } if {$first < 0} { set first 0 } if {$first > $last} { return {} } # # Get the given items from the internal list # if {$idxCount == 1} { set item [lindex $data(itemList) $first] return [lrange $item 0 $data(lastCol)] } else { set result {} for {set idx $first} {$idx <= $last} {incr idx} { set item [lindex $data(itemList) $idx] lappend result [lrange $item 0 $data(lastCol)] } return $result } } #------------------------------------------------------------------------------ # tablelist::insertSubCmd # # This procedure is invoked to process the tablelist insert subcommand. #------------------------------------------------------------------------------ proc tablelist::insertSubCmd {win index argList updateListVar} { upvar ::tablelist::ns${win}::data data set argCount [llength $argList] if {$argCount == 0} { return "" } if {$index < 0} { set index 0 } # # Insert the items into the body text widget and into the internal list # set updateListVar [expr {$data(hasListVar) && $updateListVar}] set w $data(body) set widgetFont $data(-font) set savedCount $data(itemCount) set colWidthsChanged 0 set idx $index set line [expr {$index + 1}] foreach item $argList { set item [adjustItem $item $data(colCount)] if {$data(itemCount) != 0} { $w insert $line.0 \n } set col 0 if {$data(hasColTags)} { set insertArgs {} foreach text $item \ colFont $data(colFontList) \ colTags $data(colTagsList) \ fmtCmdFlag $data(fmtCmdFlagList) \ {pixels alignment} $data(colList) { if {$data($col-hide)} { incr col continue } # # Update the column width or clip the element if necessary # if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } if {$pixels == 0} { ;# convention: dynamic width set textWidth \ [font measure $colFont -displayof $win $text] if {$textWidth > $data($col-width)} { set data($col-width) $textWidth set data($col-widestCnt) 1 set colWidthsChanged 1 } } else { incr pixels $data($col-delta) set text \ [strRangeExt $win $text $colFont $pixels $alignment] } lappend insertArgs \t$text\t $colTags incr col } # # Insert the item into the body text widget # eval [list $w insert $line.0] $insertArgs } else { set insertStr "" foreach text $item \ fmtCmdFlag $data(fmtCmdFlagList) \ {pixels alignment} $data(colList) { if {$data($col-hide)} { incr col continue } # # Update the column width or clip the element if necessary # if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } if {$pixels == 0} { ;# convention: dynamic width set textWidth \ [font measure $widgetFont -displayof $win $text] if {$textWidth > $data($col-width)} { set data($col-width) $textWidth set data($col-widestCnt) 1 set colWidthsChanged 1 } } else { incr pixels $data($col-delta) set text \ [strRangeExt $win $text $widgetFont $pixels $alignment] } append insertStr \t$text\t incr col } # # Insert the item into the body text widget # $w insert $line.0 $insertStr } # # Insert the item into the list variable if needed # if {$updateListVar} { trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) upvar #0 $data(-listvariable) var if {$idx == $data(itemCount)} { lappend var $item ;# this works much faster } else { set var [linsert $var $idx $item] } trace variable ::$data(-listvariable) wu $data(listVarTraceCmd) } # # Insert the item into the internal list # lappend item k[incr data(seqNum)] if {$idx == $data(itemCount)} { lappend data(itemList) $item ;# this works much faster } else { set data(itemList) [linsert $data(itemList) $idx $item] } incr idx incr line incr data(itemCount) } set data(lastRow) [expr {$data(itemCount) - 1}] # # Adjust the height of the body text widget if necessary # if {$data(-height) <= 0} { $w configure -height $data(itemCount) } # # Adjust the horizontal view in the body text # widget if the tablelist was previously empty # if {$savedCount == 0} { $w xview moveto [lindex [$data(hdrTxt) xview] 0] } # # Adjust the columns if necessary, adjust the separators, # and redraw the stripes in the body text widget # if {$colWidthsChanged} { adjustColumns $win -1 1 } adjustSepsWhenIdle $win makeStripesWhenIdle $win # # Update the indices anchorIdx and activeIdx # if {$index <= $data(anchorIdx)} { incr data(anchorIdx) $argCount } if {$index <= $data(activeIdx)} { incr data(activeIdx) $argCount if {$data(activeIdx) >= $data(itemCount) && $data(itemCount) > 0} { set data(activeIdx) $data(lastRow) } } return "" } #------------------------------------------------------------------------------ # tablelist::rowcgetSubCmd # # This procedure is invoked to process the tablelist rowcget subcommand. #------------------------------------------------------------------------------ proc tablelist::rowcgetSubCmd {win row opt} { variable rowConfigSpecs upvar ::tablelist::ns${win}::data data # # Return the value of the specified row configuration option # set opt [mwutil::fullConfigOpt $opt rowConfigSpecs] switch -- $opt { -text { set item [lindex $data(itemList) $row] return [lrange $item 0 $data(lastCol)] } -selectable { set item [lindex $data(itemList) $row] set key [lindex $item end] if {[arrElemExists data $key$opt]} { return $data($key$opt) } else { return 1 } } default { set item [lindex $data(itemList) $row] set key [lindex $item end] if {[arrElemExists data $key$opt]} { return $data($key$opt) } else { return "" } } } } #------------------------------------------------------------------------------ # tablelist::rowconfigureSubCmd # # This procedure is invoked to process the tablelist rowconfigure subcommand. #------------------------------------------------------------------------------ proc tablelist::rowconfigureSubCmd {win row argList} { variable rowConfigSpecs upvar ::tablelist::ns${win}::data data # # Build an array from the row configuration options and their values # set item [lindex $data(itemList) $row] set rowConfigVals(-text) [lrange $item 0 $data(lastCol)] set key [lindex $item end] if {[arrElemExists data $key-selectable]} { set rowConfigVals(-selectable) $data($key-selectable) } else { set rowConfigVals(-selectable) 1 } foreach opt {-background -font -foreground -selectbackground -selectforeground} { if {[arrElemExists data $key$opt]} { set rowConfigVals($opt) $data($key$opt) } else { set rowConfigVals($opt) "" } } return [mwutil::configSubCmd $win rowConfigSpecs rowConfigVals \ "tablelist::doRowConfig $row" $argList] } #------------------------------------------------------------------------------ # tablelist::scanSubCmd # # This procedure is invoked to process the tablelist scan subcommand. #------------------------------------------------------------------------------ proc tablelist::scanSubCmd {win opt x y} { upvar ::tablelist::ns${win}::data data set w $data(body) incr x -[winfo x $w] incr y -[winfo y $w] $w scan $opt $x $y $data(hdrTxt) scan $opt $x $y return "" } #------------------------------------------------------------------------------ # tablelist::seeSubCmd # # This procedure is invoked to process the tablelist see subcommand. #------------------------------------------------------------------------------ proc tablelist::seeSubCmd {win index} { upvar ::tablelist::ns${win}::data data # # Adjust the view in the body text widget # set w $data(body) set fraction [lindex [$w xview] 0] $w see [expr {$index + 1}].0 $w xview moveto $fraction return "" } #------------------------------------------------------------------------------ # tablelist::selectionSubCmd # # This procedure is invoked to process the tablelist selection subcommand. #------------------------------------------------------------------------------ proc tablelist::selectionSubCmd {win opt first last idxCount} { upvar ::tablelist::ns${win}::data data switch $opt { anchor { if {$idxCount != 1} { mwutil::wrongNumArgs "$win selection $opt index" } # # Adjust the index to fit within the existing items # if {$first >= $data(itemCount)} { set first $data(lastRow) } if {$first < 0} { set first 0 } set data(anchorIdx) $first return "" } clear { # # Swap the indices if necessary # if {$last < $first} { set tmp $first set first $last set last $tmp } # # Find the selected lines of the body text widget # in the text range specified by the two indices # set w $data(body) set firstTextIdx [expr {$first + 1}].0 set lastTextIdx [expr {$last + 1}].end set selRange [$w tag nextrange select $firstTextIdx $lastTextIdx] while {[llength $selRange] != 0} { set selStart [lindex $selRange 0] set selEnd [lindex $selRange 1] $w tag remove select $selStart $selEnd # # Handle the -(select)background and -(select)foreground cell # and column configuration options for each element of the row # set item [lindex $data(itemList) [expr {int($selStart) - 1}]] set key [lindex $item end] set textIdx1 $selStart for {set col 0} {$col < $data(colCount)} {incr col} { if {$data($col-hide)} { continue } set textIdx2 \ [$w search \t $textIdx1+1c "$selStart lineend"]+1c foreach optTail {background foreground} { foreach tag [list $col-select$optTail \ $key-select$optTail \ $key-$col-select$optTail] { if {[arrElemExists data $tag]} { $w tag remove $tag $textIdx1 $textIdx2 } } foreach tag [list $col-$optTail $key-$optTail \ $key-$col-$optTail] { if {[arrElemExists data $tag]} { $w tag add $tag $textIdx1 $textIdx2 } } } set textIdx1 $textIdx2 } set selRange [$w tag nextrange select $selEnd $lastTextIdx] } return "" } includes { if {$idxCount != 1} { mwutil::wrongNumArgs "$win selection $opt index" } set tagNames [$data(body) tag names [expr {$first + 1}].0] if {[lsearch -exact $tagNames select] >= 0} { return 1 } else { return 0 } } set { # # Swap the indices if necessary and adjust # the range to fit within the existing items # if {$last < $first} { set tmp $first set first $last set last $tmp } if {$first < 0} { set first 0 } if {$last >= $data(itemCount)} { set last $data(lastRow) } set w $data(body) for {set idx $first; set line [expr {$first + 1}]} \ {$idx <= $last} {incr idx; incr line} { # # Nothing to do if the row is already selected # if {[lsearch -exact [$w tag names $line.0] select] >= 0} { continue } # # Check whether the row is selectable # set item [lindex $data(itemList) $idx] set key [lindex $item end] if {[arrElemExists data $key-selectable]} { ;# <==> not sel. continue } $w tag add select $line.0 $line.end # # Handle the -(select)background and -(select)foreground cell # and column configuration options for each element of the row # set textIdx1 $line.0 for {set col 0} {$col < $data(colCount)} {incr col} { if {$data($col-hide)} { continue } set textIdx2 [$w search \t $textIdx1+1c $line.end]+1c foreach optTail {background foreground} { foreach tag [list $col-select$optTail \ $key-select$optTail \ $key-$col-select$optTail] { if {[arrElemExists data $tag]} { $w tag add $tag $textIdx1 $textIdx2 } } foreach tag [list $col-$optTail $key-$optTail \ $key-$col-$optTail] { if {[arrElemExists data $tag]} { $w tag remove $tag $textIdx1 $textIdx2 } } } set textIdx1 $textIdx2 } } # # If the selection is exported and there are any selected # rows in the widget then make win the new owner of the # PRIMARY selection and register a callback to be invoked # when it loses ownership of the PRIMARY selection # if {$data(-exportselection) && [llength [$w tag nextrange select 1.0]] != 0} { selection own -command \ [list ::tablelist::lostSelection $win] $win } return "" } } } #------------------------------------------------------------------------------ # tablelist::sortSubCmd # # This procedure is invoked to process the tablelist sort and sortbycolumn # subcommands. #------------------------------------------------------------------------------ proc tablelist::sortSubCmd {win col order} { upvar ::tablelist::ns${win}::data data # # Save the keys corresponding to anchorIdx and activeIdx # foreach type {anchor active} { set item [lindex $data(itemList) $data(${type}Idx)] set ${type}Key [lindex $item end] } # # Save the keys of the selected items # set selKeys {} set w $data(body) set selRange [$w tag nextrange select 1.0] while {[llength $selRange] != 0} { set selStart [lindex $selRange 0] set selEnd [lindex $selRange 1] set item [lindex $data(itemList) [expr {int($selStart) - 1}]] lappend selKeys [lindex $item end] set selRange [$w tag nextrange select $selEnd] } # # Sort the item list and update the sort info # if {$col < 0} { ;# not sorting by a column if {[string compare $data(-sortcommand) ""] == 0} { return -code error \ "value of the -sortcommand option is empty" } set data(itemList) \ [lsort $order -command $data(-sortcommand) $data(itemList)] } else { ;# sorting by a column if {[string compare $data($col-sortmode) command] == 0} { if {[arrElemExists data $col-sortcommand]} { set data(itemList) \ [lsort $order -index $col \ -command $data($col-sortcommand) $data(itemList)] } else { return -code error \ "value of the -sortcommand option for\ column $col is missing or empty" } } else { set data(itemList) \ [lsort $order -index $col \ -$data($col-sortmode) $data(itemList)] } } set data(sortCol) $col set data(sortOrder) [string range $order 1 end] # # Update anchorIdx and activeIdx # foreach type {anchor active} { upvar 0 ${type}Key key if {[string compare $key ""] != 0} { set data(${type}Idx) [lsearch $data(itemList) "* $key"] } } # # Unmanage the canvas and adjust the columns # set canvas $data(hdrTxtFrCanv) place forget $canvas set colOfUnknownWidth $data(arrowCol) set data(arrowCol) -1 adjustColumns $win $colOfUnknownWidth 1 # # Check whether an up- or down-arrow is to be displayed # if {$col >= 0 && $data(-showarrow) && $data($col-showarrow)} { # # Configure the canvas and draw the arrows # set data(arrowCol) $col configCanvas $win drawArrows $win # # Make sure the arrow will fit into the static-width # column by enlarging the latter if necessary # set idx [expr {2*$col}] set pixels [lindex $data(colList) $idx] if {$pixels != 0 && $pixels < $data(arrowWidth)} { set data(colList) \ [lreplace $data(colList) $idx $idx $data(arrowWidth)] set idx [expr {3*$col}] set data(-columns) \ [lreplace $data(-columns) $idx $idx -$data(arrowWidth)] } # # Adjust the columns; this will also place the canvas into the label # adjustColumns $win $col 1 # # Define for the binding tag $canvas the binding scripts # obtained from those of $label by replacing the %x field with # [expr {%x + [winfo x $canvas] - [winfo x $label]}] and the %y # field with [expr {%y + [winfo y $canvas] - [winfo y $label]}] # set label $data(hdrTxtFrLbl)$col set _canvas [list $canvas] set _label [list $label] foreach event [bind $label] { set script [bind $label $event] regsub -all %x $script {$tablelist::x} script regsub -all %y $script {$tablelist::y} script bind $canvas $event [format { set tablelist::x [expr {%%x + [winfo x %s] - [winfo x %s]}] set tablelist::y [expr {%%y + [winfo y %s] - [winfo y %s]}] %s } $_canvas $_label $_canvas $_label $script] } } # # Delete the items from the body text widget and insert the sorted ones. # Interestingly, for a large number of items it is much more efficient # to empty each line individually than to invoke a global delete command. # set line 1 foreach item $data(itemList) { # # Empty the line, clip the elements if necessary, # and insert them with the corresponding tags # $w delete $line.0 $line.end set key [lindex $item end] set rowTags {} foreach opt {-background -font -foreground} { if {[arrElemExists data $key$opt]} { lappend rowTags $key$opt } } set col 0 foreach text [lrange $item 0 $data(lastCol)] \ colFont $data(colFontList) \ colTags $data(colTagsList) \ fmtCmdFlag $data(fmtCmdFlagList) \ {pixels alignment} $data(colList) { if {$data($col-hide)} { incr col continue } # # Adjust the cell text and the image width # if {$fmtCmdFlag} { set text [doFormat $data($col-formatcommand) $text] } if {[arrElemExists data $key-$col-image]} { set image $data($key-$col-image) set imageWidth [image width $image] } else { set image "" set imageWidth 0 } if {$pixels != 0} { ;# convention: static width incr pixels $data($col-delta) } if {[arrElemExists data $key-$col-font]} { set cellFont $data($key-$col-font) } elseif {[arrElemExists data $key-font]} { set cellFont $data($key-font) } else { set cellFont $colFont } adjustElem $win text imageWidth $cellFont $pixels $alignment # # Insert the text and the image # set tagNames {} eval lappend tagNames $colTags $rowTags foreach opt {-background -font -foreground} { if {[arrElemExists data $key-$col$opt]} { lappend tagNames $key-$col$opt } } if {$imageWidth == 0} { $w insert $line.end \t$text\t $tagNames } else { $w insert $line.end \t\t $tagNames insertElem $w $line.end-1c $text $image $imageWidth $alignment } incr col } incr line } # # Restore the stripes in the body text widget # makeStripesWhenIdle $win # # Select the items that were selected before # foreach key $selKeys { set idx [lsearch $data(itemList) "* $key"] selectionSubCmd $win set $idx $idx 2 } # # Disable the body text widget if it was disabled before # if {$data(isDisabled)} { $w tag add disabled 1.0 end $w tag configure select -borderwidth 0 } # # Replace the contents of the list variable if present # if {$data(hasListVar)} { trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) upvar #0 $data(-listvariable) var set var {} foreach item $data(itemList) { lappend var [lrange $item 0 $data(lastCol)] } trace variable ::$data(-listvariable) wu $data(listVarTraceCmd) } return "" } #------------------------------------------------------------------------------ # tablelist::xviewSubCmd # # This procedure is invoked to process the tablelist xview subcommand. #------------------------------------------------------------------------------ proc tablelist::xviewSubCmd {win argList} { upvar ::tablelist::ns${win}::data data switch [llength $argList] { 0 { # # Command: $win xview # return [$data(hdrTxt) xview] } 1 { # # Command: $win xview units # set units [lindex $argList 0] format %d $units ;# integer check with error message foreach w [list $data(hdrTxt) $data(body)] { $w xview moveto 0 $w xview scroll $units units } return "" } default { # # Command: $win xview moveto fraction # $win xview scroll number what # foreach w [list $data(hdrTxt) $data(body)] { eval [list $w xview] $argList } return "" } } } #------------------------------------------------------------------------------ # tablelist::yviewSubCmd # # This procedure is invoked to process the tablelist yview subcommand. #------------------------------------------------------------------------------ proc tablelist::yviewSubCmd {win argList} { upvar ::tablelist::ns${win}::data data set w $data(body) switch [llength $argList] { 0 { # # Command: $win yview # return [$w yview] } 1 { # # Command: $win yview index # set index [rowIndex $win [lindex $argList 0] 0] set fraction [lindex [$w xview] 0] $w yview [expr {$index + 1}].0 $w xview moveto $fraction return "" } default { # # Command: $win yview moveto fraction # $win yview scroll number what # # We must check the word following "yview" before passing # the arguments to the body text widget because of some # additional options supported by its yview subcommand. # set opt [lindex $argList 0] if {[string first $opt moveto] == 0 || [string first $opt scroll] == 0} { return [eval [list $w yview] $argList] } else { return -code error \ "unknown option \"$opt\": must be moveto or scroll" } } } } # # Private callback procedures # =========================== # #------------------------------------------------------------------------------ # tablelist::focusCtrl # # Determines whether the body text child w of a tablelist widget will receive # the input focus during keyboard traversal. #------------------------------------------------------------------------------ proc tablelist::focusCtrl w { set win [winfo parent $w] upvar ::tablelist::ns${win}::data data set val $data(-takefocus) switch -- $val { 0 - 1 - "" { return $val } default { return [uplevel #0 $val [list $win]] } } } #------------------------------------------------------------------------------ # tablelist::fetchSelection # # This procedure is invoked when the PRIMARY selection is owned by the # tablelist widget win and someone attempts to retrieve it as a STRING. It # returns part or all of the selection, as given by offset and maxChars. The # string which is to be (partially) returned is built by joining all of the # elements of the selected rows together with tabs and the rows themselves with # newlines. #------------------------------------------------------------------------------ proc tablelist::fetchSelection {win offset maxChars} { upvar ::tablelist::ns${win}::data data if {!$data(-exportselection)} { return "" } set selection "" set gotItem false foreach idx [curselectionSubCmd $win] { if {$gotItem} { append selection \n } append selection [join [getSubCmd $win $idx $idx 1] \t] set gotItem true } return [string range $selection $offset [expr {$offset + $maxChars - 1}]] } #------------------------------------------------------------------------------ # tablelist::lostSelection # # This procedure is invoked when the tablelist widget win loses ownership of # the PRIMARY selection. It deselects all items of the widget with the aid of # the selectionSubCmd procedure if the selection is exported. #------------------------------------------------------------------------------ proc tablelist::lostSelection win { upvar ::tablelist::ns${win}::data data if {$data(-exportselection)} { selectionSubCmd $win clear 0 $data(lastRow) 2 } } #------------------------------------------------------------------------------ # tablelist::activeIdxTrace # # This procedure is executed whenever the array element data(activeIdx) is # written. It moves the "active" tag to the line that displays the active # element of the widget in its body text child if the latter has the focus. #------------------------------------------------------------------------------ proc tablelist::activeIdxTrace {win varName index op} { upvar ::tablelist::ns${win}::data data set w $data(body) if {[string compare [focus -displayof $win] $w] == 0} { set line [expr {$data(oldActiveIdx) + 1}] $w tag remove active $line.0 $line.end set line [expr {$data(activeIdx) + 1}] $w tag add active $line.0 $line.end } set data(oldActiveIdx) $data(activeIdx) } #------------------------------------------------------------------------------ # tablelist::listVarTrace # # This procedure is executed whenever the global variable specified by varName # is written or unset. It makes sure that the contents of the widget will be # synchronized with the value of the variable at idle time, and that the # variable is recreated if it was unset. #------------------------------------------------------------------------------ proc tablelist::listVarTrace {win varName index op} { upvar ::tablelist::ns${win}::data data switch $op { w { if {![arrElemExists data syncId]} { # # Arrange for the contents of the widget to be synchronized # with the value of the variable ::$varName at idle time # set data(syncId) [after idle [list tablelist::synchronize $win]] # # Cancel the execution of all delayed redisplay and # redisplayCol commands, to make sure that the synchronize # command will be invoked first; the latter will then # schedule a redisplay command for execution at idle time # foreach name [array names data *redispId] { after cancel $data($name) unset data($name) } } } u { # # Recreate the variable ::$varName by setting it according to # the value of data(itemList), and set the trace on it again # if {[string compare $index ""] != 0} { set varName ${varName}($index) } set ::$varName {} foreach item $data(itemList) { lappend ::$varName [lrange $item 0 $data(lastCol)] } trace variable ::$varName wu $data(listVarTraceCmd) } } } # # Private procedures used in bindings # =================================== # #------------------------------------------------------------------------------ # tablelist::addActiveTag # # This procedure is invoked when the tablelist widget win gains the keyboard # focus. It adds the "active" tag to the line that displays the active element # of the widget in its body text child. #------------------------------------------------------------------------------ proc tablelist::addActiveTag win { upvar ::tablelist::ns${win}::data data set line [expr {$data(activeIdx) + 1}] $data(body) tag add active $line.0 $line.end } #------------------------------------------------------------------------------ # tablelist::removeActiveTag # # This procedure is invoked when the tablelist widget win loses the keyboard # focus. It removes the "active" tag from the line that displays the active # element of the widget in its body text child. #------------------------------------------------------------------------------ proc tablelist::removeActiveTag win { upvar ::tablelist::ns${win}::data data set line [expr {$data(activeIdx) + 1}] $data(body) tag remove active $line.0 $line.end } #------------------------------------------------------------------------------ # tablelist::cleanup # # This procedure is invoked when the tablelist widget win is destroyed. It # executes some cleanup operations. #------------------------------------------------------------------------------ proc tablelist::cleanup win { upvar ::tablelist::ns${win}::data data # # Cancel the execution of all delayed adjustSeps, makeStripes, # stretchColumns, synchronize, redisplay, and redisplayCol commands # foreach afterId {sepsId stripesId stretchId syncId} { if {[arrElemExists data $afterId]} { after cancel $data($afterId) } } foreach name [array names data *redispId] { after cancel $data($name) } # # If there is a list variable associated with the # widget then remove the trace set on this variable # if {$data(hasListVar)} { trace vdelete ::$data(-listvariable) wu $data(listVarTraceCmd) } namespace delete ::tablelist::ns$win catch {rename ::$win ""} } #------------------------------------------------------------------------------ # tablelist::tablelistAutoScan # # This is a modified version of the Tk library procedure tk(::)ListboxAutoScan. # It is invoked when the mouse leaves the body text child of a tablelist # widget. It scrolls the child and reschedules itself as an after command so # that the child continues to scroll until the mouse moves back into the window # or the mouse button is released. #------------------------------------------------------------------------------ proc tablelist::tablelistAutoScan win { if {![winfo exists $win]} { return "" } if {[array exists ::tk::Priv]} { set x $::tk::Priv(x) set y $::tk::Priv(y) } else { set x $::tkPriv(x) set y $::tkPriv(y) } set w [::$win bodypath] set _x [expr {$x - [winfo x $w]}] set _y [expr {$y - [winfo y $w]}] if {$_y >= [winfo height $w]} { ::$win yview scroll 1 units } elseif {$_y < 0} { ::$win yview scroll -1 units } elseif {$_x >= [winfo width $w]} { ::$win xview scroll 2 units } elseif {$_x < 0} { ::$win xview scroll -2 units } else { return "" } if {[array exists ::tk::Priv]} { tk::ListboxMotion $win [::$win index @$x,$y] set ::tk::Priv(afterId) \ [after 50 [list tablelist::tablelistAutoScan $win]] } else { tkListboxMotion $win [::$win index @$x,$y] set ::tkPriv(afterId) \ [after 50 [list tablelist::tablelistAutoScan $win]] } } #------------------------------------------------------------------------------ # tablelist::labelEnter # # This procedure is invoked when the mouse pointer enters the col'th label of # the tablelist widget win, or is moving within that label. It updates the # cursor, depending on whether the pointer is on the right border of the label # or not. #------------------------------------------------------------------------------ proc tablelist::labelEnter {win col x} { upvar ::tablelist::ns${win}::data data set w $data(hdrTxtFrLbl)$col configLabel $w -cursor $data(-cursor) if {$data(isDisabled)} { return "" } if {$data(-resizablecolumns) && $data($col-resizable) && $x >= [winfo width $w] - [$w cget -borderwidth] - 4} { configLabel $w -cursor $data(-resizecursor) } } #------------------------------------------------------------------------------ # tablelist::labelB1Down # # This procedure is invoked when mouse button 1 is pressed in the col'th label # of the tablelist widget win. If the pointer is on the right border of the # label then the procedure records its x-coordinate relative to the label, the # width of the column, and some other data needed later. Otherwise it saves # the label's relief so it can be restored later, and changes the relief to # sunken. #------------------------------------------------------------------------------ proc tablelist::labelB1Down {win col x} { upvar ::tablelist::ns${win}::data data if {$data(isDisabled) || [arrElemExists data x]} { ;# resize operation in progress return "" } set w $data(hdrTxtFrLbl)$col set labelWidth [winfo width $w] if {$data(-resizablecolumns) && $data($col-resizable) && $x >= $labelWidth - [$w cget -borderwidth] - 4} { set data(clickedLblCol) $col set data(x) $x set data(oldStretchedColWidth) [expr {$labelWidth - 2*$data(charWidth)}] set data(oldColDelta) $data($col-delta) set data(configColWidth) [lindex $data(-columns) [expr {3*$col}]] if {$col == $data(arrowCol)} { set data(minColWidth) $data(arrowWidth) } else { set data(minColWidth) 1 } set topWin [winfo toplevel $win] set data(topBindEsc) [bind $topWin ] bind $topWin [list tablelist::escape $win] } elseif {[arrElemExists data $col-labelcommand] || [string compare $data(-labelcommand) ""] != 0} { set data(clickedLblCol) $col set data(inClickedLabel) 1 set data(relief) [$w cget -relief] configLabel $w -relief sunken } } #------------------------------------------------------------------------------ # tablelist::labelB1Motion # # This procedure is invoked to process mouse motion events in a label of the # tablelist widget win while button 1 is down. If this event occured during a # column resize operation then the procedure computes the difference between # the pointer's new x-coordinate relative to that label and the one recorded by # the last invocation of labelB1Down, and adjusts the width of the # corresponding column accordingly. This column is only redisplayed in the # currently visible rows of the widget. #------------------------------------------------------------------------------ proc tablelist::labelB1Motion {win x y} { upvar ::tablelist::ns${win}::data data if {$data(clickedLblCol) < 0} { return "" } set col $data(clickedLblCol) if {[arrElemExists data x]} { ;# resize operation in progress set width [expr {$data(oldStretchedColWidth) + $x - $data(x)}] if {$width >= $data(minColWidth)} { set idx [expr {3*$col}] set data(-columns) [lreplace $data(-columns) $idx $idx -$width] set idx [expr {2*$col}] set data(colList) [lreplace $data(colList) $idx $idx $width] set data($col-delta) 0 adjustColumns $win -1 0 update idletasks redisplayCol $win $col [rowIndex $win @0,0 0] \ [rowIndex $win @0,[winfo height $win] 0] } } else { # # The following code is needed because the event can also # occur in the canvas displaying an up- or down-arrow # set w $data(hdrTxtFrLbl)$col if {$x >= 0 && $x < [winfo width $w] && $y >= 0 && $y < [winfo height $w]} { configLabel $w -relief sunken set data(inClickedLabel) 1 } else { configLabel $w -relief $data(relief) set data(inClickedLabel) 0 } } } #------------------------------------------------------------------------------ # tablelist::labelB1Enter # # This procedure is invoked when the mouse pointer enters a label of the # tablelist widget win while mouse button 1 is down. If no label was # previously clicked then nothing happens. Otherwise, if this event occured # during a column resize operation then the procedure updates the mouse cursor # accordingly. Otherwise it changes the label's relief to sunken. #------------------------------------------------------------------------------ proc tablelist::labelB1Enter win { upvar ::tablelist::ns${win}::data data if {$data(clickedLblCol) < 0} { return "" } set w $data(hdrTxtFrLbl)$data(clickedLblCol) configLabel $w -cursor $data(-cursor) if {[arrElemExists data x]} { ;# resize operation in progress configLabel $w -cursor $data(-resizecursor) return "" } configLabel $w -relief sunken set data(inClickedLabel) 1 } #------------------------------------------------------------------------------ # tablelist::labelB1Leave # # This procedure is invoked when the mouse pointer leaves a label of the # tablelist widget win while mouse button 1 is down. If no label was # previously clicked then nothing happens. Otherwise, if no column resize # operation is in progress then the procedure restores the label's relief. #------------------------------------------------------------------------------ proc tablelist::labelB1Leave {win x y} { upvar ::tablelist::ns${win}::data data if {$data(clickedLblCol) < 0 || [arrElemExists data x]} { ;# resize operation in progress return "" } set w $data(hdrTxtFrLbl)$data(clickedLblCol) # # The following code is needed because the event can also # occur in the canvas displaying an up- or down-arrow # if {$x >= 0 && $x < [winfo width $w] && $y >= 0 && $y < [winfo height $w]} { return "" } configLabel $w -relief $data(relief) set data(inClickedLabel) 0 } #------------------------------------------------------------------------------ # tablelist::labelB1Up # # This procedure is invoked when mouse button 1 is released in a previously # clicked label of the tablelist widget win. If this event occured during a # column resize operation then the procedure redisplays that column and # stretches the stretchable columns. Otherwise it restores the label's relief # and invokes the command specified with the -labelcommand configuration # option, passing to it the widget name and the column number as arguments. #------------------------------------------------------------------------------ proc tablelist::labelB1Up win { upvar ::tablelist::ns${win}::data data if {$data(clickedLblCol) < 0} { return "" } set col $data(clickedLblCol) set w $data(hdrTxtFrLbl)$col if {[arrElemExists data x]} { ;# resize operation in progress configLabel $w -cursor $data(-cursor) bind [winfo toplevel $win] $data(topBindEsc) redisplayColWhenIdle $win $col if {$data(-width) <= 0} { $data(hdr) configure -width $data(hdrPixels) } elseif {[arrElemExists data stretchableCols] && [lsearch -exact $data(stretchableCols) $col] >= 0} { set oldColWidth \ [expr {$data(oldStretchedColWidth) - $data(oldColDelta)}] set stretchedColWidth \ [expr {[winfo width $w] - 2*$data(charWidth)}] if {$oldColWidth < $data(stretchablePxls) && $stretchedColWidth < $oldColWidth + $data(delta)} { # # $stretchedColWidth = $colWidth + $colDelta # $colDelta = # ($data(delta) - $colWidth + $oldColWidth) * $colWidth / # ($data(stretchablePxls) + $colWidth - $oldColWidth) # set colWidth [expr { $stretchedColWidth * ($data(stretchablePxls) - $oldColWidth) / ($data(stretchablePxls) + $data(delta) - $stretchedColWidth) }] if {$colWidth < 1} { set colWidth 1 } set idx [expr {3*$col}] set data(-columns) \ [lreplace $data(-columns) $idx $idx -$colWidth] set idx [expr {2*$col}] set data(colList) [lreplace $data(colList) $idx $idx $colWidth] set data($col-delta) [expr {$stretchedColWidth - $colWidth}] } } stretchColumns $win $col unset data(x) } elseif {$data(inClickedLabel)} { configLabel $w -relief $data(relief) if {[arrElemExists data $col-labelcommand]} { uplevel #0 $data($col-labelcommand) [list $win $col] } elseif {[string compare $data(-labelcommand) ""] != 0} { uplevel #0 $data(-labelcommand) [list $win $col] } } set data(clickedLblCol) -1 } #------------------------------------------------------------------------------ # tablelist::labelB3Down # # This procedure is invoked when mouse button 3 is pressed in the col'th label # of the tablelist widget win. It configures the width of the given column to # be just large enough to hold all the elements (including the label). #------------------------------------------------------------------------------ proc tablelist::labelB3Down {win col} { upvar ::tablelist::ns${win}::data data if {!$data(isDisabled) && $data(-resizablecolumns) && $data($col-resizable)} { doColConfig $col $win -width 0 } } #------------------------------------------------------------------------------ # tablelist::escape # # This procedure is invoked to process events in the top-level window # containing the tablelist widget win during a column resize operation. The # procedure cancels this operation and restores the initial width of the # respective column. #------------------------------------------------------------------------------ proc tablelist::escape win { upvar ::tablelist::ns${win}::data data set col $data(clickedLblCol) set w $data(hdrTxtFrLbl)$col configLabel $w -cursor $data(-cursor) update idletasks bind [winfo toplevel $win] $data(topBindEsc) set idx [expr {3*$col}] setupColumns $win [lreplace $data(-columns) $idx $idx \ $data(configColWidth)] 0 adjustColumns $win $col 1 redisplayCol $win $col [rowIndex $win @0,0 0] \ [rowIndex $win @0,[winfo height $win] 0] unset data(x) set data(clickedLblCol) -1 } # # Private helper procedures # ========================= # #------------------------------------------------------------------------------ # tablelist::rowIndex # # Checks the row index idx and returns either its numerical value or an error. # endIsSize must be a boolean value: if true, end refers to the number of items # in the tablelist, i.e., to the element just after the last one; if false, end # refers to 1 less than the number of items, i.e., to the last element in the # tablelist. #------------------------------------------------------------------------------ proc tablelist::rowIndex {win idx endIsSize} { upvar ::tablelist::ns${win}::data data set idxLen [string length $idx] if {[string first $idx active] == 0 && $idxLen >= 2} { return $data(activeIdx) } elseif {[string first $idx anchor] == 0 && $idxLen >= 2} { return $data(anchorIdx) } elseif {[string first $idx end] == 0} { if {$endIsSize} { return $data(itemCount) } else { return $data(lastRow) } } elseif {[string compare [string index $idx 0] @] == 0} { if {[catch {$data(body) index $idx}] == 0} { if {$data(itemCount) == 0} { return -1 } else { scan $idx @%d,%d x y incr x -[winfo x $data(body)] incr y -[winfo y $data(body)] set bodyIdx [$data(body) index @$x,$y] return [expr {int($bodyIdx) - 1}] } } else { return -code error \ "bad row index \"$idx\": must be active, anchor,\ end, @x,y, or a number" } } elseif {[catch {format %d $idx} index] == 0} { return $index } else { return -code error \ "bad row index \"$idx\": must be active, anchor,\ end, @x,y, or a number" } } #------------------------------------------------------------------------------ # tablelist::colIndex # # Checks the column index idx and returns either its numerical value or an # error. checkRange must be a boolean value: if true, it is additionally # checked whether the numerical value corresponding to idx is at least 0 and # less than the number of columns. #------------------------------------------------------------------------------ proc tablelist::colIndex {win idx checkRange} { upvar ::tablelist::ns${win}::data data if {[string first $idx end] == 0} { return $data(lastCol) } elseif {[string compare [string index $idx 0] @] == 0} { if {[catch {$data(body) index $idx}] == 0} { scan $idx @%d x incr x -[winfo x $data(body)] set bodyWidth [winfo width $data(body)] if {$x >= $bodyWidth} { set x [expr {$bodyWidth - 1}] } elseif {$x < 0} { set x 0 } set x [expr {$x + [winfo rootx $data(body)]}] set lastVisibleCol -1 for {set col 0} {$col < $data(colCount)} {incr col} { if {$data($col-hide)} { continue } set lastVisibleCol $col set w $data(hdrTxtFrLbl)$col set wX [winfo rootx $w] if {$x >= $wX && $x < $wX + [winfo width $w]} { return $col } } set index $lastVisibleCol } else { return -code error \ "bad column index \"$idx\": must be end, @x,y, or a number" } } elseif {[catch {format %d $idx} index] != 0} { return -code error \ "bad column index \"$idx\": must be end, @x,y, or a number" } if {$checkRange && ($index < 0 || $index >= $data(colCount))} { return -code error "column index \"$idx\" out of range" } else { return $index } } #------------------------------------------------------------------------------ # tablelist::cellIndex # # Checks the cell index idx and returns either its value in the form row,col # or an error. #------------------------------------------------------------------------------ proc tablelist::cellIndex {win idx} { if {[string first $idx end] == 0} { return [rowIndex $win $idx 0],[colIndex $win $idx 0] } elseif {[string compare [string index $idx 0] @] == 0} { if {[catch {rowIndex $win $idx 0} row] == 0 && [catch {colIndex $win $idx 0} col] == 0} { return $row,$col } else { return -code error \ "bad cell index \"$idx\": must be end, @x,y, or\ row,col, where row must be active, anchor, end,\ or a number, and col must be end or a number" } } else { set lst [split $idx ,] if {[llength $lst] == 2 && [catch {rowIndex $win [lindex $lst 0] 0} row] == 0 && [catch {colIndex $win [lindex $lst 1] 0} col] == 0} { return $row,$col } else { return -code error \ "bad cell index \"$idx\": must be end, @x,y, or\ row,col, where row must be active, anchor, end,\ or a number, and col must be end or a number" } } } #------------------------------------------------------------------------------ # tablelist::makeColFontAndTagLists # # Builds the lists data(colFontList) of the column fonts and data(colTagsList) # of the column tag names. #------------------------------------------------------------------------------ proc tablelist::makeColFontAndTagLists win { upvar ::tablelist::ns${win}::data data set widgetFont $data(-font) set data(colFontList) {} set data(colTagsList) {} set data(hasColTags) 0 for {set col 0} {$col < $data(colCount)} {incr col} { set tagNames {} if {[arrElemExists data $col-font]} { lappend data(colFontList) $data($col-font) lappend tagNames $col-font set data(hasColTags) 1 } else { lappend data(colFontList) $widgetFont } foreach opt {-background -foreground} { if {[arrElemExists data $col$opt]} { lappend tagNames $col$opt set data(hasColTags) 1 } } lappend data(colTagsList) $tagNames } } #------------------------------------------------------------------------------ # tablelist::cellFont # # Returns the font to be used in the tablelist cell specified by win, key, and # col. #------------------------------------------------------------------------------ proc tablelist::cellFont {win key col} { upvar ::tablelist::ns${win}::data data if {[arrElemExists data $key-$col-font]} { return $data($key-$col-font) } elseif {[arrElemExists data $key-font]} { return $data($key-font) } else { return [lindex $data(colFontList) $col] } } #------------------------------------------------------------------------------ # tablelist::findCellTabs # # Searches for the tab characters within the col'th cell in the body text child # of the tablelist widget win, starting at startIdx. Assigns the index of the # first tab to $idx1Name and the index of the second tab to $idx2Name. #------------------------------------------------------------------------------ proc tablelist::findCellTabs {win startIdx col idx1Name idx2Name} { upvar ::tablelist::ns${win}::data data upvar $idx1Name idx1 $idx2Name idx2 set w $data(body) set endIdx "$startIdx lineend" set idx1 $startIdx for {set n 0} {$n < $col} {incr n} { if {!$data($n-hide)} { set idx1 [$w search \t $idx1+1c $endIdx]+1c } } set idx2 [$w search \t $idx1+1c $endIdx] return "" } #------------------------------------------------------------------------------ # tablelist::create3DArrows # # Creates the items to be used later for drawing two up- or down-arrows with # sunken relief and 3-D borders in the canvas w. #------------------------------------------------------------------------------ proc tablelist::create3DArrows w { foreach state {normal disabled} { $w create polygon 0 0 0 0 0 0 -tags ${state}Triangle $w create line 0 0 0 0 -tags ${state}DarkLine $w create line 0 0 0 0 -tags ${state}LightLine } } #------------------------------------------------------------------------------ # tablelist::configCanvas # # Sets the background, width, and height of the canvas displaying an up- or # down-arrow, fills the two arrows contained in the canvas, and saves its width # in data(arrowWidth). #------------------------------------------------------------------------------ proc tablelist::configCanvas win { upvar ::tablelist::ns${win}::data data set w $data(hdrTxtFrLbl)$data(arrowCol) set labelBg [$w cget -background] set labelFont [$w cget -font] if {[font metrics $labelFont -displayof $w -fixed]} { set spaces " " } else { set spaces " " } set size [expr {[font measure $labelFont -displayof $w $spaces] + 2}] if {$size % 2 == 0} { incr size } set w $data(hdrTxtFrCanv) $w configure -background $labelBg -height $size -width $size fillArrow $w normal $data(-arrowcolor) fillArrow $w disabled $data(-arrowdisabledcolor) set data(arrowWidth) $size } #------------------------------------------------------------------------------ # tablelist::drawArrows # # Draws the two arrows contained in the canvas associated with the tablelist # widget win. #------------------------------------------------------------------------------ proc tablelist::drawArrows win { upvar ::tablelist::ns${win}::data data switch $data(-incrarrowtype) { up { switch $data(sortOrder) { increasing { set arrowType up } decreasing { set arrowType down } } } down { switch $data(sortOrder) { increasing { set arrowType down } decreasing { set arrowType up } } } } set w $data(hdrTxtFrCanv) set maxX [expr {[$w cget -width] - 1}] set maxY [expr {[$w cget -height] - 1}] set midX [expr {$maxX / 2}] switch $arrowType { up { foreach state {normal disabled} { $w coords ${state}Triangle 0 $maxY $maxX $maxY $midX 0 $w coords ${state}DarkLine $midX 0 0 $maxY $w coords ${state}LightLine 0 $maxY $maxX $maxY $midX 0 } } down { foreach state {normal disabled} { $w coords ${state}Triangle $maxX 0 0 0 $midX $maxY $w coords ${state}DarkLine $maxX 0 0 0 $midX $maxY $w coords ${state}LightLine $midX $maxY $maxX 0 } } } } #------------------------------------------------------------------------------ # tablelist::raiseArrow # # Raises one of the two arrows contained in the canvas w, according to the # state argument. #------------------------------------------------------------------------------ proc tablelist::raiseArrow {w state} { $w raise ${state}Triangle $w raise ${state}DarkLine $w raise ${state}LightLine } #------------------------------------------------------------------------------ # tablelist::fillArrow # # Fills one of the two arrows contained in the canvas w with the given color, # or with (a slightly darker color than) the background color of the canvas if # color is an empty string. Also fills the arrow's borders with the # corresponding 3-D shadow colors. The state argument specifies the arrow to # be processed. Returns the properly formatted value of color. #------------------------------------------------------------------------------ proc tablelist::fillArrow {w state color} { if {[string compare $color ""] == 0} { set origColor $color set color [$w cget -background] # # To get a better contrast, make the color slightly # darker by cutting 5% from each of its components # set maxIntens [lindex [winfo rgb $w white] 0] set len [string length [format %x $maxIntens]] foreach comp [winfo rgb $w $color] { lappend rgb [expr {95*$comp/100}] } set color [eval format "#%0${len}x%0${len}x%0${len}x" $rgb] } getShadows $w $color darkColor lightColor $w itemconfigure ${state}Triangle -fill $color $w itemconfigure ${state}DarkLine -fill $darkColor $w itemconfigure ${state}LightLine -fill $lightColor if {[info exists origColor]} { return $origColor } else { return [$w itemcget ${state}Triangle -fill] } } #------------------------------------------------------------------------------ # tablelist::getShadows # # Computes the shadow colors for a 3-D border from a given (background) color. # This is a modified Tcl-counterpart of the function TkpGetShadows() in the # Tk distribution file unix/tkUnix3d.c. #------------------------------------------------------------------------------ proc tablelist::getShadows {w color darkColorName lightColorName} { upvar $darkColorName darkColor $lightColorName lightColor set maxIntens [lindex [winfo rgb $w white] 0] set len [string length [format %x $maxIntens]] set rgb [winfo rgb $w $color] foreach {r g b} $rgb {} # # Compute the dark shadow color # if {[string compare $::tk_patchLevel 8.3.1] >= 0 && $r*0.5*$r + $g*1.0*$g + $b*0.28*$b < $maxIntens*0.05*$maxIntens} { # # The background is already very dark: make the dark # color a little lighter than the background by increasing # each color component 1/4th of the way to $maxIntens # foreach comp $rgb { lappend darkRGB [expr {($maxIntens + 3*$comp)/4}] } } else { # # Compute the dark color by cutting 45% from # each of the background color components. # foreach comp $rgb { lappend darkRGB [expr {55*$comp/100}] } } set darkColor [eval format "#%0${len}x%0${len}x%0${len}x" $darkRGB] # # Compute the light shadow color # if {[string compare $::tk_patchLevel 8.3.1] >= 0 && $g > $maxIntens*0.95} { # # The background is already very bright: make the # light color a little darker than the background # by reducing each color component by 10% # foreach comp $rgb { lappend lightRGB [expr {9*$comp/10}] } } else { # # Compute the light color by boosting each background # color component by 45% or half-way to white, whichever # is greater (the first approach works better for # unsaturated colors, the second for saturated ones) # foreach comp $rgb { set comp1 [expr {145*$comp/100}] if {$comp1 > $maxIntens} { set comp1 $maxIntens } set comp2 [expr {($maxIntens + $comp)/2}] lappend lightRGB [expr {($comp1 > $comp2) ? $comp1 : $comp2}] } } set lightColor [eval format "#%0${len}x%0${len}x%0${len}x" $lightRGB] } #------------------------------------------------------------------------------ # tablelist::configLabel # # This procedure is invoked to configure the label widget w according to the # options and their values given in args. It is needed for label widgets with # children, managed by the place geometry manager, because - strangely enough - # by just configuring the label causes its children to become invisible on # Windows (but not on UNIX). The procedure solves this problem by using a # trick: after configuring the label, it applies a constant configuration # value to its children, which makes them visible again. #------------------------------------------------------------------------------ proc tablelist::configLabel {w args} { eval [list $w configure] $args foreach c [winfo children $w] { $c configure -borderwidth 0 } } #------------------------------------------------------------------------------ # tablelist::strRange # # Returns the largest initial (for alignment = left or center) or final (for # alignment = right) range of characters from str whose width, when displayed # in the given font, is no greater than pixels. #------------------------------------------------------------------------------ proc tablelist::strRange {win str font pixels alignment} { if {[font measure $font -displayof $win $str] <= $pixels} { return $str } set halfLen [expr {[string length $str] / 2}] if {$halfLen == 0} { return "" } if {[string compare $alignment right] == 0} { set rightStr [string range $str $halfLen end] set width [font measure $font -displayof $win $rightStr] if {$width == $pixels} { return $rightStr } elseif {$width > $pixels} { return [strRange $win $rightStr $font $pixels $alignment] } else { set str [string range $str 0 [expr {$halfLen - 1}]] return [strRange $win $str $font \ [expr {$pixels - $width}] $alignment]$rightStr } } else { set leftStr [string range $str 0 [expr {$halfLen - 1}]] set width [font measure $font -displayof $win $leftStr] if {$width == $pixels} { return $leftStr } elseif {$width > $pixels} { return [strRange $win $leftStr $font $pixels $alignment] } else { set str [string range $str $halfLen end] return $leftStr[strRange $win $str $font \ [expr {$pixels - $width}] $alignment] } } } #------------------------------------------------------------------------------ # tablelist::strRangeExt # # Invokes strRange with the given arguments and returns a string with up to # three trailing (for alignment = left or center) or leading (for alignment = # right) dots built from its result. #------------------------------------------------------------------------------ proc tablelist::strRangeExt {win str font pixels alignment} { set subStr [strRange $win $str $font $pixels $alignment] set len [string length $subStr] if {$pixels < 0 || $len == [string length $str]} { return $subStr } if {[string compare $alignment right] == 0} { set extSubStr ...$subStr while {[font measure $font -displayof $win $extSubStr] > $pixels} { if {$len > 0} { set subStr [string range $subStr 1 end] incr len -1 set extSubStr ...$subStr } else { set extSubStr [string range $extSubStr 1 end] } } } else { set last [expr {$len - 1}] set extSubStr $subStr... while {[font measure $font -displayof $win $extSubStr] > $pixels} { if {$last >= 0} { incr last -1 set subStr [string range $subStr 0 $last] set extSubStr $subStr... } else { set extSubStr [string range $extSubStr 1 end] } } } return $extSubStr } #------------------------------------------------------------------------------ # tablelist::adjustItem # # Returns the list obtained by adjusting the list specified by item to the # length expLen after replacing all \t and \n characters with spaces. #------------------------------------------------------------------------------ proc tablelist::adjustItem {item expLen} { if {[string first \t $item] >= 0 || [string first \n $item] >= 0} { regsub -all "\t|\n" $item " " item } set len [llength $item] if {$len == $expLen} { return $item } elseif {$len < $expLen} { for {set n $len} {$n < $expLen} {incr n} { lappend item "" } return $item } else { return [lrange $item 0 [expr {$expLen - 1}]] } } #------------------------------------------------------------------------------ # tablelist::adjustElem # # Prepares the text specified by $textName and the image width specified by # $imageWidthName for insertion into a cell of the tablelist widget win. #------------------------------------------------------------------------------ proc tablelist::adjustElem {win textName imageWidthName font pixels alignment} { upvar $textName text $imageWidthName imageWidth if {$pixels == 0} { ;# convention: dynamic width if {$imageWidth != 0 && [string compare $text ""] != 0} { if {[string compare $alignment right] == 0} { set text "$text " } else { set text " $text" } } } elseif {$imageWidth == 0} { ;# no image set text [strRangeExt $win $text $font $pixels $alignment] } elseif {[string compare $text ""] == 0} { ;# image w/o text if {$imageWidth > $pixels} { set imageWidth 0 ;# can't display the image } } else { ;# both image and text set gap [font measure $font -displayof $win " "] if {$imageWidth + $gap <= $pixels} { incr pixels -[expr {$imageWidth + $gap}] set text [strRangeExt $win $text $font $pixels $alignment] if {[string compare $alignment right] == 0} { set text "$text " } else { set text " $text" } } elseif {$imageWidth <= $pixels} { set text "" ;# can't display the text } else { set imageWidth 0 ;# can't display the image set text "" ;# can't display the text } } } #------------------------------------------------------------------------------ # tablelist::insertElem # # Inserts the given text and image into the text widget w, just before the # character position specified by index. The image will follow the text if # alignment is "right", and will precede it otherwise. #------------------------------------------------------------------------------ proc tablelist::insertElem {w index text image imageWidth alignment} { set index [$w index $index] if {$imageWidth == 0} { $w insert $index $text } elseif {[string compare $alignment right] == 0} { $w image create $index -image $image $w insert $index $text } else { $w insert $index $text $w image create $index -image $image } } #------------------------------------------------------------------------------ # tablelist::doFormat # # Invokes the command fmtCmd with val as parameter and returns the result after # replacing all \t and \n characters with spaces. #------------------------------------------------------------------------------ proc tablelist::doFormat {fmtCmd val} { set str [uplevel #0 $fmtCmd [list $val]] if {[string first \t $str] >= 0 || [string first \n $str] >= 0} { regsub -all "\t|\n" $str " " str } return $str } ferret-0.6.orig/widgets/tablelist/scripts/tclIndex0000644000175000017500000002070607741225421021051 0ustar fikefike# Tcl autoload index file, version 2.0 # This file is generated by the "auto_mkindex" command # and sourced to set up indexing information for one or # more commands. Typically each line is a command that # sets an element in the auto_index array, where the # element name is the name of a command and the value is # a script that loads the command. set auto_index(::mwutil::defineAllModif) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::wrongNumArgs) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::configure) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::fullConfigOpt) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::fullOpt) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::enumOpts) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::attribSubCmd) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::configSubCmd) [list source [file join $dir mwutil.tcl]] set auto_index(::mwutil::skipParent) [list source [file join $dir mwutil.tcl]] set auto_index(::tablelist::extendConfigSpecs) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::defineTablelistBody) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::tablelist) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::doConfig) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::doColConfig) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::doRowConfig) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::doCellConfig) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::setupColumns) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::createSeps) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::adjustSepsWhenIdle) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::adjustSeps) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::adjustColumns) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::adjustLabel) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::computeColWidth) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::adjustHeaderHeight) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::stretchColumnsWhenIdle) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::stretchColumns) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::redisplayWhenIdle) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::redisplay) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::redisplayColWhenIdle) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::redisplayCol) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::makeStripesWhenIdle) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::makeStripes) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::makeListVar) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::synchronize) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::tablelistWidgetCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::activateSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::bboxSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::cellcgetSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::cellconfigureSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::columncgetSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::columnconfigureSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::curselectionSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::deleteSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::getSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::insertSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::rowcgetSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::rowconfigureSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::scanSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::seeSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::selectionSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::sortSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::xviewSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::yviewSubCmd) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::focusCtrl) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::fetchSelection) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::lostSelection) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::activeIdxTrace) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::listVarTrace) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::addActiveTag) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::removeActiveTag) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::cleanup) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::tablelistAutoScan) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::labelEnter) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::labelB1Down) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::labelB1Motion) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::labelB1Enter) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::labelB1Leave) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::labelB1Up) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::labelB3Down) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::escape) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::rowIndex) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::colIndex) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::cellIndex) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::makeColFontAndTagLists) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::cellFont) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::findCellTabs) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::create3DArrows) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::configCanvas) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::drawArrows) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::raiseArrow) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::fillArrow) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::getShadows) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::configLabel) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::strRange) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::strRangeExt) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::adjustItem) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::adjustElem) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::insertElem) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::doFormat) [list source [file join $dir tablelistWidget.tcl]] set auto_index(::tablelist::sortByColumn) [list source [file join $dir tablelistSortByColumn.tcl]] ferret-0.6.orig/widgets/tablelist/pkgIndex.tcl0000644000175000017500000000130307741225420020131 0ustar fikefike#============================================================================== # Tablelist package index file. # # Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csaba.nemethi@t-online.de) #============================================================================== if {[string compare $::tcl_platform(platform) macintosh] == 0} { # # We need to do this here instead of in tablelist.tcl, because of # a bug in [info script] in some Tcl releases for the Macintosh. # namespace eval tablelist {} set tablelist::library $dir } package ifneeded Tablelist 2.7 [list source [file join $dir tablelist.tcl]] package ifneeded tablelist 2.7 [list source [file join $dir tablelist.tcl]] ferret-0.6.orig/widgets/tablelist/tablelist.tcl0000644000175000017500000000204007741225420020342 0ustar fikefike#============================================================================== # Main Tablelist package module. # # Copyright (c) 2000-2002 Csaba Nemethi (E-mail: csaba.nemethi@t-online.de) #============================================================================== package require Tcl 8 package require Tk 8 namespace eval tablelist { # # Public variables: # variable version 2.7 if {[string compare $::tcl_platform(platform) macintosh] != 0} { # # On the Macintosh, the tablelist::library variable is # set in the file pkgIndex.tcl, because of a bug in # [info script] in some Tcl releases for that platform. # variable library [file dirname [info script]] } # # Creates a new tablelist widget: # namespace export tablelist # # Sorts the items of a tablelist widget based on one of its columns: # namespace export sortByColumn } package provide Tablelist $tablelist::version package provide tablelist $tablelist::version lappend auto_path [file join $tablelist::library scripts]