2002/05/28 18:30:30
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:47:38 +0000 (06:47 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:47:38 +0000 (06:47 +0000)
darcs-hash:20040130064738-2ba56-e6eb3cb77ef567f0f4df26902fb6410a199d83b7.gz

14 files changed:
src/org/xwt/Main.java
src/org/xwt/Platform.java
src/org/xwt/SOAP.java
src/org/xwt/Surface.java
src/org/xwt/XMLRPC.java
src/org/xwt/XWT.java
src/org/xwt/plat/AWT.java
src/org/xwt/plat/Linux.xml [new file with mode: 0644]
src/org/xwt/plat/POSIX.cc [new file with mode: 0644]
src/org/xwt/plat/POSIX.java [new file with mode: 0644]
src/org/xwt/plat/Win32.cc
src/org/xwt/plat/Win32.java
src/org/xwt/plat/Win32.xml
src/org/xwt/util/Log.java

index 2ac6754..61c4615 100644 (file)
@@ -233,1590 +233,1535 @@ public class Main extends Applet {
         private static Picture splashScreenPicture;
 
         private static String splashScreen_gif_base64_1 =
-            "R0lGODlhigEUAecAAA4ODiImIkZKRjI2MhAOUQ4ORhoeGj5COg4OPSouKlpeWhYaFlZaVg4O" +
-            "KjY6MhYWelJWUhIWFS4yLk5SThISbDo+Og4OFkJGQiYqJhweTh4iHg4OGkpOShYWKhISQikq" +
-            "VhIWQiUmaC4uPxISZDY6OjIyNzo2MjYyLg4SNg4OIhYaXjY2PjIuKhYWJj4+NhoaMi4yMhIS" +
-            "Kj5CQiYqKi4uMx4eLxoeayYmKjo6MhkaLjY2LmJmZCouLiYmIjY2NhIWSj4+PkJCOkZGQi4q" +
-            "KhISWzIyKhISOiIiMD46OkpKRhobkRISIg4SEkZGRiYmJhYWTiIiHiEiRU5OSigqShYaUhYa" +
-            "ViEiYhoaJzo6WUpKSmZiZmJiXiomJhoeXi4uKioqKjEyXVJSSioqJhoeHkI+Ok5OTg4OLhIW" +
-            "RhISVS4uLiIiIiUmTi4uYx0fgioqQFZWThYWUg4OJhISHjIyMjo6NhoWilJSTlJSUg4OHhIW" +
-            "bVpaUhISPhoaFj46Njo6Ul1iWkI+PkZCQjIyUSIiSjo6OhYaWh4eKj4+Xjo2NlZWUlZWVkJC" +
-            "PhkWhh4eGhIWTjY2cCYmOF5eWh4eQhUWIioqLh4eHhYWFhYWdS0uVRoeZhcafjI2NhgaOlpa" +
-            "Vjo6SkJCXiYiIjo+UiIiJlpaWhcaPkpGRhMWZA4SOhYWSjYyMj4+VjMyRyImJhoaXzIuLh4e" +
-            "PiIiWhoaGjY6NhQWNmZmZioqcA4SLkBCWg4SMhISFiQmgmtubT5CPjIyLiIiUh4eRiYqPR4i" +
-            "bx4iIkJCQkZCPhQWXA4OEkpGQjQ2WDY2Mjo+Pg4OMl5eXh8fVk5KSy4qJjo6QkZGXk5SUhse" +
-            "OhYWbkpOTj4+SxYWfw4SPjo2UhQWPlZaWmJiYlJWVhYahhUWMjY2Oi4uShgadEZKSj4+OiYm" +
-            "MiIebkpKT15iYBocQh4aGlpeXhUWOhoeShYSbCoqNx4eYhkaihoeYhgabWdqaRISEh4iUiIi" +
-            "Nh4ebSoqYBsalx4eIjIyQhYaGjU2TP///yH5BAEKAP8ALAAAAACKARQBAAj+ACvtqyRMjRqB" +
-            "BhMqXMiQlcGCDCMadBLAicWLrESJYpXRyYwvG9XsU8PKicFKaoRVMmkSZSUNAdRYlDnyi5Mv" +
-            "NnGqSTMHA84vc+Z8SfMlQdCjcwj5CApjziYShCTMkUCOUBqic5pYTZAGyCIfPoYNCyqh6yKl" +
-            "F8b5AEcoGU8JXnoNSNZrTlW5w5oslZGFzhwfi4Akm0OHjg9ZU30Q8puU0FRlQHz0IiS4buS/" +
-            "Z5MBXkznrGIhPtIIGZYmGQfShO6MlZXlwqIDixblrQpECjkJQBhIGUBnVCcf5DpFWnxnFDkg" +
-            "ZVTzEpJk9CIhWYY9t9NkUZJEw8jZYSB7VCJeUhT+TLjgu0kWRU2a3JEi5E4ZARw4mOcgJP2F" +
-            "JE3yChndpL6A9MPsNxoQ0skmlgzSiUWgbIENA8SDBDoIBDnHEUKZhYRUsJiF5FTgoTKECAOF" +
-            "SMLsI0wAEHEkykMaacQRR8JwBIpDBLGigTAFqVjSiiyxAgpJrGCQESgWgUKkMKB8IcaPKZFk" +
-            "U0GVVGKAGjalJIwo6lApkxo9zBCjBBj4dJNJrqThhJia3cSDF4TI8pZTMrgyhyuAVDDHVZsk" +
-            "M1gahPBCRy88CTBML2XBMAwJqdAhxCLJDOBDKnP0AgMlhCjjSgn9rUXHMH4hwgs5dJ0gVVBp" +
-            "9FJCaDyBM6cEsoCzlCz+vBCCyIWEbFKBDxXQsRgQdGwSlmGENKFMUkK4IEsFQlhYARBIwHZA" +
-            "VU0kgQMi6tGRADmJCCEBDvX5QEIpUiBRoBBlDLNcNYvQ0UQnizjAQSfDbJKFAjKQwAEEDyqi" +
-            "h1iKSJHXHc1x4N45eiRShh2JQCDEBHZwkEUZSThjhzNJQJyEHeMIIEUpF2icVxMX2JdEc/Xl" +
-            "V6AMDx7ACyBiLRqYV0BQtggvvBxQgc1VYUhhBeQ4gAQd4NBRFRKEEA1EiSMGMJIaIamBokhO" +
-            "R/0jkwb9aBLTBq3o9I8BOOSEjyUZ6QQXQnpEyQxqgIKjGjPMoPRBwjgBCtoioTSGj1EuPYb+" +
-            "E2mIYjUXYw8wg0WsUALmEDgRlUAqXvBQVgKIzjHrAHOUIAFbvEQKAyECLHWpAIEEBVabSWUh" +
-            "QwlBuQJpAjDwGpQzQswBzjAV1DXHAKPCwFOkX/QyGKDH3q6ro4SQUxiBGnqlFBCADCsLObIk" +
-            "oysdp5IT1OQDFF35Wa4QkoQPEgRSBg5zDHNOBZsgcRYvkREiVlBJdFP7MFs0kdUOUmw6SjUE" +
-            "juIMIIsowzH6AzL6DKNieWGYbCaGrDcIQTujKEUWRiGFJkDAGeC5Q1o2JoU7SDAJ/8lCfpoQ" +
-            "CCAk4QJCKEXL+CMWcxkIELwYBiBgyD4JySZCiyDHDJVRARBZCAj+HyoahjbEFsWAiAQV2IcG" +
-            "lhYAv/mISDJhRQACgJIfISltK9qIQxjCJBnJxAk9YMUNvuYQDIBijGRzghhuYMUvcOELPUhI" +
-            "JUrChRkQRCVq2JtJWFEQk3xhBj1wwg1uQBQvpIEVXzBjGjbxky+UQHdCoQTqmgKDZFhoADCQ" +
-            "gGJIlYyvUI4OgViE7QiRhXY5AAdlAtQmZECHVJCSEF4YAA4GUKo0DCENuhvCEP5SFxIooxe9" +
-            "YIsEYCCLJABhDqkYxgHmcAI68AIxz6NDMiClp17IAgdAMIEX5nArFqShKqUahlVSAQgfeCEZ" +
-            "vJAMCegQPcXo6izIdIb9elGKCQAhmWX+eCYhHIgg+khDAPiBGBDIUIYJUAgC53BABRhQjQEA" +
-            "QhFZSMYw9CCEAThDD8rwQRkgQI4A2uY61bHDHYTgDAi0JhFJWAQHQCcFDvCiCaU4QMd4MdNh" +
-            "qJAXAqjhaGi3oBgOAwnk4KGFHNRRAslAGTfMWYYopJTpKaYCiMgVCXwALDpElRxIUOI+tkoS" +
-            "ksToaktbW0JY0QNQNJFpJfma0woytRXJiHAYuMgYWTGDLGJgkDd4kSBNAqVKcMFIA1FDIwwC" +
-            "BS5AASUGAckQEtADHhBpExb5AiuIwooB8AADaeACJfziBZx4Yao04EkaXHk7yjCmF1kQAOXm" +
-            "8NK2IIEXiJj+Q2iT0QQSIAIIF8joUq5Cg8WSZTJ2mgMJxPkXB81hm6kokysQMZg5pWKqZbLq" +
-            "nWwli7os5jH3nIxueTYYoclCAhU4XTJl0AsfNAERXpCB/ebQHMTcUJyB4cAiTEAI6sjqDolA" +
-            "ZiJG8SdpKKACycgCAyqQCg7YYTEp5EUQrJNS61ygo+whB7mSoAwOJKI6ZShXcphzh+iU4X9J" +
-            "KEUgRAigC2ShlACqDyAC0cLRLIocMmwQ8yjDC545yDUAfNAiZMCLHAIVQ7OyEB2QUAGi6Uox" +
-            "yQCHbb1FCMSKCGoJ0chJoqxFg2QEa6AQhUncijWIyOQjGBCDReIaJpLE8Uo6Mcj+PkQR1zg+" +
-            "BCWA5ALWYkFXNXAhJlT8ApgoIYaPJCk0YnaCF4bABVc0bgBf+OxVStC4wkhguIQwFQxIAINN" +
-            "0GAOxyAGpAawiDAwpgQXGAYOfACE85KKBhIoyyaAMAAagOMCfRAeIITngqXIBVBz4IFRgsID" +
-            "PjlGArPahCsmrRT6spMEsmhLH/S0rMJ0Ztl0uIBjCFFORBxgGNMExGIqcIGfVSA7OkBCX6gy" +
-            "AW0lwxl32MQcBAABHwygYjQLREp5QQZymCddQpDCrSrWK5Fq6A52KDIEBKCuCxNiAhUcRiIm" +
-            "MAwB2EEAQoCAHbJgh4lLYTxNKANMpdCcCZRCpdERgAD+QnaBGMbmOcMItYLIEasDAPE42RkG" +
-            "ix2kMnp3CIgT+pSGigcVIDuAnbIwgZ4M4wMlCiRKOCqI0tVskJhMRGsUwTNhA5uQmPyIjoN0" +
-            "gpZvIIoZ3IAHjk1JZMEINZNg4CBwq8RHRpQ2KKhjBneW8xdusI9k0IALl8WABJzAgznchBKs" +
-            "2AQMuMIDSkiKB70oCmUeNdU5yGIpqSDHAUqwCVsNwwen+vYBEKGME5NgALhbLZuOyc0sOKAu" +
-            "BE6DK4Z5FR6IIQFlUdJo09D36E3FQt4qclKIloxN4D4VSJj1AIwXlOFtLtK90JUENmG8NAxA" +
-            "nDSA8ZzyMwQ6ZIEQCXCAOJP+YQIYZyhX5ArCAJBQhkXMIRDMcMYcgMCMMphgEaMogw94oYgk" +
-            "uK8MgVCGBPcTMg4QAxDQESACkxdlkAWBIAAjtQgTk3EaJwUVZB4ho3EZRzHykQQJlwUiVh0G" +
-            "EgQDYiADtQiAwHKQQSBAQDMxNIKQQWQTwixDBA5EthjGoxSQ8ninohl0ECVRogF5szQPEWVm" +
-            "xTQUAUVXlxIawSQxgVhW5xFqdCYzEFdOwBWJlBEBcAM/sUVjIApy5gQ4EiWJtUf7UBLCQANf" +
-            "8EW31AOIQUg4cVwSQAmYBXexNQQScANcgAShkQowQAPJ4DwygASo80iuMACp0AuIgBigR0pA" +
-            "IAv+iDAAJAAEiJAKpKYVPrAoEtALrkCJCYA4XzAEuvMFNOADrvAFlKAqrFMBshCIVFVaw1Bd" +
-            "iNAzqMcYc4EIlfdz4GCHlhQat3Unc4AEx+UDF7AJvhYUFQAO5cVOlkQCc5AMDwIX5kEH33QH" +
-            "gdAL5KAHUmACytAJUrBjDSMEJiYEDqNMUuAMOnQHxEAIMpAIFzAHQsAAZIADBgYiDigLw9AJ" +
-            "HEAIUsAdBCUAFQAf5HABdmAuEDMME3MA8TEMWcABFwAuzKFxQiAAMhCAPVaC5kIIi7AsMpAh" +
-            "7EMzZ6FDQMUzB/B9GEIHPFMhiHBkgwgWqTAAjxcUc1ECgzEQOqgBh0X+EE0iEE/jRDMyIzEB" +
-            "NlzTJDoYADtJRmdyJoBzERbxdUNwdkSJE37DNAFgE3ylBrFwE00pR33GN4lkElwgFEKBEzfh" +
-            "AEPxRzzgCjxgTjMAAz5QaTCwTZfhACWQAPCYCpsADkflKCTAMhkiTjIIBKoxOpehO5QwKV9w" +
-            "kkPgBZuzFOAlGWnwPL1gFMrgJoskC64gJ6lwkpT4F7goXeeEBKmQBtToF89HDqiTQ+5WY8AE" +
-            "Q3oykV5gb5i0CBfAA0jAAZ5IDoHQJhXQBEHwKWeRBUJQGHZQBkAADtshNOGhFBAwHAMwAYmA" +
-            "bBNQBrpSBlKQbByQBH1QaosCBM7wcYBAHYD+cAHnIARAcGKLkAUplXFiIU8X8B7D8IAixI2l" +
-            "JAXRUQrVMSASMgwVCUMdJUMkKAOyoQy8EHwxg1VEgwREszNDpCuyQlWI2IiSASnlZSEHYSJb" +
-            "dVgmkjUK0TWikJNalhElISNkNRFf8yM8chE4MThN6HVg5BFEcVai4AUJgAFacwNIkgBpIxOi" +
-            "YABDOQQ02ggsyjcewQNQoElfOQM8IApD4ANiYCaikIuUYEuskExOAQOOI0MSkAxIIAtx2VyO" +
-            "4QMZNU3lIwAvR3BHsTm+2Bh1oQyIUBZJ4RbIREtSURauQAleYEhCkQbLVyiCR3soiTvPVTmu" +
-            "4C3ksE63RVW4sgj+siALD5IMtyUYeegYyNgmWKUYLsAhyQIDdJAEgaAZziAFTZEFnUAHEiAE" +
-            "b9AzxBAGQEACQmAHOwaAJARU4lk8BUkHyNEEycBu2HYBqkEIDqMMACkAr1kuCihC78ELF7OQ" +
-            "5XYBUiBy7GEe+EEy4rlT+tkEBLIoQeAagcAyBEIhIIhUIIggRWWCHvIgGkIhj1eoj+cASESu" +
-            "TjEAvpIMskAHKmEiGkBYKDESV4Y1REijLDE1UsQjM5oRYQRGg3MTb8QFokAJP6F1RskDFLEi" +
-            "X3BZXKI2fjSGPukQGqBrNtF1TgAFPMGVbyQKjpJoQgIoPIFIcyAGyUACDQsDu0QIurT+SuPK" +
-            "AzCgIZrhPhaiDELlA4AgA+o2B5Q6FtZ0Fg0aFbiUa1dBKHSaOIAiBo5DFL2TDLc0WqNylnPy" +
-            "Fyc7GI9mGCUAq+7mTIggJ4DgqcjoAGkQFrA0f5bTUaVxXkMgYTyxKIuDLI0CQNRmPEiQUskA" +
-            "CN0gBBKlCKCxCAqQBMiIDoArBOihLiNVTGVQFevpYCw2MnmRBMewCIHgLyVzH9XRUtBRQfuX" +
-            "cSETHfoBMqEGguZCBl4BQObCM7EhFuwzM0CAMvRJIDMUMzGzLETjkbKiFIjgA3oyADoAKaLj" +
-            "iIRwEgIxEEp3I03nZRQaEz2wEVm2lD3ydHs0Zko4Jr1GCXn+VTgqSwlU4wRHCXh2RCV8wwUl" +
-            "sQ9FIhQ98FdqpAZRMSaZ6ASawQU46gTSdKSIdExXMSMW8gWbkAozQC0lQAPiQgLgwBa1whZN" +
-            "IACPBxVApBjjkASdggi9QAMJYEhlQhQ8kXg0gBh30ntpQAMlEGml4StSkWyV6AMQzBObWSqR" +
-            "UonHOE2BaBhTsQkOUBaIQAKAQnyT4QCZCZnqmgw9FD2VUl1I0G3dUy5dgQ7n4EqKUAYWYjAy" +
-            "QA5SUC6AIAXjEAgLKQTVMAy3OQGAUGrOkB0PUxgFCA5kMAFfcTHkIAN30ATWNwHuIwUwVG5B" +
-            "IE8qNQ68AJ/LAa15EUNCcAB2iTz+5FgVMsQzlAEEuvogvAAZMaQyLHMAT1w8RIabbFG7hIBs" +
-            "xRYUm5YovScLqCOTD0F1Tac1BTEScTQjWvY1C0sRJnGTPVBWY+aEGGERM5AACTB3guQ4MFBX" +
-            "rDBHlSABiJNXMwAFQyFogSYMSikLCeARASAGruAEsuAFfAcFTtATPFBXBvsFz8yJiEMIlsUD" +
-            "QzADmyALfVZqJkAC6hazlNY9beI+rZIU72FVGsIUpZLCvleZFhIp5Oip64d8RdMLlLBaZXI7" +
-            "qJZqRkvBvXCkt3NLSFQWsJoKYpCLqWAUlze2vEACy4VtEsAyQTEMsQWAkmNMfwFxI+kaQSBh" +
-            "DXkMNMP+AflEDmUwCtxcBooAPQiTPe5xAskAARwwAMpgB+eol8fUBPNoXsmSnqVACNBBCGQg" +
-            "Qmn8QKe6HGUAgK1hYjLUBAA0GjAmAwBoyOkiNEB0ASHYIdRGM0KFMuwDIcF3M627Q8qQMzkz" +
-            "PUCnu0tBOSUgiHpSdANBEEuTZQkxIvEar03iN4H0RVwQSBRBEmolRUWpdRVRJHJ4Ax8BdgE7" +
-            "A64wBCwxEmyWBmIAOCVRCR18S2MjWF6QCkDhlJUAFDOApDPQCF/gA1wgZpwNS0oiDDyASVfR" +
-            "lBxdGskwem+KCJeXCspwAffEeaWkUIviu+uHGKsmA0tBGZW3CcpAAh0MiKL+BUx3Ykg0QIlH" +
-            "qjtpQAnTRBRmKQFcQTmohkyQZBiUIwvZ0ygOoBTJpwxWhQSsNBmp6DPJ5iEaYjO4IgDkgAMO" +
-            "AB2emAQQMAC9wAEKQA5eIACRYD8KdwCpYKuyGjJeIWGhhgTmAQiyAAjjwM3QIQt1KwDrh6q4" +
-            "Oo/DcBqvmQX2lgWl5i/DUA0XcB9CIG+LMnId49UldhY2WwE19CBzuzLZoWPSwT42VgGAAFSp" +
-            "uzMGWhgbshh6Es6PorvqphnJMCLCAJM4wkdStg9jMBKBNSMqIhOtHLBEcjVhJDZgNEZm9SJ0" +
-            "NXcZ0Xpq/hFEIQZpEwsGaxQeMUZiwApL8RFdxwP+leAoiHMTX9DLySAGbuYFPtELkbWiMJCJ" +
-            "cDQEhCCGTjG2yTAUwqKIlaxuPlAv6oarpsZNX7FKTaCZrqIUkT4qixnBPDAUmaRrlAMXfcc4" +
-            "2yQBZbKzmxamUjHDdeEXqIcEpZIhdXEcacAmvECJCBIXXVwaoOEF3umaSdALqVAfqcADi6Bv" +
-            "uSgEudIZNtWf0NEEvp0tODAMGoSOivAVTcAAQTAHBhYz8lE85TJcKUVK8Xmsi3BvBOmlImcd" +
-            "gpIF1aBeOZUXpRbV40AGDdfF2eF9gSwuy1KCNxRDPJ6tzINUD9IhQEU0GuIDPzYrbAEVwWYY" +
-            "qcDJveArJoJ0KFEQbIf+gyNhvAUhCq2MVhbRNV+kdWiVVhTxRDJxAxK8JHNDCXciWWw2zYhT" +
-            "Ej2wD3NqJnXFo3boBNZ7E2oQFDcBCj1A2TDgCluyD5RDywbRa1+pBjzgJnDBCjQgbfo7F+7W" +
-            "iYQAl8GSTpRhLolYatI0K7IASctHS7KjbpdGAm6xfMnQFC7YC15QArlLOXlCpw6gJ3+4J1Lh" +
-            "ChNMKnERWsgUKSt8jFPBS3ApCzrQC1BBS8nGfWCBAx2PCLOzPCEoOSM1tomgfsmQCAPmAwnT" +
-            "n3fwBk9cBiI24vuBckLAgQJwDNTWHJKXBMZzYrBaft7TBNyWBUEwDLCDBCymDLMvKIRwHwH+" +
-            "Ykwzp7opRxsgQiFdrAwuRw59AFTW32MrE/EeQmTPQgh9oCHLgiEy265u3RaxBXqpMBjSM68D" +
-            "sTQrAhGVIKEp4fTLmxBxJPNdVREAEcBJDyeinDhRwyoAKFEBWFGCOAPUjC80XA3BgJAVjzQ+" +
-            "bhz8yGoORx5OvgSY4SpBLwlfvhxM46QXjxsJKqmZQ+mgmp1cXn7hgpImRzE0fGB0RWjOHFdf" +
-            "UgFJ5gOIsjklCDXhtSkZoTLVABEiIYvO0jmIgCxFNEypD3K8HCxVRihNmk0+JNCl6gWGD0Rz" +
-            "9M5JwwNGrzm95rpKIyHBEKYJvMyRVSRBUlkcK9DxImERIQlDgCz+6uUKCCEvyYTQSZN20xwh" +
-            "yiSQuzCARLUmfbMIIZFsgjMkhBYJGXZhURMhSRYB4XBnGJksdsDu3kQuUZI5Fezw6nXhTYUB" +
-            "TTggwpEl9gUpLugkSUKHl5SvtysIyEKIVxIgw5KQOyBgKge1TWQsEk6ZQMghZxi1yAGigtHo" +
-            "QJCXBA9AogJCyCEDwQoIRIIcJCCcUEJCCKGDECB8INEHEGXxIUQkUPwwmVRQlKWEOXxQoxIo" +
-            "blIDFCcCUEMNYW4Spkc1RBEmyAAaGrJHhNQQKEeeeGKlBwyaFKVKhg6agQceuDBJsC9muAGU" +
-            "SrbsBQYnxFCDCzXEIO0Lmk7i4ijCnOD+IaE5xBDjBlacEAaKNF66QZh9PkrgC1ZESYOSNIa4" +
-            "QZQ5SICBhhK+IESIEmjYpIQSNtlkwmSiC+QrQgJZBJEBypKBnA9TTQYyQgibsdXEXOlliDS8" +
-            "SGOOu1iCQSUelvLii1z/TAAGYudI5QsMJBigKQkQ2QSxZOhIBYZU6PChVToQyU2WFREJEZwS" +
-            "knGLDgYnHI0QQBYhA0AOkEhGADtMvWAUINJYRI9hXFkkEiHmaCKSJmC4gIEDfBCCA3JIEGIC" +
-            "cugY5hgJyRGCmAL1o0OIJj5sYrT5kEBuEXKaaIIcAQQApIkkhpGhiWE0HgaIcYSDOZBAeBkG" +
-            "EF4WMXARQCr+ULA+nYGYqsD/gEBwM2WAcNBBOr6SRVVCIpRwW0RAxBqHh1Hki8Rkvha0EmE0" +
-            "2AdIUYRMCO2zQemBSYd6EMgJUHSMEhRhRGFo7p0UYuWjg5yggYcZELqBEr8+4oIVNVLB1Yk9" +
-            "9/lCUUK+EEMUVr4QZgZE/ozpC56SEWPuMZ7koqEZDqWJCx7EALwkRQ2XKwEgZJB1DmXAIYFk" +
-            "H0oAYoImXJiWF0DoIIEQGQgpIZXVlpoL1zlo+GIpCQz3gYa5dE0gDVeYur4XwwibawgJcMX1" +
-            "esQGQCS0OYgnjA6qOlokmdKG2RyRCzYZwoVFmAKQqY29AMQwvEAIDtChF7xQwCL+XCEd1PCC" +
-            "A0KQhW8uQIcK/CYQw/hNGQCBsDuQYw7OsAMSHJCFCZAAEROIzzASsQgHSEEKH7LDBC+Qhd40" +
-            "oRQjm8AFAOEMl40DKwJwxiLgs4gsZGE4TQigeC7gMiEIIVVqAcKAKhAIMgABEOvy2QGOswgH" +
-            "MQ0QqiID1ujAIQJtqzdx+RCBxAiiqCQDByUihA/EVqN9FGkfSvLR2XbUI1Cw4lB87AHeMJAQ" +
-            "Hg1JcQFA5JFyhBBR3EBLlPAjR9KAAb8N4QsScJwaZiAKw81AJy+pxK2KggFKzEANadjTHF7C" +
-            "in0MxHJp+kIlHGcSz4HCkpQwFKICMwBK9KACF6BBKgr+Qw5w2E4piFAZOV7UhAv0BhzBIYQJ" +
-            "liKWTdCFBGQpAQkGIAHIVE8ChKiAX2BQzLlsQhYwiJ4D/lSVAVwPMKXpBa5OoCtXDGAAuILB" +
-            "WHJlQC+4QpowmEMyZMGpVPSCa8kYgFVmlCIfRPBDD0UCEgx0lgpwIAknKIEd7GDAMtiBBHSA" +
-            "wB0+lAgIfOgOZdCiHQRQKWcMY4pJAA5xAkEIZcCUHIG4ADl+uYj3COECxGjpBUpxxZ4l4QIv" +
-            "82kWMOjTRSShCb8RmRC4uAiR1YdpvKiADGRAtKYdJ0KjkVAFHBRHE3rIQw+twAHMdaLeJAMR" +
-            "iJCFLMCx1mntQwNquGslNKD+17OhjUlMAgVgC9IQVujoIAsR0h17xCPF9eBKXzqIKGbwvATM" +
-            "AAN3m8ufdvIFUEgABhhg3Qy4sI+liMGSLzGAGAbnBT+KohEE6dsNNPCFQJ4uS477wg1m4MkZ" +
-            "0EAWlHCFD3pBAh+kgQS8uKYPKkCCTfBCPIh4ShZKVjxl8CIq4PiPUornA13xpS8lEG5gXkSD" +
-            "zHD3C/1kSrBulVkJqOS8c1kJ+IYwgOIm4Fn1RYQPYOCFEF2EEMMwwRDSMocE/Degm3HFJppg" +
-            "FyAcAAbrIQQMygCBZPRCCiFEhDMgsJlS2EEtw3DGUYszjFJQtQxSINoEVgqEOywCYmUgngsH" +
-            "YJ3+YZRgGGX4UBmEkIoKNCEZFVhZxpIgixmqZxwOKgWSfVYyIAggZuNgmQ4BccHZxcxnCCIH" +
-            "z5pGhqUpQ2pEAyvRJmYunQLtXBMihANMFFcSgANEiLgMIbaCokZUYh/7gEKN7OwjNeS5r4bs" +
-            "0SENW8geIQkKeRYSj450NrzR8iUYmMtLduSEG8DgBo8+G22tZxKDDFJGGHgJF25QCWH1wHP7" +
-            "IFJDQI05hICCEjwQSJYogU5WcCoN6ORBKWpMIjpsSi1zIIRTKyCLHguBEFcbhgDIMa3NLCUV" +
-            "p2KKBATDgyF4QZI8cAkN8CSGuyRADNkr1CV78QXxaRsDjBmCE4Ygi5b+pOFr1iP2rQaw7FwB" +
-            "QRYDIFcFHDDjY+PAQ2P8qNRARg5AzOyCFzTizuyg1kVA4AIOCAIEmjCAYYziAr04RiSWnQRF" +
-            "jCULIiWEFJpwLd+lQhllWDAvjvGwJk5ICmrhGYM4sIiWzfRkBQLOEl/m5GE8dRgX/M0VL1Bl" +
-            "4eWUafWRAchiRo7/YLA+IGOQgsCJhLjEBWkiUtCXP0QHJJgLaOA0QRwJgaIBlK0RZatE2udY" +
-            "Nh9BIbA4GhIoCrnHHiG6RzaqUUICW0g/8sRNNxCIF3CpJ2Eg5JKEvUGPtG1tUItCSqD4kyfl" +
-            "/gWDUA6UYdIt4PV0A84/hBI3CBwX0kCDBID+o5qbCMtSwKFMEshgGD6geBlKgYhkjOwCIjIQ" +
-            "IVbTKnoGJlrQmwMMqC3Jao++ULOy1RcQc5fBNG9RzNfL9sqyFHy/aincncO8HfAYcvQhNUIg" +
-            "hxc2sZwE0OF/IlrKU+dwgWMAuxMC6MUwtuAMzYxiGDBAwh2aIAEfSCEJynWGJEgrl9kMIDCO" +
-            "DPE/CsoCexMAKXgYO0iCTrkDXpCFUoCxCpACYwuEJqADA2yCCpAuQJAuQiiFlnKq36CP4sCZ" +
-            "jkm2+hgGglsOqkICqiKDrdIZDHI6LuIFBCEaOJsQLMuZCRGZ3tjBqemQELmaY4sLOpAFuMqv" +
-            "WBgDdYiFSoDCKaz+o7pDtbHRgLyCgiBRg7YJrMQipB65wkpghSDpm4MQBlaAAS4pCFZIgJIY" +
-            "iD5TnOzpgdJBkwBAJ0rAiBnYB5FwiTyhPDV4CYMYEi4oPIPAJYMoCGH5nMDgAVfjheLiCOJC" +
-            "PbB4ppVyBQx0BnLYBCBogkBQBhMirmwpAVlQhhIAqA/ZBM8CEVfgJnD4ExiQBVUSFsCgtpFw" +
-            "nlRQiV5IhbsojCEArmgbgFpkDEJIhckIES8YAhO5C2JjiQwBDBDhrhRZihGZgwMAggGAGOIR" +
-            "jgryKYvpg6YSAHPJgvTAATuQgq1QBA5IhkUYhSaYA15QhGFIhiRggM1ADwSxg40hseP+EIJQ" +
-            "kQEBKLHiEIL66BghUKoRC4QM5IWnajIhmA+f0jX1WIQDuCDf4AVeOCqisTp0UZUdBBoEiRle" +
-            "CAJtnBqqm5AD0KmBixBC6AMQIYGqyZCoaUk62Aq+ABEopMIojIVYqDO1O7Qbubsk6ZEgQRLF" +
-            "ciy/Qpu7eQiXwBseKBS56TToKQgx2QdRowiDcDWDKAEvEIPcqhMnSINCYZ2DIAhREAMeoIRW" +
-            "ojTL8jvOM5TB+8UZEMYBSIWOYC6rGA2p4I9UsJ+XEyhlAAQyIIFU+C8ZYJGHASgSGBFYlBHr" +
-            "gbYhKDdsExZXkErx8Qv7QgweQIzAcIy7eC9dyRWWcAWAMgz+rTCM9ZEfOpCBavov/MGZaXyV" +
-            "ZBiGWmSm9YOAw7SDURgLCFCECvCBMkggE+AARRgNDcspZ8jAplqi3wACI6qP+wACZ2iNYcgC" +
-            "ZZAF9DCRl+uOJAAHICiD+BEAIfAB7PyvLCA4DjgAQrgAXlAGAdAirAig3hDF//oQrtpIVRmN" +
-            "qwtJDflBXkAC4eGidKEg+QCaIJCPDBEjJiQHWag9+QCnEDEXWVArWajCWFCHMfhJtfPQm4C7" +
-            "v0KbMBSSH6m7tLsRHPGj3OK8wkmD3VKDVvqSdGusIJmkjKCINcEAUeABL+CSyxmcFY0JyQoA" +
-            "ztORG9iHHpAIiMgRGFCUTUoAEqD+NkgCCxgAKOJRBiQaP6MaKCR4KjlzT8U8RV44NmRZCsNA" +
-            "DF0hL47wi7kQPi4wLXRyE8NYDMIIFhiQny9IgGZxiaVIAEoAkWABNlfAgE30gfMaDS/oBREB" +
-            "KA2ZAxxglyYcOrPYDGQKBNc8MiDIwCUSufIsz9sIgmGQBhxssYxJBJyUgjJwETvIgm9igP0j" +
-            "hzIAgl4QABi7RyFIBhnIggqwTWMjh5mpoI0RQY7ZDAFogtwpGY2pIJcyELHaGXWpAGV4QTUC" +
-            "gt44us9wEIKL1uMgmp8zEPyogN7ojYdCMwJZQq6TGlV5GBMgnm0RCzdDBHVIOw7l0J80ALUb" +
-            "A8Xis0T+Y5IuREMowBu8ShKyGdElcQIwOVhhLETGwpLEW5N9AIUEuAEuubRKELXLWUvMAQXd" +
-            "2q3IQUQ+AdJB0ZPKupyXQKfCqTRZGL3k4S4R+UQOIIZNAIfh8IFNoLinKp4P4SZaEQvD+JV2" +
-            "mgthMhY1vcXgOwznW4poaS/toQHD0B7tkZ5UkNrk8R66yD5aaZX26gW3WgoRKcaY2QT1QALI" +
-            "2BgfUAYI6j862IQkkAKp6IQswIFhiIQkKIIgmNteIAdFEAIasI4kWNQJ2J8DEECpeCpEOADg" +
-            "0KkkCIQKSJkRaYIFrJRSMJcm6LosGAcREYCoUosLAD+jahkhAASNKZBhwJn+QEDIC9kML2Ua" +
-            "0rUqLaoP0BXQMNqZq5rdmNHGsFKjHySHqyGQy1AjVXnJqzGhuVqrn4zCSthQ5K3CtAtKL4SC" +
-            "O4LeursRL5QbhfArg2CF01lRSLKcxUiDtEyIL5nKxBucL0AnSlNSDXAkhwUF2vob+6KEJwms" +
-            "gzUUJ6AE1aGB7D3UP1EDEWkeGSCBbFIGxOwYqf0vcvBF3zCggHKf1bAxZWhFYCOEU/kQaaqn" +
-            "EnDa8LnFQjEKw/CCUzEWeyK97COwrdCVYkyGW5OzyXAzwEgGJGiJOVCmZ0iFRTiBIfilFA6O" +
-            "VHjHRZAA83sVqUoDGbCDCtCBCfAoijkO+ZBIlqT+qp8hhyzghTkYBhQbACGAAF6VggnIrzI4" +
-            "h62wAwhKGGWggwxEAhnggK9ognEozAwcmQ+8AA7YGYhUqpc5KpeBjaU6DpcBAiE4AGWgqrbA" +
-            "D+AIoJxZIkBgmt/lmVDZDIJrzxD5EKyaig6JoxDRKan5EHCZGhKQGgbpySmsMw7dUA0tG6IM" +
-            "kjxDtCC5M1QukrVpm7wD2EuLiYKwS4b4Q8EbAjFQnMSDPMvCADAhxMipLJ14Eo1gUrJ0AjW5" +
-            "NEjyo0ozJfq1NkfKEhLgnG8qgQGwN1oE4ObKClocjWqqDnhBlilbi97Iy73QPUypxZbAFZaQ" +
-            "JA8Wg1uxlTKhtjQgDFr+oZXrkRGyKKjxOQxF/eF44qZtSgP6GoAymRYeDhF2xaq6sKI5aDJw" +
-            "SQIybgIp2BZFuAM6OAE7wLFU+DilkIJE2EYXChGUIwQyeLn6kK6lKplCJhDiYGKqIw7zU89F" +
-            "GAdjMxCJcqnh8BngWIQBGZkr8g/5QJCDXJcReUF1saKjaaKjGgaQmUEEIQOWsSqiQeQKKSNq" +
-            "teS5wpqHkRBZCIsLmZAdZMkpnELlnVe1qzOzs7MrvLuB6EKxObSFsJIvTJLYyi1WwADSiyxR" +
-            "wADBuTQ/nIEA4AJL4gKfwJw/9YkbwIAzDBTHuZxEmYiaEJxGMoku4YFGIgHEGAI1eGGOYIX+" +
-            "EiCHZgGHYvqv3YmodnKzAU6wAeUuWmRCwCgMVXxa6eEBz7oLYbwVPYWB6am24APGd0IWxeC/" +
-            "XnCMYrwIyHAF4Fq2ZcFJ+1KKfoqQagtXWsEgwuCiOUCCcQCCVBgGhyGEO5igC0MCIfCXmoIA" +
-            "lqniAl0ZAGki8BOiUugDJJgA8ySHFpMFLNa9JOCAGVEqV7ixOCoDAXgKKYAXo3rHJvCWXfUB" +
-            "nkGYLJCF3AtCzq0A4EC6LBsGaWUaaL0qbnW9+qA5+HTB132qkxxCZUCjDAEZAVUVbNkWc8EW" +
-            "t3pxSCbXs67CMRgD5O1JAzBrvUo7PgssLyTDxWIsRYu7g8heLuj+I0dKA9bZWLJMg0vLrcw5" +
-            "WBooJUBhhbnAvACgBGFwLFFwCYmgiVlOlCLdLeh5CGyrJhq4i2PzAouwUrAQYN0L1+Lai2Gr" +
-            "irE76NOckbHIvrHgJshYCum7tV6wnsyCxUNXH1f4zMKQPu+BFbJI2hPYBIDixTQATMTAllNB" +
-            "BABWnq3Q5Ac1HhnoQAySKBsimjo+MRkoBQbAVSHohH8BhFEQgAHghUQQAgkABAZA4CToBgRu" +
-            "ggmYllIQAm40Dr6QKgZxMvUAP/cEP14QgMuQKgnqQGODmFTfwfo42wtwPYjMmW8F8ZSRAUA4" +
-            "KqDjmT5+TytLd6aycETe8AhpC3DwMjL+wKo02rqqeTOywgEY/5AK+MnlVQd1aAQcp8KflFcd" +
-            "hzvFKcNKOBKGENEqKbTW4ljEYcvIoTTdijxKapRSqnga2NEEgC1S+oJWmgElFYUhMBZNopNC" +
-            "mYHOERzrYcOziPI0OI2RyJQ52KoAZkKrmERu6hQDugsTke36eBXUs7fgQxGmwDfmQRYasBXm" +
-            "aecTTobedrdW9IK+uJVnSYXbxknCuBpdITZjiber38Ze6MBkkABZUEwvqAB77IXfEKg7EIA0" +
-            "qDhzSQR55IAJqI7p2IoErKkkqCEB6I1CDlehugw5/kQUo+LsHIAkgHAkeDnvjo9kkK7zBPxi" +
-            "+y9jA8XeUCr+ICiFpxKPLGUXARCOJNjBpaO5CgcEaWV3IODcQEBc0jUQAzFIniFdlmxJK6IQ" +
-            "ZaigDIHkaMUacBIomCxtEhnXf7dXKjSADQ34gofCoOwzL1QsL1ScRoMbJjkUKfcjRXEcv9aS" +
-            "P+GsL4kcl8ASNagsl/hTU/qkM7m0MJlL8n8TT+oVNbgBNxXGwIk3TtnLYTPbEXGzhAIIcCQQ" +
-            "9XI1hxDCZBIIKSMxZ1MFIIRSPUQ0Zw4NCQMG0LjYa04aCXNKzBlCKU0vCV++uPpYUALKixJS" +
-            "DqERsiCNZHMkiPQxpyUOkAd98BgAiFCaORJdJSNELlWqCkiSIRpGSBYQIeQqDBv+tujAhUCA" +
-            "DggJhGSRFAE+CJWpRihZGSnJZCUqQweQoiypgNwRYqKUFCAkkiQBQi6JkArkAl0A0nUYEl5W" +
-            "HS9C0pXcoiy8lF24QGjYBTrDmvC6oHlYICCAmpBZpJWMDIRAgLQexmvRsNXDsgIC3WTRhSBd" +
-            "FxF3LURI52HkeJGTzZxQHyRIKjglR+c6IRLYZV33QQehrPBI6MQaE6v8+Vjq1I8xP6bS+feV" +
-            "KgmrpEYNFDWgKu0Dpb8HK6yIAop/agTgxEpO3MADD2l84QQoYgzh4AwVijIDBivNQMODXCw4" +
-            "xIQ3OCGGGjMEwEoCTszACg9qpMFKGgPA4AQlX/BASYX+DqZBCAwDJEDJbhgp5UMJs22Syiab" +
-            "kEACST5UwItPBwER5RypJJOMQZvMMcBFSc3RS0df2kSJFzB5kQAMMCQwRJdehJkGDwbp6MMm" +
-            "cKbiwBBczOHAHF/MgUgqaXgxhw+U9ORFGj6kIkEqdMjSSzLKEMJCCcMo4woJFwwzxzBSEOJD" +
-            "GWX4wAsDMiChyAU+lMKAMuCUoQggdCSRSCCEXFAGL0gIIEATXglwziLkDIPrYUkgQo4UFyBy" +
-            "wATkwNBEFuFplsYiTaxF2hzI0XGBM981QQ4JXcnSla2haUpCaUgIW0FvmC3CS7uSlYabMu8G" +
-            "EkhuXgkxjHCgCeCVa5IBUZz+RMsRUgF2CCHkAxI+cPeWD8l4JwsihCBChw/paRzfehur00gl" +
-            "6qijRiX50QcKFMLsE8B9oAQgystqiBKgEzUrmACFN7BS4Rcz8PDFDUOIwsMQNVPCww0LfoGB" +
-            "EwxSUomIIoLiICVqPEgJjpTMgeBJcLJCwyYlEPIFDA4rQ+hcm+zGJA0lIGJRUgcTMtIA37mS" +
-            "Bs4Rv0ToRYQO8NEmPqGUxt0dheSKSDt9uXhSH7ly9+OKDyABDEkpBIMsFezkAzlCAZFML7IA" +
-            "MkAafUyZzHI4DCCsxZcBkSw5QkiBWhK7NtEEsIskUQZwQpRxAFd3QCZEsz5MUMadd5QxBx19" +
-            "eUH+yASE9CJENYgkM44zTTUBSKRS+ERcMlk5lcQihABLBy9JIAFEIOQgoRU5vwk72wXvAryb" +
-            "YxcIC8gigeyLGmrqN4zj+E9TxyHOcbyiL8cMbBGKUYxTEOI+hJDAO2+zXsRkgRDsXMcSGzNP" +
-            "fM4DH/TEYj714Y/K6HOf/NxHPwEQhsxAcQNQiGJmouiB0nr2oBt8gRJc2BCGdFahG2VoRToD" +
-            "2koSoAYnBGgGTmDai1ZiIx6I4gaUuEEJSEKDGwhrAK74wsAGsAloMIkEhChBGpKijApwKQ1m" +
-            "dECUwHGVj6yFBDpJRXi2dBWLEAocvUhDRyrnpTS6YhMFSYOWBGUQGJT+qUtpaJQEvOAKOiQD" +
-            "URX7yUGS8UhCOKBub/kTOQawltMp4ylzEFYyHJCEJuxFEVaRQjU2cQFFIAERichCMprAjCxw" +
-            "qhPOmMMBEpEEzCWBe4RIAnUIIYSj9OECTfhOVxDRh3FwjxdleEo1LoA6zRyTleKrQBYuQJYm" +
-            "nIUDtkkCL4DQBCBUoBRCIMM6ySCERaizCRW4XVb0p6kLCKFXvRqgDADBqyYghp9dEYIA5umV" +
-            "+i2nfAMjBzkMs0GEXIySDpNFkmThAER4Zy0P8+B5+rExj6VnDOqYD8jyA4V9qGEfLL0PDPsD" +
-            "CgGxwgkym8ENejDTGUgxACKaAdVOUjWdKQj+a5SomYtY8QWTLNEJonDCPhZUNZ5e0QkSSACL" +
-            "ztgnSpDAFTKQRZrkOK6z0WAAstiJK9xGuqQ4jA53El0oA8dRn0CFSCLR6OTA1AswpXGvhBOJ" +
-            "K2DAtz9m5JBpHBwPaPDHBs1BFnAyQSjjRocEzEE6X+gFEA4g2M8xxTpeSAYvHEsIAcxtGOMw" +
-            "gSyyIIRkdIqdTfBM/IZxgGo9JgmlQAIhqjU3GXgqGcSbG7SsV4YmoE4KMpjDBZJgnSwIAAmr" +
-            "WYRoHDiMf30mCxXITFeyUD6CAiEL1nUmL5ogAOI0BjgHcAwvwpubZQ5QX8DRV1hAI4NAvDZY" +
-            "wyADIBjY0KMcLKL+hAiCdRzlAFlwyQfeAccckgGVBONAFnNZGHlEKlIRbmzC8plPeeZTifdA" +
-            "QQP52Ud+RGEfYYjCQD3DgAyRxgqZAe0GP2RF0njKgwpVTYY7wwBMnPoFGorIhzfQwAxr2rQ0" +
-            "iAJnRKsRDWaAlTTNYBPkTEWllCE2QtAABiUIXJVDl4peeEFLBvbykiJXgihZuW9g6pugOuKF" +
-            "CVXZCzx4CCY3oZME9OLKOtrEFyHViyH0QnAxwoGWEsylBCdDS6JMxVrmtpEwnXWUA0iFa+iA" +
-            "g3EMwwEVOAe4JtCETQRiAkAAxwTugNs7JMJiiYgeIqQgBFn0oQlCQIgQJCKDC8hgNvv+UsYB" +
-            "yJAEQqhTOeTIAiHo8FoHKMO6dIg1+1Y9wM+QJn7zTAJkevUZq9gmt4DAzG0DBprYlaIr/zJN" +
-            "WV7bFV708zZkSC8vDgAviXxmEdeGqAzIwR2qKBhjGqSDCTbhADjKAhwVu1IqwWGJfnjQgxMW" +
-            "KUjfg575rEfD8HE4S/lznxfWEKcrZqKCZtrEmlrIiU78ApGVisOhJYgHPWAiBnhQMxaVSEU/" +
-            "A8WNNpSRL6ghcBRJAzh84JnPEEKOIJFACRxMg45UECReogiierEJLt2VdBIwiEE+0iXFHnav" +
-            "d3NcT6AyANBBig5e7MXkQJ4M0kGKECaoCW4/oi6VyAIJDkj+yjDowAIfAIIiOJhbGmYzBxyE" +
-            "cw7gyMKmhnGH8k2gFN11hjJel9AmTAAxjM+CDFxDLkIA/iDqG4AMskCHXgwDlwNQtQR8IAVy" +
-            "TM97dNDu6pLQBxMs0weuqRv5SMABDhACWstpQm5Jo9t2k0N/oLGNAGh9u9H4ZjTuHEbthFCK" +
-            "JtB3GDIghm0AUT9AREZdsjkYbgEhFTogIjxnBThGTUAnemuHj1aigzoKHguCq59jJCyhhg3w" +
-            "8PlowOFQYGEL7wOz+8xADExbYg091UrcwIDcwIoAlRMIA83pTIMQWc3wECtQwhDQ3BNxAdYk" +
-            "lihQAgw0yAxQQgLwgP7MAQ+QgGD+mBFGmRFGrIXeVMnc9IJgOYyQcBQiPBp3bNlDOIAWBU5f" +
-            "pURIkIQgbUkaqeBP5NxFnIAs+IAXKJ0mMQWVyIIObB3GcAlVOMynoA64cJB3uJXrCYb7kAEQ" +
-            "WMa3DEMpqE8TBAYvqFoylEIiLAIiJAEDkIMPCMAdAAFyQQCfCEASXAlo/ElhNIUDJcOxlU/s" +
-            "AMK42NOxCQEdAIEA8AJrDQMJQEtuSYG7ZQE5rRJ96Y8MWMUi8EpmBAIvhBMgJAG+MNdh/EYT" +
-            "lMImvtauDNDi8RNigMa7AIL28YLcIIxiTAc5HAASaBDFQIWjyOBcXIkPiJKjXAnGfEfBWQJI" +
-            "gZTGmFT+JRgACI1BI+wDf4SMwwkDFMxHS+1DDdmUBsxMS6mBiMAUFKxYTS2NkF1R0vSQynEB" +
-            "jfBQg+hY03wIDZQYjdlIGtCIDwCSE9CABB1ECZBA2KRBQEZMUmwCIWwC5SCkW2HKBs0BDEgM" +
-            "HYCZDZaASwwKmhGS43jET6TERqQCDIAd6KQBDFiEFwyKD8CABACiJs2BpEQSHexijMTKZw2D" +
-            "5viApRCKRCTKMAyjMmkJcqQBHdjBIiBXN2TH4PmAd+EAOdyBWgBCGTjDAJBBOHGf/4yHMuwL" +
-            "83BAUY4WELiCaTmMFERLBdjBBThAFtBed/VkPx2MFIwDOcTFYtxBICyCHeD+XhY4AzngITyt" +
-            "UxJkgTqVwjipUxYAwvJJxj9RmhCI4ibiy2sRA3IckAK5GyGsT7BVZgVIylkcQHNUVAVIDMJw" +
-            "x9vciZX4QMVw1FkNACHEQjIq43ksgMaog0l1TMhII8jMhzNa43zc332sXA09iBoIw4kwkczo" +
-            "h1OJI45ciBqsGM/QSJHtjIOsRNFQAivURIVskQYSTYtQzp/YxBcsgjKEVUJWzkK8hQT4I8Js" +
-            "2YMNWuD0zUVQxE+kFUnczUjMAaLMhARMSAlMTg9uAqIQSqBEpCwE6CacwEygWSogGNi9Jw5Q" +
-            "BEQASoJBaCKelVOc1ZNwiQuQQxqYwJTAAK99Sm7+SUoQCAAZOFtu9cU93YG5qGgyBEIZhKcQ" +
-            "SAMhnIAATMAwIIIQAFvtgWe1BEtWaEUQ9FNECYG6HQcdBIH+AIZtDJfucEAQcNcFcGUo+otX" +
-            "9EoFdAYZGNRxAEFjqJP+KF9XaApwlEYS8NMx4IZtDIykXEUE0UEFvA0h0CLCXAd1OEoqfErF" +
-            "aJQZXcVcOEqwkYMJJIMytqZripA0xsI+lMd7iIw0bhh9SOMJbRjJ7AMMzRQTOREN5d8MdCMM" +
-            "1YwoMM0NiCMoOJXPJIAoiIEYOEGKkKQS8QCLqIhIKFWVpQEl0AAXsALCVA4P+EQJwMAmvE0J" +
-            "VFmtSQ+hIIR76sRPcEn+L1CEryIrT3jEHx0SohzWVT0OedbnRWzd49ypDzwOONABSDQFXX0K" +
-            "4iRinawFfOIWREIUoGxFlVSGgqUTDIQL6R0b6IxGKrRhEwyAHBKCDNyBPZUBUZKDIgweEgxX" +
-            "OkkBtMXOZUwXsHVXIIADEmQBHHaKxVBiZZVBdlAia5WBVQxX7Y0eEHjsxHqGq9Ue7pkGEgQC" +
-            "MlXLWZDoe01XXZIGGfBK/eDGvvzPaPwTchDHbVjHxZDALuapA8hNBDmJaVJMMdJBCbCkDBpY" +
-            "d5zVHLgmM7omwakHCTEqNTpcI5TQ1mpAfbiUBsgMK4zqDGHADNAQDA2IiuyYgNxH0tQMBij+" +
-            "Fc2o6hUFAHXOGNnk4wxY4BDMwBC0SNuAnM9kBBDAgCvQQJSUgDIogywwimR4XVKER6CkETg4" +
-            "WLYOGt98iShdyUXoRF/BxBD0xAa6gqIgykZgyeRa5IJ+hEYQmkZdCQ3i27I6ykbwWpWQYAVs" +
-            "giyQQULSAT1xzjOlgmT03AXwAji4RmwgX7cRhmtkQfMyV1dIAe3ZZRMgAiAQpQTwBRD0gl0e" +
-            "AL9yQNFOQBaY1QSs2icuQiFGVBLERhbcQXpBQPmUAcWWoWSQzyKMg0So1gB1xgUcQ/0IgGPc" +
-            "jyvO0z+5WrXsiztJ3iYmkLt5RUS56RdKBXf0ASHgwHhwh2KQwXT+0EEFfYd3gCZ3EJgwbp4D" +
-            "COqgDur6Ye0HpUfIxIIBaMBJNQLIXNh8cCPLdOqKiYiCrBiJKQgG/JBwskwA8BQBPsiKTA3Q" +
-            "OEEaqAEXiEIP+VDMYQ2HROAMKEqIEIlg+WqalABuIULYaBBBcKcDbN6WaIfUgSThQAp8bsmW" +
-            "CBZEgkRLCBLhpBGbbFkaQSRJNtYm2ISBpcEQTNI+ukLPwYQDNExjUceVIASiJRPzIIEdrY+k" +
-            "2cqn3IbERFO1KIOwoa9ZsoUUOMAFDB4dlEEiYIwzTAD3SUH0qEqlHRt1IYEzBEJTFJPo7Jos" +
-            "OIMzUIcUBIIPBMIcHmxiOEMZ9AYEoGL+GXBAeBFllBZTOHXXMklBExRbYSLwOGgXtEwXOo1D" +
-            "KQhLYfTTALkaZKLpbN0GbhwAr+UiblHQMVYm5xzMdyjMxdwd0IpfxLinR6DwwFkCbA6qhJ2H" +
-            "AYiMhl2YOtQHx4jMSY2Y/jVRAgaIftDUcl7IyTlViQGxg5RI0swtyFHCheAUgrzZhRzNJnDg" +
-            "DYwn4hwWDeRcKoANCcTGRyDCdMiCK9ypHSkOonGJQegETBiKnHkR2oDER6BRHqeCK8SJjPzn" +
-            "zaVE39jgliRD5bjxRTToR1jaRXyHTripA/QCIpBBt85BrmwJPcHAPT0FOZQCIUjAIpSCd5zD" +
-            "MEBaYBBCNd/+Be4hgWkEmzfn1jlcwOoo7BwAwh0AQraUQSnIUhmkShK4hSyUASJWQOO1U/BV" +
-            "wF+ChiiSQxhMABlIAQQg1B2Qjx0AnjNYVxLkcj8dgBjiRrfxAiomV24wRufxj6b0Xqwh0L5I";
+            "R0lGODlhigEUAecAAAICCBIWEi4yLkZKRhoeGj5CPgICJhIWUiYqJjo+OgYEOg4WTjI2Mg4S" +
+            "EQ4OXwoODR4iHlJWVDY6NgICDgkGThYeXiouKgoSQhIWSk5STg4OJkJGQiImIhceWgICEgQC" +
+            "NhUWNAICFgoKGkpOShYaFiEiWhIWbh4eRgoOOigqQjYyLjY2Ow4OIjY2Li4uMjIyNyUmTwIC" +
+            "GgoKKjIuKjo6NiEiUR4eQTY2MhYWLi4yMgYGGjo6OjY2NioqIj4+NiouLgoOVCoqJioqKgoO" +
+            "Qj4+PiImJhIWaUJCPiIiNwYGBg4SSgICLRIaVComJjo2NjIyKkJCQiIiHh4eNEZGPhUWKhka" +
+            "Li4qKh4eLkZGQkZGRi4uJgYGKgICHj46OhoaKiIiIkpKRhYWJg4OQgYKCi0uViYmJkpKSiYm" +
+            "OU5OShISagoKDhoaFlxeXB4eGi4uLiYmIjIyUyoqPDo2MgoOPgoOWjo6UDIyMgoKOlJSTgoK" +
+            "Ni0uSz46NlZWUiIiMEI+Ph4eHg4SRgwOHjY2SxISSlZaWCYiIg4SJxYWEk5OTg4STw4SYQYG" +
+            "LgYKOiYmKhoaVwICIhQWYjIyRyoqNA0KWgYKLgYKMkZCQhYWIhISDhYaWi4qJg8SMzY6OiYq" +
+            "KlJSUhoaGhQXRTI2Ni8uQiIiJjYyMgoHShYaVgYGFkI+Oh4iIh4eIxISIjIuLgIGIg4OChQW" +
+            "XgwONkpGRxISTgoKVioqLg4ODiYmYgYGQBoWVD4+UjIyLikqWwIGKhIOYhoXdhcZTjY2Rhoa" +
+            "JhASLhcZPhISZTo6Ry0uPhISJhYWFhUac1ZWVhISEhYaGiEiRlpaWhoaZzQ2YAoKChIWWjo+" +
+            "PgwOMhISKg8SOjY6TAIGJhYSbhkaNQoKHh4eWgYGEgYKNgYGRw4SWh4iMkZKSj4+OhoeHg4K" +
+            "ViYqPgYKSiYmMkJCR05SUhYWcw4SQkpOThoechIWThcXSh4iaAoKUQ4SIhIWVjo6QhoeXwoO" +
+            "SjIyQg4OWhIWFi4uKikqTh4eUj5CQv///yH5BAEKAP8ALAAAAACKARQBAAj+AP/8ISdQVcE/" +
+            "qlJ9SaUw4Zc/XyJGhCjxocJUAhVW1BixSMcvZYp4/DJKYpkyCL4UyTiqzESMnziAfPjlE8Q/" +
+            "Lm9+6VSmk5AyQoR8cWMH5Uk7uoS4QSAEqQA7OezwYBCVqNQdbgS42UFjn5umUHh8dZOACA8e" +
+            "RIjYsePGzTizPKBsOLuDrS43FnSt1aWLq14iUG7YIZKFh1Qi4xhI5XGDx90bNAzb2VF3644b" +
+            "bngk1jvOMFrGN4hERruDB43AbqAQIZplNQ00RHTxyHIEcdojULiOy7JDwI4MYKR6wnNjB54I" +
+            "kdF4ogxmBJEER7AcKQA4S4FxUMyoxgJ7h5kMRAr+eIKdxZOZI8OhZEEEJXuW7LE2ZHk/vz2U" +
+            "6Pft426/of0R3LW9ldaAA/4nYFo7IJbAOGURscM4lO0gAWU0RMYVXRFSSBBCGJGTCgQSpWLQ" +
+            "H1EgVARDozCkYooC/ZFKGwy5KGKIEhXCQRmFnFSISkVwINJKRTTRSEQGRQHSKAQRZFNKA0EA" +
+            "wSdfpHSSShCxchICRWD5h1ZMIVDGWkAJ8YMToVjFCinTCBDVNBKw5YZgoQjwg2Y0aCWAJUe0" +
+            "5UYOZoUS2jiCKdbWD7Tw0NsLRGzQGA9HGHZDAjS8IIAuk/LlFSkMuLFPDqHYoVUoU9nBgIQS" +
+            "cDLOCp2twIMEEqxQ3FT+aHFywwpHJCDbETTcwAmuNDxIwzgQcpUOFjeEAgUYNFjACSJ5hvIf" +
+            "KZxYgkVZwB5LRBdQiFMaFngQQcoA3dpRHhEMDGCGg2h0SwQiYBxhiRnSYYHIAGBkgIYZYCCC" +
+            "xhFgwJsFGFjEgoa0AB8xwgYbgAGFP/L9V9t9BUj7cG21IZbgW9AhuMOCFkPYxQ5dJCDyCr3u" +
+            "4MSvnEg4WoUVTpjyiAsJRJJMIUIUhSpfqAIikVFEkaJCCEG0I0QlVeRRISJ9wQFPOTby00IJ" +
+            "pSIEAhwEncobXwjhYkHkePSJQSJ+AtQoO6LEAQIv6FiEEFYG1cg+QtDCgAVW5AB3p1JFykr+" +
+            "DplJQIRWOcRFClt2WFLAWnbcwKouEmwwDuKs6MKKFXZM44ReWfjBCqo0EOU54vusBbcbkury" +
+            "Ayl1keLECiqE4oTJN3RRQGRdiDYZhIlHdsMNTghGCg16NaYXyXa8AOE+O2TBgADHOjZNFjSM" +
+            "Oo4cwJ7lxxFUYdFOAqwcoQwUdkBByAA3+OHJADuIJ07tZvR3RH/vEYGFGeMcYca5RIwQSwJQ" +
+            "jHCEd3iQy/mg0I7WDAAN7RlAdrQjn/ZkwR/+gIIfAKMfIuCGggNKUIAYVJYHEchiH0zAxmjg" +
+            "A0OVzDQScMKEJHCWs5yMBikjCAFwloqilaRoC/kCOYxkJIm8ISH+WBsFTl4SEYZ45A8+QloR" +
+            "duSRNyBtFE04SRRzpooyNMIlEIDJF94Qxa/9wSZiK5FFigCBIHRCJTmyQhD2YYUgNWIUbmBA" +
+            "E4LSlLbkIG5reYoLpNImtjDAMHwjBfYUExdU7G0yvGmhHd0QCiJwIhQSsIQE9vFHzNzFAm5w" +
+            "wVeawoOnhIITbDkLK1xAiiwkYC0F8EEOdGEqz3SBB4NbywsYVxxSbKo0beFKJongBEZexgJ2" +
+            "SMALMsMYUizKbzSwQymhkIM7oW8wYHjlDhBYFgWKYwN4yoLjutAvGuxBf5DJQBbsMA5EEIsI" +
+            "eDjCDcCVq1iMgAbczIIPNsCeLtyvAPL+wkJ2NlCALEgHDANI1LTwuYP3pQ8K1FHNNApwn+fc" +
+            "ZhppEWEXYAhRB42jdhV10A44wYkJ7WAFl+EoC19nmkW1kIUpo8GGCBIFhuTsDTIRUdBu4tKI" +
+            "pKgiISHSziRCtiK8ISRleEMRgCqSUeCsETl6Q0lOMqQcfoIcTRiaQL72kCaUqBA4a8IbhMCT" +
+            "H4AkbQgIAgfc0Igi2OEHCNiH0wwDt6CsgAEu0AtRVoApzRjGBaywxAaWlwP+tckJBbhB5Ihi" +
+            "ibNMAworeIFhNPUVYNqBFW6YkKfQ4oQc3ABXZxVVWwQQKjvElTG62MdZtMKABNyALyzky8ZI" +
+            "IQAaJOAsnDD+bShIdgPfEEEwtbEsFCRACyL4gxXiahQpxuGHLvgDsEQIqGnAUFge6EuZiMBD" +
+            "Ms3giWRmIQMs3IAZTCaXaYyDoVh4ywZqtZsjdMEPZjBlFgZWAHyh9zxZGEHm4EUES0jQEvZV" +
+            "DWE2QMEC+AEK3/XD9dICBZEhBkJ+2ME0uBKh2yiIQWnpAoR6VaHS8OB1IKXB65xwFgn8UQKN" +
+            "4QQPPvGhjODMSQ15CIlcKtMc5uxDRRhF1RBysy+UiCJDvSJTQ3JFldgYZ7QQQtFwNiWI4MxD" +
+            "UopIFJCRpSpCoBCpIEcjNgmURpztBbQI6hssYIEyuOEHQbCDBYIQCgsI4QYW+AH+CzPjDwns" +
+            "USpPecoGUEGKMxEBDE5AHASVCRhLCmFSArDAC3aQKR4UoLIM+JVeTBMKyT1lH6yAm14mZ4Wz" +
+            "SO4sfMtBCm9Aiha6kBQgBvVo0LIHY6IimWj54w78oBizSIAGs3PCgpK5gw1IQAAJiMURZsCA" +
+            "WJhBMf3j9BFMmQA/tGZBtc7COJygHtNaYgBt6hdXRjACEZpBkgQswDTAEAvVoGEAftDueBHR" +
+            "vvttYH6AEYd6/Gk/6fiTofxJy3e/ewTspGWCIrsoyAwsIOo8R8Iii1CwuAJDGqQwZR1eFCle" +
+            "YEypfBGMTwUbznSGkYzYdCQzESIHaCiQKEDAIF/Y2Y3+eEI1J2KpJxaghYp+mhIRZdElRYgC" +
+            "GP/QBqBQ5CGfENIXmvCHn/wBKVsuQxMEsMYcCF0Ib3jsl4PCCshuUtaeccwKQpEDUiSgC8Ub" +
+            "FbmksivT7gALAwAlpR5rByuA1FPJE4sdJKACr+hJK0EQgibj7rkfcEoxnJUAqCiTAydwVLEG" +
+            "Z8CoTjkZCSzaCctbFaVMs5Yu9JIBfphkguwwA4RWGnpBIIUfciWBsrzQ0GAYR1/M4Add+CEC" +
+            "WCDn+W4wjtWX09ZEOE8CsKBPAUNBOthR9u1HwFAz6Fq79fY9v7otDjAgjDYNzA4Wzq0eheEH" +
+            "Ym/xg72/G+GPAWvBD4LQtRD+NA2JMvhXkPoohw2uwssUa3B+UuzuRowQm7SoRU4qiCoKgUMm" +
+            "eqQkK7nZTUDU0o/bNKhqwxOjsDZfEQQLkQprIwRB8EN/QABQBBI481QP4XOFQBFtIACd8FNA" +
+            "4QajMDhl8ANRlANWIAC00Ai0wBOKoRQ8oSoWQBWUwwm6cAPTAEpQkQM5wHBx1CaKQQNY4C2C" +
+            "YSiGgSj+cBb1Fjk5EGl0JARW4AI/8AOeEzehwAp/9kh3wXi64ASNwgo8kAByoAsMsAeXoya7" +
+            "MziKcwMMoIWysg/FYQehUxdCwADYYwEs9BQcphcsRAorAIMyOA1uQAtQYAlOgGvaoQtdgAcD" +
+            "sIX+GRBQsTcAtUEb84EYYMAbXYAIfoAWiKAWR5ABpvUvHQUGYOA35uQE8nJRClNrAVUA/rMb" +
+            "lnBnWdAFAxBQlgAG4QYGDKUw/rCKfrCKA1JsCeAEopEgG0MZAiKMIrQxxchCFxIhFeJCLaRw" +
+            "sEQKXrgWfqIKBDAQ1fhFLmIQINdSM6MSRaMRO6IKMrE1OtEzX2AjOtYJUVQGN3IlnZBlZDOA" +
+            "PWGAo9BSqYAAWIMRNXESS5MKHIARJzEKcHMSUdAJSWEHJygEayNHX9EJVtAWPMBVuvACZ8KE" +
+            "g/EClpUUaLEWoXEZnVY7PMAJHzN1qMN7ZvgginFWtIAXb6gLViB3jLH+J5ehKRIwDUmhC6+l" +
+            "KYkjAC6wRwwgOW4AXM3Ud2JhBaFAA7ZkKIanCwWQOhAiGMBCKYhhTA6yFVBwhgVwBBZAA4Ux" +
+            "A7KTK7UGfg4yXhXiiZ0xAsQBQIQ2AhHAAzkABngASp54YZFoGrRXFvj1FrQ3Qe2Te9thCeMg" +
+            "H9jRbQXQbX6gbnfmQO0RC63xbnIBGM9xdcXmIAvVQbbRQU1pfcr4MSVzdSWDUqzSabsjeIIX" +
+            "V2vRaTzwRSt1ECAiIzgTIhpBMz7GAaNQEjiGVTjjIwNYBDyhY40QRUuFAGiVNKPwki4BkKow" +
+            "ChYwEREhNjgiFC7xCWa2ZV/gNH/wJgjgBnP+9BM/YAdzdEYusAMPSQtFEAo26Sl/lhaiUhqd" +
+            "RnVSwSkSIhg54A9Y0AUSUD95xhY58FY/wDi95Bs84BV2kCttsTxeQSltQQtslEkpt0d34QKd" +
+            "1ISKNXZ5NkwhaWFASBfTcGEoOSpY9wIipBeQUhyXYRoqJAFtFoPpcDizEQv74ALrgWbvkit+" +
+            "AAZEIAFHABu3IUFcgQW8kTyHOA4KdANTcC4MMA7n4gRZEHbttVs+mhbypR6WMA0Jo1cHUwAA" +
+            "AwUD4A/pkF/SMWy15w/RJzsBUgCoUFzDCFENom1voW9E0H2UASkGdyGM0UIM0FFnESiI0xg0" +
+            "oGIjQg5tMFUaUSL+DKEKPVSbUIZxSsMBTnSOVyNUW6SBQOElJ9EJTsMTIPGSQvCPDBEULiET" +
+            "T5Y1QqAQ4/gHL9ljTbASROETKHFGpBAKTeAGS3RWbZE1AoAAiRN3CMkAThAUMigVDGB3lGEH" +
+            "s4VYHEVwlVMAeBNZRBCFvsgDpMQJTgBZUMFlb/cV2YmtFiAALxkEumBLIzhMugChesEXodBp" +
+            "gnIWa/ErdQUocZQAEhBHncFIs0M5XYAZCUJJu4U8UEAUtXFme2AJnBYeNIAYToAtZjEN/jMY" +
+            "7QAFmucJxJIAfLABdnAE7HEDUMAsPBAwIKNPqtEeaYEFlhBuehUemQMYlkCfjkN78mP+fMOS" +
+            "QHLBXwByH2KKGP4wDR8DUbVjYOEhpheFbA5VO4jRBfbJYFfHAyRDGRwmAai5O0ixForxAsWT" +
+            "mgPxfvooIjT0mh9HQzlUCEijNDZVElUDEjmiEgAoqVb0A3ATY6PQCS7wkkOTCmVgBXMEEuSg" +
+            "CpvqBp3QElHQRHbAE2ckdF/QS1ZUCKwqeHMEAW+QK2tUCE2gFrXKAXnYFHaAAILjBivQrCyk" +
+            "O2eRDhsgYjwQCpTxSdIiBznAAKf1ZVbwA5oUFLSAFEohGXtUJqTTScAUCgxASajrFbsjAPvw" +
+            "aG6gF09QKYKhF5wlGAJACnVmBWuGPMDDSjzQnZFxg4PzOpz+RlK2xQmiNQDjYAU7wAfjxAN4" +
+            "AAYXRm7PEYlNGQspKxfZ8hxI6iDq8RxLahoDUBgJAAYJQAralSDaoaTok1wM0m270YNZkA78" +
+            "A2C4cV65wVAJAFEbIxo0sGC/YlGGIowLtmANvH3dByHh14sitKG9glKNsQPKixSKoRdkyBh2" +
+            "sCHkeLcdByIQ8H5ZpDQeERJeGxE2QjPH2REnwY5DFZBL5BM/0Aki8YEukANvZBHk4AKeeiOq" +
+            "0ARWsFVXVATkgABN8AW2tBNRIgBfcAM/sFU4oQtlYAFNMApc1QjR2wlw0wkeJgRwgwChAKtC" +
+            "sAPpoDiZshWh0JMpI7oWhkhYsDr+MLQWbWG8ceQYwMVRe4IWmJEDE9UWvXKTovMmTqEnmmIF" +
+            "v6u3lGMHbmwokWYof5toDNAU3rIPpPBKkcVqbiF6OXAEbhYellWfMYgncsAD/mAxqmEguwEG" +
+            "GxML1WUH3yErZoAGduAEIwAGXmgGAxBMpJcD3kHCWsph7ZEg8bEDt/cr+lQ7UDANBvMWrYEf" +
+            "7vIcBQYYCYamuVEWqsJBBVCMFfIWH0MZB9Z9RJsgEXwgCbAHXLFCkREZLMQADNcYr1pbgtEY" +
+            "wfBU8veaRBI0CUERELBUtFnESLMjFeFjXjslhSBURQy4TbCSV9QSeOESDwEiXhYEJyFU5EAU" +
+            "SiF0hUD+Di34JWJVBp8QOkGwFDfyCZnHEy4tAJP0E1LjJlbwBbTgB07QnWJ2sG2RuYyxah5J" +
+            "pZ1BzYQ2rqxgWi8waFhnB6giKqNSW3FkF1mBFLqgoE+YSVZAC5SDZUNHCl8m1FnhhaOUOHhj" +
+            "GHnGAKhzWntsGoAiAFi4OxbmWr3ylI0Dr3FBLAKwXpRSHgmwDxvgCRvACkSABqfUXlMgSJZQ" +
+            "O11wQaexAfY5DZZAaHIxKtqEJmZQABIQC1hQsAG1A9N8ewlgCdYxbAXAMH5AnwCGUAxDHf0B" +
+            "mRvjMQnSzg4iYdqWwfK2MQ4cLBLmICOzYUCYQiBmhpKxcBypGAZBDhviccn+mQolYhMxfLf+" +
+            "59EyYUUnMVQjQTMt0SMBeY7nOAqNMMUcsJJjVgbmzRSY+gUEIARO4wZlINJD9QVgMiQZ3QYM" +
+            "EAqe6jSfQBRRZBBffNKFIBSbMrcKKQScsBRVgbofmBuJoyo22Eihi0jqtK63FQpdkA6oxipI" +
+            "YYN7lEl/xpLbOhar1BZso8mhoyeJsxanyxeeEjqZMimG8RRc8bsVIgC+UdhbQQSahBhegbP6" +
+            "SgpWcB1znA56kYs3IATGBjzps4xvAZg00EBWp7Gx5w8Ve4l2gAUZMA6lRD+c8B48YE+dARgQ" +
+            "ok+5twGHZUp+wLL2NWyq8S+Jwl/hBhgB1R61A5j+EkZR7ixC43CfC1Z9BxZh2fcgIiMy9lxh" +
+            "FhIZcjBSF3YWldRwWsgDMUxzNJcQMawKqiBDLVJjEa00kIrDA+hDP+wRslkEjfADFtBUPsEW" +
+            "m1qdnQBZUQRlPycmPzAlXvYlAtATJ6E1SFHfW/QTbREFZfBFKSgEBP6Suf4Hc9IW+zBWUNA5" +
+            "mPIC/CwAojs4nOAPprUCDbI7gMG0LXQXEPkCmnQDUrtow5QZtSUALwA8mZRaUCsnqOspieMC" +
+            "Kyk5XIYUX0HuMj7J30o4pxWDPKACxAqD2N47fjKau7MCfsAJfzQONLA555EZI4AFrMAAGZAB" +
+            "TkAK+mJtaMAgCkMdjFj+b6tYAFnpLvCEBf5QsBvQo6ONpBCSBZmdXBDVGukDv46jGpxw529+" +
+            "XteB8tT35yOkb29RYRN12/82Dji7mY5HYZTBQqaRKxc2KzAk9YJXPHs6VdBNNBDgcVM1Ijfn" +
+            "j0pmEljDqOeINRHhElPyjSCxnW/UCZ2QoD5VRWKSNkDlElL4ZUARBWyDq3r7E29gBYWgydYZ" +
+            "BUkRkEgDATbdBHsb03HzA41gBVhWBi6wAnvjBkEAogy3UY/F1MoEpKXBQm3CF54sFQXglqFQ" +
+            "FlIbTGJBC4HjAu5+Sl4BKqbzWPvghAIwWG63SZClgH+k+VsRkW5QIfuwD8cjBLVzF9PQFaT+" +
+            "EBZv4i05kBtbUQCy0W00kAOMuDviAD0F5ThpMV49SBikR/40sAIXX1posAGjNw4C0F4ehgVg" +
+            "cANyQIvGAz2zMdr3y0vSQQNTAD0AMQ5LgnFZEiSAMq1LFn87oCQg4o/IjobjChDh0aXLjh00" +
+            "JHSZlmDajnE0xnHqcvAgRxodOe5IsMOJBBo1u/DAmfMGDxo8b9xwwoNUqJ08GNi58edPKqUQ" +
+            "vjxVlSoVOVV/VEGo+udLlFGqojwFm4rDqCJfRn15M6rMlyJvvqxNZbZIqiJlGlmw0KhQJyFu" +
+            "hDQqM+qPlSBu7JQpoypwox1CEAgpgiBVEx5CWLkp84OumyBlELD+VWpByJtGSj0LETIqCi3W" +
+            "FtbmkODGha4goaDYyUHKjp1QoWgkCGWnCxQiEiQcISLHjhseEyWs2DFt905drFiRYqDLzXY7" +
+            "fd3Q0m7BzT4XrIRYyaELdXrOP1z8EBJEly4ETQSQciOewY3LdiQsJ+WGF3jwD6f9VnBip5l+" +
+            "Ggenj3jYoYuapimAIH+ymGkDM5xowR88dnDDDzz8cGOcCAoQwBI+NnDjCER2uMGPWHbgAQow" +
+            "djgOChqcEAgVJ4iAYpwbjjiipnQSuAGhlrAoYJwNEjoinWmgwIIIIIlEbhpLCigACuL88GOc" +
+            "Iwgiwg8iYnqJII1gismPacbZY6OSVhr+pyQeEpCAB054WIET43AKipMbjAsKxxsYIIWHnXR7" +
+            "gZw/HCXnk6aq2sopVZ5i6tI3oirkCw7KKKTTQqLg4CmntgKr1LNGaQQwDhqxgpZOykilDCF0" +
+            "saKsRuKywwo3ECijCAhQs0KCJhohqwwIOnFCiCZosVWVN+xAoJBUPiHri8/UGmUUaBuBtoxY" +
+            "G/nBrxx2+GEfK0nJwbAdSFnBSwJ3AAOKoHh4sycJiHCCgeBwa3e7HNoVT5d9hNjtsh8E0AUv" +
+            "XcpL1w5dBPBVADes2Oey7cp1Q2M7nLBjnxx4ckMXCXbIYR8GxiHFAgaKUxkKBiz4kZV9xGRF" +
+            "AB336YKIfXj+wIKGmz0Zx40E0OBknx2y8IMBGgo4giZU/GiyiyOyIOIGKEZIwI4szIAxCzBw" +
+            "GgGL5hApQIIssuDIDD+GHKALJ6gcBwqsicgCCj8seWiDLLrEeoMqiRQTC3/8Ic7LcSDqom6O" +
+            "siRiHI0WP6LnaaaZKEKYduDEph1/K7Ql41qSkCYJnKABOwaMWn0npayCHasoyljqCwg6hSCK" +
+            "Ijj46qlsOfjsjbjA0ooDVUr9opBSFRPCgk5GSaXcvGYtg5a+gv2ik1Q6OayTN9b6wwW/MBOi" +
+            "ky9yLaO7Mjj4A1S2vmikCWzVeiyKVJxvfq5yf+iuiB2IYMULZJOAea1gZFTagR3+4hUknERE" +
+            "UaxQoFDcEAoezEcXdiCQbHgQCvFJIAEp00UGreAfAViGAajhTcgsIAABWGAf89mHyybGivmM" +
+            "RwA30A4rKriPGZCiOkj5CQ51QUHehIIBEkAUTijohBXUBEEwKVMXdOGEtbWAAWgwA3++xhM0" +
+            "vIgHiEBDR9BgkAKM4Ag7uFrliLCBI0BtajCBQoUQxxEu0YBwRwDDOPywgYMUwEwbMNMRvPQ3" +
+            "IJmJb2WC00V2UCEoSk5CmCNCSMbxvwi1hCQn6wIn7gWhjtTECUzEJOryxJN+6QQo97pBVRwV" +
+            "hUgpJS5VuRRWtNKps1gLLO9LyxeGB4E/fMUpwxPeKFD+M6tRIOAy5RNWKiz2l1F0ai2yaUKw" +
+            "gPUHOwigEX/pRCE+0QkEcMAKY+HAJ5IXmSZAIDCsUsusigCYa0LLBaEQggBCwRweWOBOwWEA" +
+            "jexABCYdKgGWOOPpYGLEUESSBzrcE278swJdjEwXP6BFoiDKP1b8wAI0dAN8LubC7ZgnCBjT" +
+            "qHV+MEIGjM8J8xQCTsxzp+/QgAikSCkRemVHCE5kglDggRsux4ppDIAGOTCDGUghgK/15GtE" +
+            "iNcICvC/AUhkj/7AQp3WVicwWIIT0zBDgwoAhqDEYgBOG4Ef7ACFWMxkAEfQxQ7SEYqlYQQK" +
+            "G3DC1ZwwjSwsbgORC5LjENL+JMNFxEp6s5IfIBISIjTOSilZXOZqwpEEcGJzHvHICjbSkY/M" +
+            "JAE02ElPdvKCzs0EJzfQ7CckJSmlSCoqsrPdV+yXilO5BXlfuYpWspK7S6FlK6mAXrea0IlO" +
+            "FKETI+3MUwqRviB0BntC4ID43vC8uozCDqx4jG/l14QfeEYVqhgFOczSiSYIoX0c4EC5LvVb" +
+            "WvygtwwQoF9+cFc7vCBRvPEHJ/yzAUvQaG46IgUn/GGJPfBgX3tglx3wIz6K7WOkqBHCPmjR" +
+            "BF85phPbCQKs9lFcy7gANdtxDC169YYf8GAfCGDODSzmm/w4raR2oNEFFzcvA/mpUDihrEkI" +
+            "Ygn+RLYxFnXaqg9cioYj3GAcI7iNHzxRAF1YAg8J0EUWEHFQS4wAs2BIBwYHcJsEmAGnDiFg" +
+            "G53QBSz44Wl+kIBArETj+/aMOG0E0l39gJwjmKlMEfIDFElSWJIsDk3jGEmdzjQOxXJkkhyZ" +
+            "7G88ctnNOcG+PKFJTfy7aAPZ4VGfcNRo27DKP2AFK0zRCgSk8hXE6DIKXlEtL2ebCmtd9ywc" +
+            "IDVr1lIE6wkhWOQogir6kry32M4NDHa1EKKw3C/4pQzZTIUQahWENwDrE0UYBW9p1S27BOtY" +
+            "ZbAwuPxCoH1gkEA56FOiKESKF2zVEhIIxXBw2oXDCcUODBBANbdjATv+vId/KRNPuS7slyCI" +
+            "ZzwWoMW6fzAxX2F4H1aw2D7SzYqS5gApILsggViRpBtUe5JuGFICqg2FLrjhODRgzjhcMNai" +
+            "rZEBnFDHEUqkDCzs4whDFsAOgAxxMGDBDjTIgiUIAoUjTHKNRzB0LIIGc4xggW08GAAW8mkG" +
+            "jGxgADABAyok4AcocMJJfBScQOxliSwIskpvJYIgMXeRt0Ikznzmc+bCZKWJcIkITYpkdOrM" +
+            "A9Qx1qVyyhyPXpJo1PGERh0Z1OpwwgzRijZSfH/d67xC2sCbyilL+bRXvnBdXjpKtk8JVmKK" +
+            "4JciILsIQqhuYL7wB1T/4Ad1yZ5ZcoBgxLT+zw7dPRYtBBNNbpW+W9cUglmChfluvcAFv83e" +
+            "NHKaUUENaAcr4AHTJaALTrT8XQ5pSE42yICRJXBgnFtOiLlDihjm4Ch5cUO7znPvkj33B+nZ" +
+            "R7XVY5no+8c8/lEPxGkAH1IIzZ5CSzkNqulfieHEXfzZiNMwYsczZr3NHeEnuLoBLLCEnxiB" +
+            "LPCvMboBIkA5ImgHfyCFDUCDcZAAS5C5HTCDM4ICGkMjtNtAPqs6iDgjQWK6u9oqf0AIvKo5" +
+            "LDgCqIqayEkAM/kfPJMIgngJxoKJjSC0/4mcxbk7xzoZOyOdPWisRTuZTvIIltiRULgXCbgB" +
+            "ZPgEZJBCZpBCSXH+vNeJgl4igD94A/uxiqdwi17StFSIgk/LQqbANLZADQToFr6ADF0qBASA" +
+            "D9/5gzZogr1oArYINrawA/NKjU74FItCAGCZlVorA7/4A+VphEJUi1YBFgsYxOVgMO5ZjgE5" +
+            "ihXAk4LCGm4jqwLYj/9BEgyquUKBEVZwAR5okO14gRx4j1W0sO0Yj/iINwUrGb/IGFr0lQO7" +
+            "mCDImJzZh5IRgF/EDcO4ATe4D6P4GZZJKT+gPj4zmI4QAB4oAAJJB7QighEIjhHwBCRCAzSQ" +
+            "vyzAgyPgAXFAhJHIAjPaAZ+LHKb5knGIhYnwAyzoiKojCZkbQCwALaZhACqBkBvjgSf++REM" +
+            "wRuSODqKOIi8OqMdiDOF7IhJ+gjESpOM2AMakJOWELSYkJw6SQDUWawGuaSN1DGaCArQypOa" +
+            "iIme8IiZoBEeQAa+47so7Lu+q8NPUIU2uK7F27ytsApMq4oyVIosDLzVegvEQAxpCy7curCy" +
+            "+IPsGgUrmJU3iLDJ+AwrcLXA6ARkCRXUOItV65a6uBRk0covyIHyagJZ4wHPm5U9McaRQUWK" +
+            "swO6OoKjcIK76gk0wgj/+L2jSJiAEZj88BWD8Q5Xexa/6K51q7bxeLCQwbzlQACVyYFYwQmq" +
+            "xCBW6ARWEBRe7Ih4osgcYAWOQIqDWJ2agxB+qZFpHAcpmYb+emmzeqE5mosFNBOHwDKDApAD" +
+            "KEAECWgBMBAqBgCDWDAZNNgAXUgAcUgAUsACsAmFJ8kItnmBI9iAG9iBDViqLskILOAETiCO" +
+            "6BTHt7IjHVEkIIEJH5yIy0mJNCEdObvBtyssMTm7l6CBJvIvHNEcNAkKmiAgUpIJUvAsRQEt" +
+            "zOo7KoRJv/O718mdStOK3snC3Pm0xeOlp4iCNsDCbukWtnCV6vkBZHkKrQiWQlwWrXC1ICiE" +
+            "+PkDYPk1WxECCCCLRXwMWkAAxdCKWWkfZCMmZBo9cDnEFci3F8AgFJuGc6m6REEICTC4ukES" +
+            "RLOYklGUYOQf7cg+dTNG8RmP5/r+jl90j44RAAgyxu1gGFawAIzpGBfgTIlhgDEtGQgy04Wb" +
+            "mO7bDZNJIB6oOf2cCFHcIIVUlCyQP79JEk/IAlIQspJLAD6wBAHwAUTAAjegATPAAl2gATAg" +
+            "AkXdABhBiC74CImoCen8DUvoAjsogKNzUyi4gRU4IypKB5PYgI1AjkUSrKojgmqsmzEpkwRo" +
+            "sxiEghxsiSBJgAIAiUjisylBDsUiCIj4HzOpkDeRz8vyL4q8u8VCxZi4LI/Yk56goGOlASiM" +
+            "SdGSQmr9BALYQqXYvKx4nW7FwlhaPK2wikupC2RLNloohLNIMDdANuP5Alfji9LTi0a4PQTQ" +
+            "FXIQl8/+SB7IWKdCEI/SoB1n4q3K+wv3eAt4ospU6Jx1m8YccCzOQsHgcIICABkUI4KfMjjo" +
+            "CI4XiNONkwBOeBi2y6DdoJgnDT/D0ITCkBgBoKgorSYhGFMuBYpqQgpS8BUCEQ/jKKF84gxd" +
+            "GAddaAI+fUYiKCmLQIqzYw64YoUN6DgzSB0wAAMPaqM5qTmX4LOWcNp9Ik5dOAI06BdxAIMb" +
+            "IAUzyALfsDJpJE4qmlUieEcasMDCqpcdsIQNoAG7+Z+7Uis/QAWaA5KJkIi/hdVJstUz0YgE" +
+            "GA43Eyx/qDlg/bNWDQmN2IgdabuSmIiaoIlBsUieiM+i2JFD24EoxNZq/YT+NSC8rGgDSwu8" +
+            "n2SK3imLzYsCCNC0X/NXtfgBXVoK1NiH9XmLVHiDvECM8gm2Y3EDvngDWMMuCPCt2HsDN9gL" +
+            "YaoeskiFRrg1xQAWzHsWcskp71iB9qKRCcIIBtCIVWwOGlABw6iJQ7mBLgCzaBwJBnCPG+CE" +
+            "knqBG4hZ8VgmC9if8rk3X+HScsEoWEzZloWgagqYYPxF5uiOF5IYwzAKFgqhG2gB+d0JmAgQ" +
+            "xGUAhOCJgaiRAcgTRGgH+w2q/xgAb8yBLEADJBObHbGy6BiAwsIbvWkziiMIVKhVHRETjvAS" +
+            "TiiARxWI+LKSW50IMUuAwD2jLnBaILG56Kg5zJH+m7Szs8hRSDSbiJjYiInowTNRk5VAwpjg" +
+            "F474Cbaric2tYEKbht/YgdEF0DUgh5cUrT/I1m2FJdt5itSdlAztnUvBLujtDNKwHs17i/JZ" +
+            "xEZQhbKoHm6yFe0xL1uJnyJon0sBlepRveD9lVopygf7AVZZgYqihVQIBU6wniLIp+XghFA4" +
+            "l3FYAVLgiJKKTwaotv85KObIE42pjmDsGJPNN/FBDdagyniyGaosDy3tFYFbjr64gRwQD97I" +
+            "qI9hhSBIOTug3p/4RflbmCZqHo6wjiZxgZfJVLqVDiIAGxpAA0/8GjTyhDM6zjA5ghsrLCZB" +
+            "hS4RJII4AktAnapb3xH+MNojGAFFsRsdwhpWIIKxKdsNsINx8KkBjEsiKMB0TBAraQ6z0aPm" +
+            "wAims6OMPSwrkTGRkJAISYkzuegw2QgKiZwuCRKNCAn3ROnF2RGc0BcasV/QuheO/By+i5RP" +
+            "cGNrFS0SgGMrbIMyxIpu9VbYAosC9R1u+Yu6QABa2IcmQDZQuZj4+QtzsotYucoQHYVy0Qt8" +
+            "FYJLaabyYUMLKILP6wTWaEQ53FD4cGVfsQCZ8I5yYSLYuM5QOBkGsIJ32oEXEICR0Y0j1QXg" +
+            "aygiMsYUmpgLYtKM6jdYHI+BqQ5YbFkB6xhgNNMckCeT1QUcSjcesBhFqb+7PJQ9sTv5rZP+" +
+            "j8g6kvASK1FVM2BU2+wx2yyAgs6A25gGHpuBcUAEJNsARJAiKPgqoNmAI6oSfm4QJ5nGiMAR" +
+            "GRwOGEEOTsg6fNERiU4ArCGTRQrcOApiK4mQw5LBOPKHMLEIIHmISJqGmouIMHGzOiEJl+AI" +
+            "TkJclqDA02HplXbCDcqJJLzWKiRd0bVv0/rCTANKXXoKDiiCT4sLAa+8rmyEpi4v1Kg833Ie" +
+            "bmqEFi0fZ8G89UGuyrsmBJBq3/qCfLOC7LEV8zJrcPGOVHABlMmBQxTHPiSKHEBBCRiQeXkX" +
+            "yVYg+buMT7bZRaKB60DFUHgYCmKhFOKOYiwXF3DZBLvSFwoFi7H+APsNvzFNWaPwlZ+wDkML" +
+            "GdAyD+hkBStoDomhcohrkH2ggbfRhS5ZHTNgESLAg59AA6MVGzvwgQwYgJdruU+lOo/YwD3R" +
+            "o8tFnJqoEuHIgkwdSAbwOZ7IQDs4AizolyzAglA4dI5go//xh1qVG71xiISourqpE0ASiMSK" +
+            "iSZGQYjw2y9pozZDJCvxIyqpOS4xb4skCGQlCU/iCYvsietECkXrCT2ZCWqdQmZYA9P9g9HF" +
+            "VgKoSXK1ClHTCrBoC7DgtAc3WCsIlk8RDdZoAmG6yviIplaJnrEmPQg4cOopA9eAny8wr1mh" +
+            "BcConuzbHs/LAfNyAS0HER0lEDvghO7+5Yho1dHrJBCGoYl8PxkCUWXoa6945w4pHTjy2I1Y" +
+            "tALtaJ7sq+XvMFnrEIB8s1KGadmO4YGAGT70UJRb+XKgdQL03QEjgr7y9TGKU0iyW7ODKJOK" +
+            "zRtVBgNxIFsziAUGcAJEGFsiQIQ9BWcwO0488ZvLYsE50xGHGM9ZregZNIkqeZoiqSPEybqB" +
+            "qG6K86PopoE8y/OzG44KUdw4WpzyrpO3cloZLKyQBTtPOknHYruQBZRbVxQ+KQoEYUn7XoP6" +
+            "1vX/bAPR6unYbYpvRRXf6ZSo6JbysQvP+4FpZxUM461GiFe74C1ZaTb4wDy9CIL2QUq7KAIL" +
+            "OJ8iQI8c2PD+TsC3a4oVK9jk7uiEM2kXOwCOcwGO3niBkFUojiAFVsgBQ3sgidkNyT4K5tMO" +
+            "IteO289yzBsfhPELIRgYqjSMPiS/g3GDo8AYAXO19uqOEDqhEaqMCRoqiFuOQcmplQGRggaR" +
+            "GhmHfRoAoxgAcXiZDMjYdmBGFCYgM0AEjEDh+PKDrJIALPASqLEbHJsRuEV0GogFnAKIcWBo" +
+            "6PKThcaNLAncjDvCgweUcQygOCSChZMTKDt4+CHC44hDKFBoQPHDg0gBGuOIcNpxZMfKBONS" +
+            "dul4hAiRBNPGiVxp80iXAgX83DwidNy4BES67EiwAiaNqC13OJGAcOMNHgh52Ln+kZWHkxsI" +
+            "kSFbtoYs2k+fkK1Fy1atWlV/5qqCAOELuS9/onz5kirVF1VfiowqM+pwIyFuhCAo84Vxp0Y/" +
+            "GhWhlYoWrTJlhEwu9EOI5h+0hPxpUoTwFytNLKRqklhIJyF2RnWKLbqIrhcvaNDKweNGAgah" +
+            "SJFasZQUKxcvHtpJniDBDjsvGEjgIWCfGzc37DR3I+BGDl12uOoSwP1Fjuy6suf44YaVAFa6" +
+            "wrNi5Wa9APHZ76fPzwC/Heu5odV6YuliAQM7MDBgAna4QQMR28F0Ayk7EOHESUTs0EUWftQU" +
+            "yxF+bLCBSFBkMZQlWcx0BBgJ0ODHCAW4BEYXPMSSBQP+DJiRBSs8oHHEPk6II4EARwzAAwMb" +
+            "ZBHKDlBEuAMYXOFkxw5+0LADFuPscKIE42ABkx87SKDRDv5oqGFM4xDVBU5EdNTFTSiV5AdR" +
+            "KCkFUgEbNETRUEc46YdQQBWwVFI77ECDVYhq6QSG1IXF1W9aISqBVTzo4xZcbr1FFjOfzDWX" +
+            "p1980sanbQAGGF9zfTFKIahxUMQXZVggRBNCNDLKa5u5EVknHCDQSCemTVbYKKCN1kmsp0XW" +
+            "SCEuFAEbZ7QUBht6LtBSRAL+ONiIhjm8wAknOaywQiguuCemgwIsR2FzL1TnwncrODHfDeRy" +
+            "V511doRinRUuOLiPbOv90KP+g26EwsA+VrDioBD7NPeDFVkJEIQbTtiBHYE55CCBgww4QYod" +
+            "FW7Hg4JUTuPVc7roMuENWEBxwzQZaJjFAAz4k8FGiFhiBxQRZKHLERnEYkcCZmAhAA0bEEH0" +
+            "FHtc6WRUBUCBEVFgOUkKEQPQYEcWEZI0DQ9YHGEHTxIkMEABampEhNIJYJHTEdCJzRNMTiZw" +
+            "hD803DQNFDIGChIR6aDUEdv+HOFyASHyZAkRM7mZU+MwjeODUjQwiqEToYQiAXHC2cHADdSF" +
+            "QiGGWl26TFlkrdWW6m3BBRddc0Egl+ypRMGXX0UUMkoqhXVi2Be1MfZFI2U0YkFiP/zQhCqa" +
+            "FWH+vBCgcZDKD7Eu9kUhZaRSxB+SCaFKI43Q0gkCbkgrxA6h5NAJLTzo0sUNylVo3A7zTWeH" +
+            "C/6Gvo/D+/IwOg+64APuPIQ4bggZdxa2r/+kaz20OKB93pOe+4DMDVZIj3ywc0H7PDBAQrCA" +
+            "LhaEoPrtY2USuKCL7rODPeRnBzdwAykQ4jCPPGgkuiCCJbKCNgYUIAuG6hsP+FaAoDAOJ5aw" +
+            "xDhOMhIB9DA6/tAazzbAlSxsgEkDkAjbEuCELKwNah3ZQQHexhFLQOhEFtGQiXaQoipppCd+" +
+            "8EcX1IQTMxEhIg3BiZPqmDhAhYgoEfFTRxJQAJm4qQsyGQdTDsUUJ8j+pDpfIQ4pHsIVdoUs" +
+            "K1+JFOpShwxmcFJTb1FLp9TShk+Qow2k+sMp/0C7uQCGNkFwzGZg9RfGhK8Mz6tMYpoQG8JQ" +
+            "phNFUF4jHsMBw5ShNqNo3vYMYwE3PEYItPhMJ1zQiQDaQQCNyMEG9mCHHPhDQS1xj29IkZ3x" +
+            "iNMNDNAXA8fDAzeEJwehSCACMSgeF0QPXvxzjwA+KABSrIcV79SFe/S1GIPtAwEC+A/FuGJB" +
+            "AfCAnwhU2UPNMx4Mgaya3OEndXzwghvw5CFOusGWuiCBEUAhFFAwQ43MMIIdcMIMZqAUGmKB" +
+            "oQ5ZjQiWewknHtc4Oq2wITToQt9UkoWHGIX+ATTAQo0i0iR/cLSLSfHTOCwhow0cQQI44UgC" +
+            "OIEUlUBBKRuYxpv80Lc6EsEflqBIHvHoD6XEUUvPSaSFdHIlqPBAAqDL0UOo85sceeUrdvXK" +
+            "vi5FFn1kEi36EGymXqcWAryOHHOJwh8+IRi9/KV4RehdIX7Fu1RoZhTBs8zvwse+7QXTMbSs" +
+            "TKxiJYQgtIoWfygCByTTiVH8wHjucQPz3hkgg4VCRjldAQ9W8AL22FUA7HzIehyGQO/kIEAB" +
+            "iuTFxikfN/hLZdN9YATHmR3PbecG5dGFd6XbMO5kB6Q8wA5VWJEDQ7nBAiR7oR0KIAEG6YIV" +
+            "FXLQhvT1tvGc6Ab+RDDDOIRkiS19aRxU9FMsRGIJMzCuAGYqQEuoygBOZKELdujCBjihCwPn" +
+            "yGUCcEKL9mGkrpwoQV+6wU0YUEc7OAFtYctCRnw4jg10CQpdmMaXBPnUadTRDzy5CRSoahQ/" +
+            "JU4kZhWJy/xBxyPMZCZDbApVqhNgF0HoUHLAkFdyFEnO/eadkvyNeLoiAWQcNpPLQN3pWqc6" +
+            "ZpDjE52KrFrmMso/OFZ2qrjzFyCQClX6pQyNKYQq/sIBVpWhCdo7za2akJng0cYziynMr5rw" +
+            "hdEIIVbFE58FnCUEa/0gNs/0QwJeYIWTBHcFN3jBvtgZCuA6SBf7yoELsvO/ALmggOL+2dd8" +
+            "NPaCbR7UQb15jxt+8Ln9DHvU0XEQkvDXlRsIwTzlBN17xuNdvV6UFF75zQ26QIOHOEFMdUXS" +
+            "SWoEZUPhRClUxHAsNgQGpkJhBOOQABbwkAAebGCldjiCGbyLBUuAzMG+sYSFTxIdvRFBAk3y" +
+            "iIjEZIkjAGcDCnITvWm8g1jgZAAOP6vUXiJIC5GIbR1524zdJBKSOEkkOFw4kUcUZKKIjQhM" +
+            "ZitMmkLlpqgkAdq+wV+7W9eQnZM45HHksm/ghDOX5cyoQ91amKE6crBlk59gLKg8JXVPofJT" +
+            "q/KsYGB1Z828wS+qmN4oilC8whTzecWkhQVwVQjYIOA2RfD+pRXKQAsrMJN4y3rgL0PhnjL8" +
+            "YAU04MRy3Kk+g9mLnSxekHbC8tzSNWc8K+BOVhq/zXJyp77BluABxWNcdt7nP9mxtoB+w7+u" +
+            "rGc8DLCAANhr7Be+YCMH1NDnYM+Dee/jBR7Jgd5ARhE37MAMR9BFu6uChgLYIUVy6AIaLEEy" +
+            "o1FJbDVNn0uIoAsanGi9PgTaBrySBSyIBQwFCBsWDN4hFI+EEwMAeCwGgu/GgUEjWfAhFpAK" +
+            "EjVWOMh3c1L82fZVtuEECw522RFYAiq4HFEYhcnhRCBxwk/JC6VciVY8B3R827aRAoZIgBNs" +
+            "G+j0FVhgWYDQwNERXeoU1qb8wSf+TZ1igQo55MUfzE5h5NnbjYKqEAb3BAaxEE9jPAZn0cav" +
+            "lB0tvMFrBIH4vMFsKU9tuIHx2MEPWED1jNM6uUAQNAV1kcw5uYdVvBArcALYIIe7bI2+jE54" +
+            "iEcObMd6iMc5JUwOiJMVLJMACIAV7ENzsQLdhcw4bQc7RZ53VF7mGZe0QRTkfY5YkAdYnNPs" +
+            "cQUNBIcdqESAOA1DJUAoLOLWqARVlBVTjFwCkNSYmMHL+AEiOMQRKIQbnFR0YAEYeISSbMQG" +
+            "FEC3OYmFUIRMiISFMBlPaMRKAJUZDAoYOFz8zViWEEHXYMlQ8AneVAksAhlQ+FgCEEUs2sRM" +
+            "+MM4+MP+KUIBEg2KzT3HBdbVtm2gVhwKVUhKdXxOFVYH6OBLV1gjyXCM0RmdJrUOCYBSCVJd" +
+            "m9FZnEldFHhKK+1OIfiS9gRaX5zGYOgZsSCaKsAKZTTCrhDPK3VCIWSHEIxC2mVGI7hADrwd" +
+            "dVnBA1EGSwmA8pDCOymHcDmIC0xDFzhBflCJBJQHRFohO0FUfXEHd4QHS+rCBQFUGlqQBs2H" +
+            "cQlAc60kAyCHv7gQfCCXBVDJNunCb7yHFO5DJP3HyjjBe+yAD4AMU4iHoZCCiiWAbyzFgECB" +
+            "OPnJeFAVvZkBTLTDgA2AGcgEIphBwXGRhWyfhhjFmUCjBHCIR0xD19xAD1X+RyxswMqYwUNw" +
+            "kR0QwSjSwPlBxABsCFpyiJVQhBN04gokHA6tYlPoSTOWFVXxxFopzVjVUUMMhVg5SeKEyKAk" +
+            "hSR1W1V0GVM04ENsxDVmhbVZW6Q8xMiEBcjoQgMQ3ZnVZmG5Geso1lowFmPFI5yRgyo4FmDc" +
+            "Uqw4BgfURQvGBvZwgF/8jmbA0he8ymbYymM8C2yYT/DI3WdQ5BewE2dsxg/sQxe4QHJsk8Y0" +
+            "xTr5V8E5iL4gCStgxwKFGXrmQI7cB0vykzvRpHnsgxIKlGLs2uidU7B9h0fioURF0seMBwFt" +
+            "GwFthx2YzXZYlYLwQICJRVKQQgJAgcWsxLbFzVP+dMRJZMFNsGUnvk0WJJib7AhMjEBF/Igb" +
+            "IN842AEqjEAX6IKSeAUm+kb7gVRd1lFTdI0EbAAi7EQ7yAgYXMRJ8Vjb9CKfiMSQ3YTSEE5Q" +
+            "iFXHzcncUAQvAlnaCFm5IUUX1MhPGQpCbFtYaNEFXom2bQQPvEBpSkAoyIEE9FVXvKeBouOZ" +
+            "HUIAeJLrOB1wwsUojQo8StZfpELWOefzZA8MqoJn2VJk5MWqNI+t4MrzDMZnaMa1GEYnJGEZ" +
+            "uMGv1Mb60FYRRNLcNcLoQKS3qFfrAVdzWaAcOMjCgE59uQtXtEt9RNtQcod5qAwpNJcb7ENy" +
+            "tFd2YIcFLAwSZh6w4t7+C8HQfwhBj7zAMm1ECYnFf+AcDVClBXKH5UxSApwaaYKUTTHASjAA" +
+            "R1wIL4KNSPjX8PHAjqgYGrzbAKABJzBALPAlDwwAGHgFRWSFSHzflviB0DHOSYRfQgzABfYX" +
+            "vhViLFgJFgDYfzkJGBTmBoxiAeRlApDoxW7AxUZELvoJLw6AWFmCiGBBAqTD2uhJkMXiL86E" +
+            "hyCSyw3SlUCgvNTVnOJcdUTFtnbbVmRF5nzZOakMfd7AOZLFOR6d0q3jGrwOCfLmH/wm1fEZ" +
+            "ZWXP9AzGPv5BX3gWYWRPYATP8/hn8DCLY2zqD/xBaHGnG9CGotlBRTYCJwTIBD2TCxzMgoz+" +
+            "x7vNB5O07UFZYLm4JHk4125ZQZiVh76Ql+EFWwldDHY0hwXQHT9hh3q553ws1wF5F04qFHg5" +
+            "gb9cyTk1hXfN3gtViIKEQlLYAScMWPPtgBuwDeioCNCAgZiYyOyRiR+EnxN0XJeALEcNABRQ" +
+            "CVoWSSzsDIsUQChsgNbwABeZTZJywr7JyPs1RNd0wQDEgg+AgYueVJaMQNe83w6UouE0BBbw" +
+            "2NtgmFGAHBT4w+wuo4aI1TG6HEgcEpsMEnRU2Vxdyd+BBVVK0h82YAJUx5xGxZyCTOhUXuUR" +
+            "aC3UwpkZcGEdnaa4WSjFWZvxplqoYEAyavGokqoMRhHo4z76EgT+cMAf2FKxSBpsUC1oBIsF" +
+            "cMBsWUFi9MYotI97CIEkcIaFQeQyuQFwccW3TINPhkJpSgfk7Yfg5kDDOMwadtBwqMw5GZfD" +
+            "xJp7LEwO2IccsocdWIGwUSV1jUd6DJvDXGB54FyA/OFOXitYiAkp0Op4WA6+lCYNpES3uQhE" +
+            "BNhNiN8GLKYZWIkZSBGMJIAuYAHFkUIWgOUWZcmWINGWoA2WuMweJI5NRZUh+Ulc+p4EvN+Y" +
+            "DABQkeg44OslgwFIKAQOhQlFQOZZqZE/OIGagFFXiQj7IoVR3M1KAA5ONEXaINJKQJkWbWO3" +
+            "acVvRAVssqmkBKLQ0QDovMD0dRdLnpP+HcRADHDBI3CBARjAIzSzM0PzEkyzM0/zNH8ANltz" +
+            "NmPzImDzB3TzLYTzB4jzOJfzLXjzOWNzKXwDL5xzON+CPJzDOH/DB5TCLXwDPt8CBdzzPcsD" +
+            "BXzDLAD0JHyDPHwDBQT0JBy0Qc+CA5SDPMhDOUzCJDj0Qzs0BVQ0BVD0LDh0KTy0P1PARXv0" +
+            "LMxCQkN0OZTDRYM0BZwDSM+CRz+0QQN0S4d0OWx0RVs0SU/CQ+dDL+x0Lzj0JBCDQztAL+RD" +
+            "RDuAA8jDJCjCT5cDMRS1A2RDGgBBL6xDL0xCL6QBUlt1PqRBNihCVJuAA3i1VmdDNjx1GqQ1" +
+            "Uae1UZ91OUT+dRrw9FkzdDY0NDGsw0ivAzHIAzH4AlKbdTlU9VX3giJ0dTZgtS+YwCRkwzqM" +
+            "dTb0wl0T9WMTQxr0wlhrdRoQgwMwNWR/dVYTdS9Y9llDtmWTNjGcdmgTtgNg9SQQ9WrnQz44" +
+            "AGxLdD5M9CzEdk3D9mpPQm3f9kmbdE1T9G+fdAiEgAcY93HHQHEvNzI3NxcodytEdyvEQCtg" +
+            "Q3RzQXTrgDNjAy8swRY8QisYAC+MN3nzggEsAjYsgnovgXovAi+0tzfwwhaM9yJ4wyIwQnxX" +
+            "Qn3fNyPcAS/gtzcwAiPMASMswhDcwYALuDegwBAMwRw8+Bw4OIQDwhCgAII3uIP+D/iD30Ee" +
+            "IPgdELg3QDgKoMCD54GFz4EY5EElBDgKmDiJ30GLPziAf/gdeEMlzMEFzAEKDHiGoziMM4IY" +
+            "UDgKBDmMowA7NDggXMAFNLgSAAKFK0GTs4MSiIEYNDmFN/ggLIAsyMKUJ8I7HEAiJMIBdPmY" +
+            "K8EBvMMQHIApDIISZIIszMEgmAKFH4AjXMAdHEAmAAIKKAETOPiXP/gB0EOSH8ABNLgsoPkQ" +
+            "cPkQDMIBLIASmEImQHkmvIMYEPoFmIKgv4M9jPkBwIOYv4MSvIMpKEEivAIGLAA9jHkmgLkp" +
+            "yIKYc/qYv8MCAMICHAAgfLkY1LoSyMICDMKWAwKUiwH+lwPCIFA4Oxz5EAC7GFyAGET4EDR7" +
+            "hIvBs4vBiDv4lVd4hD/4iY94kaPAcXvAcYeAciOzuHPBcyPzuaO7MrfCI7Q7eLt7dIs3NjwC" +
+            "Npy3eY+3fm/BFmDDEpA3JZD3ebf3fFcCLxB8ges3I1CCN9h3Jax4gYe4gD/4wiM4iDNCg9e4" +
+            "xTf4jt/BECgBtlu8nY94xDMCic/BHZy8gH/4HOSBxdP4ghf5hws4ySd4f5s8fre4N5y8hXf4" +
+            "gZ98g5O8s5P4spt8x7PDkA9CswNCIng8O2AA0y9AIlR4rT/4AsBDjjPBAaAAIGTCIMxBp88B" +
+            "O8i51x8AldPDkhN6gwf6BSj+gZYvwNozwQI0ODwswBwAAj3EPQa8QiKgwDtkwhBcAD3kOSCY" +
+            "ApozQSYsfSbQg5kffpuPuSl0QKhv+gFUAKh3gJxj/eAnQqWDOj3AAyA0+gK8QyIAO6gDgixc" +
+            "gJMDO9sHOSCwQ7EvgKM7uZU7uRgceevL/pJHu5JLOztA+Ic3eLMzeITnPsfrOITL/HIzNxeI" +
+            "u3Izf/M3t3Rjt3SDd3S3e73PNzZkP3p7N3eX93yPt767d3m/t3q/t8LXd42Tv3tH/H9XgsW/" +
+            "v8xLPMgPwcJjuISjOIFbeMyT/I7veIDzP0CgyIOC0Z0hKLzNGTIHIcE7jBIyLMhoyEGKQ+54" +
+            "83b+Z84cjgs7VkTRcQ6jkBwVLhwCCNDCC0qGsBPzrqKSd2LuADoAaA4gJWLE3JMlZoiSA0Ne" +
+            "tix6QIxRQBcWLAAk5sCCObIy3ZT1SsycA5lkzXln6ijWd1dNAWL37sDPA7IGGX0HKNGBtgde" +
+            "Lfhl7927TPQAwcsqy9Q7JaYKMzEl64ApDGMBDaKHgSoGJfQS2UykU9aFQYmK/mzKzqYS001/" +
+            "mn6phKWSCytXTh0C1GPt2RWRgiR5p2tHdiEXohgpfGQI48dDeAgRg3mM482Rx2jFhcujVq0e" +
+            "Zb/eagu2Vgawhd+ypdUSXrwWpT+/5XwlXuwXoV9Syf0ib7zca1zECCL+//38z/kvpY0qygiF" +
+            "AhGqiCFv+HOowYUeYsShO1CIUMKCSOqooAgV8uiOjzrsULiSJMSIPwVNwk2h3xSCyaALeFpp" +
+            "kNl8wi0RoMSIarZEZKkoqt8SoWmIA0AzSgmvFphNGpj+eikvqOhZQAkmmLhxkAWY6kvKBWSZ" +
+            "i7Gp6rqRSnZ0OkCsTNhhh6wh3rFHCQyapOeAC766KSuqmGDHLkDYsmnJQdrSyTTDjJLFtBuV" +
+            "SGSBuEwbxCcYB5lLCVkwqNEn02C65wIxlKrotQteS0khokQtMKSTOPrwjjyeO84D5ZZzTtZY" +
+            "Y+CCOS6uewTXXLN7BBtfwQsPm/fG42VY9Hj+ecQA87DZohLveDFvkfqQ5YU/iDaqhMGJIvxQ" +
+            "ogK9ySOlhww6KA8GJdpWwjzyKGikCzU06VpvGVKIwoiGOBEncivCsMHhWlQQt4qAqqklMWRp" +
+            "6QLD0jRNrag25fE1LMHMrCjDPJsL4cxsMowwmzLZCYM9B2Eiy0wWQGGQTJS4AyslUFAiE54O" +
+            "YIIok5c6SuafvsTAnp1C1onlBcCSmeVETDarr6pqfmcBekxzDAN4Fpg6swMcpSdhQ5WgOhGO" +
+            "pez40shYm4pMMl9D6jfdSEKKIVLdJsqgrirsCCXinHN1uRComxU66gBvpVbpAvcOG/CsW8K8" +
+            "8xgf9nD02GvWgPX+3sMmvvZuYcTa8+7jj5dtTzqRP3TnYDDVug3KqBL+GHKIxI0I0mgj/ijc" +
+            "8CGJ+iudIIZWvQgjBTNKnUFTY2PINZVCLYqo1WSqkbQbETZUjAsonU2WBTgNsiuJ2TwSUKD6" +
+            "CqQaEAJhAQdDtqkGh0DSr6Yiu7pawDA2MwFtgWpYYKEaKvLHoZptxPc/DYCgGnTKxBBYoI1j" +
+            "sIAKONBfFTRwDBw4EBR8OUAHpGQPreFAA4bwnwaooAH9aUAD1TgGO6JkGqyxpYPHKCH+5sEC" +
+            "EoqQhC/JX/62AcAc5lAGONzhD2uzQ/aJIIcsACD7figCb7zrWsZRTt6eI51b3Yo62Qn+nK2q" +
+            "WJ1HdOdwzRoPeaK1hUWM53KV6E7kLEcJxsmHEt6oxH7io615qStf8mJEu0ySEXRZpCQdCde5" +
+            "GDQQjSCEQZX4kBsrMRBGaAtd2FLVRmoHonr1yyRdSRW/cFITjNzhHr0hDTvuAKqFiGEzs5HS" +
+            "BebwtZoIiS2oDNJCEnWBmDHlDvJDZVXuYJRthEEKXgiDF6QQjEtUIRxXCMMxqrEAWEwpLIlA" +
+            "mVdCNgT1GVMKfaiCF5DQyysgoQ/BuAI8DBMyFlQBHVW4QhyucIUz9OEK4TjDMUNGGFMsoDAR" +
+            "vIIXrqDNe97TCzg4hiEiNZewLYAFhrjCNe9pzmAEowphCIP+BlijgXk4lKIUvUQwwoBRjK6C" +
+            "o2HIYUe2MY9LXCIMJL0EM6hQ0pGWdBU6gEiG5rA348gKOlO01XZ4NR3CXYcLhhvPsc6DuMYZ" +
+            "C3LnocR3wDM5+iwBqNa6z+Ug2R9Ksk4jlSgJISVEyHC5katVJSQgNYItjYA1D/QhCAoSaRKE" +
+            "pEgi9mIdhFJCEOKB6iOJSFvaVuIi2sxheuyw3k/WspOXdGYIXfoJ9VpCGpjktSkJW0pFJsgD" +
+            "KGzACUQwAxScYAkzjKMPVKgGUeCnpwO8Q03wMAQLXJAFIowjC0fYwTiwkIUdHGEAU+BHGgJ1" +
+            "AA2QAhFgIAIU0HAELCACCkRAQyT+FDGWRRkGSywIwxGIQINYRLe1sy0AKlJghETZ9U1S0oAX" +
+            "xnGELoyjCwkggh92QIMjjIMYPmEBeMexg9fSgAY3oEEoaOAECdjBCTfgAQ1IkQr2DUEEq3gB" +
+            "D24gARrwYAX+5QEnJHADXQjgHnmg0IVRMNOZ0lRwzLnO4JrD075NxzpaBE8rmrUE9pynFYxz" +
+            "z7GAKkZftXiMn4MPJdLjHzmK9VqQjJCPuVqQqu7nXIlkl+zcCMh2dVWssqNPuwjJEQl5pEAq" +
+            "oV1t5PpWD21qlKyJDW5MQzDXTO8ps0kUUuxSEca8RgnYu9iRbNKVNitEUU1BzAWMkIxREKEd" +
+            "WNiBJcT+QYQuYAEMftDGAOEsJVJCjU0gMIQdsGCGBIMBCzcYhxmOINl0ECMfIVsYCBoBhRFg" +
+            "IQFmMMMOsICGAhQgHWkwSlveAQ86VQMdlsBCAcbhDyL8dr0bgAJy5zKIuAAKAxqQhD8KsIHz" +
+            "jmO1rj1CJHphmu/6YRzxlS99nfBgJ+xAAghOMClWoI1tyAAIQAgGA25gBx444QUS4ISD7RDv" +
+            "c3jkrBSKooaPI7jlTKdvgJOOTklsnfAYYFm8KA/ktmCA8ah4jJNTuHkoISzwbMEb8YnP4hhh" +
+            "n8zJSyMdORdFOoJWteoxqw9BclU3cuSqauvIjGSXtiL0OYJAZCQeiYge51b+8zrurm64mRtw" +
+            "xFAQtdTENaCya2Of8iamvNonPGrKZ17TFKC8RCWu6Yld6SQLdhgBHi6wxADGkYAsDEACK8CC" +
+            "ODghjGqYaQ5yUohghpA+UnR7AJbgwQ6y4A8e+AHTO4hHNhQhM3gAAgdIIIIlEGGJI4BhAIs3" +
+            "QzqIkIxqsEVrjdHfDhKwgSwkwBJoSMARssDsLPiBGNVQYVyIVI0VWMIPUCjAb8NOBOje1iYa" +
+            "uAKup5EA83aBBxKI8A5uEPwbMMAOodDFC/6HAiDkoRA84EHxb9DfbMdbF3aYxYUszB/kxMpW" +
+            "NW3OFWPwiFrp6t/TQTGx0NMsoi6C4AM31k9XPKz+i1cr4zm2Fn/kaPL95Cuso7sWQ6ZlP05O" +
+            "WxipAKfljyqBEoysrFjuj6LsdShEImrujhaiQezlIy6AQr7sNkriNk6EHQ6ENnjjHmrCUXri" +
+            "LZoiSuYAKo4EYdguKjiCLkqHlDiCR3KJK4bABAyBFfwBCkgB7zLNCWLrBXRAA7BmCOoCVBpD" +
+            "A1YhHQagCzjBDLCAB1hL7xBPEBzABI4mKwbBC9ShAAYAEQpAs1TLDBCBCNyBZRAjahjIt4Qr" +
+            "vEKP18bB1+yBTNpMUmRBA3agALrAD1bLH/yQ2VDBHoiBUr6r2qiN2Xbgv3pvwYiPFHSBFezg" +
+            "+GhhG0QABeggENzADoT+L9si7AZIwQ5IQR6mzG5iasNaRcM8bDtCYDt2xd9qxQC4IzzW41fa" +
+            "j8Umx3KMBTx4YVniYwvUCD3Ug0HsY3Rkpz8mAiHsg+V2bHUCkD5wzD4QiZG2ihLKSgHTA+UG" +
+            "qap6DJL67yA0gkIcoo5E5UOIokQgBHgUQpY4AiYOZFNGgkxMKUlSECYiYyrCDAWSgjdMwyBY" +
+            "ApaOZA5MYw7YIUkSQRGqYNs2YBGxYAO6TfNSIH0OwK/eAQfV5wfEDgpogAgobQeIoPH8IQt8" +
+            "wQFk5i4OAByqAQpab9QKgNCEawSgoAbWQSqIpCCPwQs48ryg4LVkiwhUaweggB/yQSrEQGv+" +
+            "AMEQDOG3Xg+6/OAIoMspIaEXpOS9psEPVysBaGAH+osU/gv4iI8BcoABxFIKdGAbhoAOVoEB" +
+            "FtH5FKzbno8BvsEjJCQCZapWomNvoMMDmkOKdiX8dOU7UAwbluByjOVXUGxyzm+NVqxa7oNx" +
+            "4gMizkOsFkGPdszkwuqNWg7J3og+3Mg+rpESFLAzE5AAD1DIwirlzip2PuRaLsQkqAwn3kpB" +
+            "4EZFVORFiEI1VAIjCHJTxAADTsku7JFLYkJKFEJKfMQqhuAzOkIJBmEFb+IO+oQOjAAdJIvs" +
+            "uuAILAHzjmADbCAQqGEuxGInWKAPssAJEgAKoGAFOHIcSAE7d8D+EYiBGNiECaIGHmTgBcBg" +
+            "D44ADeLLDLIz1WCAGGYGA2wGEKrBCjhyA46gAPwgAbCA1KDAEsKrHhyAGqJCft7B9lprA16P" +
+            "Q53S9YggDYghETCgGq4A2YoL82iAE7it26Iv225ADkiBFViBFHIABMat3IKBLZ2gR30v3ayP" +
+            "r6TMIFAR31plL7PI33YlVxKO4FZsi7bAOgzAVx7ncCZnEdJoxSwu4xinxyREGoWMPsI0HMPl" +
+            "DmBOP+iDACsuAKMxPhRQW1xsEd4UkDhTdSZikYgDdmauXk5EQVYwAw/ET2EjD2BjNjTFzIai" +
+            "JtLGUCriHaDGJiqlKBZlKXgCEKSiJwb+AQOQIi54Q5SQwiDnRBEwwAVmiwjsYAc2AAt0QbIK" +
+            "gBpEoC8MgglYQAdWIBY2wA6OYLPsgCMfEhjKwQHos7DagmjmIRyyYAO6AAqyoABo69bAoA6I" +
+            "AUuiJoLSAQrGAQ0GwCdD70HHYQB2EgqeYRNkYSgYQwMaAQsitLVsTfZ8DQ7SIEgS4Sbja7Wq" +
+            "zQnoq77+KxQQ7C3tQAAYQBdcQBi2QflQoBHYUsHSrfoYQB74NORi4InuMjpuRXBwpS+1SDuu" +
+            "w3GEBTsEE8W248S4I1qCEVksbhFuYXV6bD/Qahu5kZA8c4nSdIkQaVreCBs3U43eSD2y0T6E" +
+            "sQGp0f9Ghxr+w/F1NKRCIKRc2kZD+EquCKYp0maxruKwMCVH5ucenI5qeYIx5GwuUGAmAOFA" +
+            "7MogEoavJhKFvpYYVoFUB4AGTtX15u4IViCHMuMOxKcIQqELzCC6JusIGMAPNoAGXuAZiIFT" +
+            "RmtIoEYWQOAKpqEdfAvxfssTNoC1smETCkNmquESfC0BGM9Bs3XswgsLwssWpAFLuAQeNMAF" +
+            "JmscQPTWZM8SAvQdMEAWbnK8xoEGuiC91o0TOZEBni8UOFHC7IAB3MAFtkEHxAAIAsEF1u0T" +
+            "vY0HZoFtOuJV8C1voKimPozfKnY7skPi2C9KAzM8euU7xoNK30M9XIw+hDHI8K/+jYox44xx" +
+            "NNMUGwNwWtDjjXghGEsWIkDzfumXM+V0AQeJOIQjQt4lHCvEAtWqX0RliRTCaNPRkm5jJGpk" +
+            "U36iJ7SuKdpCDArySJRHHy2jHTl4UjBChEMJENoRI5qiIhTBC4K3uATgBixhA1Z1A/QAgNhi" +
+            "GwzBEiyBE/gOCm6A7yzhhzegGXrBBJLEL3yCLJQgGQyBBsAAEVjLDAoACvzTJ91BJybjHQyh" +
+            "D3xyJy2huI4VtjSSCAogAdy1KZwmEarhBZxy15ryCKDAKf3BERTBUO7nChIA8/LY2twyv2gg" +
+            "wkgh+F4g+FhBF3IACSzxHtAyeJ2vvvzLDhgWpubAAyb+AFacqEg3DEmlqMMETlm6o3K8w1ey" +
+            "YwuW9BF2cREWRxhNlnFO1j3uQE7RAyIO8OSqqj28IRrfNAFp9jwsrj7USGfd45d5WTRp2Rgr" +
+            "ZK28ZY/qxkNS5CFmw5Liiq8O4h07UClIoyuKQmFOIzIMI5Qs5lKQYiBTabESpVJt8AISYTnn" +
+            "pM2GAAgW4AwYILyIwL6ojRSy8gS2wRrysAoKIBb8gQFAr3YbUgJ2ANpmgTFY4wA0tU9kQfXA" +
+            "ULb84AkLYARcyxZMQLTE4BhegAYsIfRgC44LDY6La0GnwQSo4B0ixRCO4Qg+b0G380MVNA2M" +
+            "YLQAwfaYrUF3oAuysivdsr/+nC/dPjHdaOAXeiIf6OAEECwUui2QQ4EOeMNDOgI5lMOSZ6r7" +
+            "ZEpwKLZWAAdje2pyzANxcuVwquNxfnGNNIIXMueW0ZpBjjHj7uMWXtYzDxA/hkyVcaxn3eM9" +
+            "eFmXhZFk7Xc/2iMz79RuRiRV2IqtOjBURCVQDyIlUgRulILMUIk5gaIupkd+sMcmZsQoMIAg";
 
         private static String splashScreen_gif_base64_2 =
-            "BkThxgMNDEIkEzv9ovWoJndghxmNh6OsBcZcSeDoxN8sDpFMrTKyn8ZcbQj5s2waAKLCh0vR" +
-            "h8NJKjeW2KjalEs9dM3AkMyUGHA6FYTAyBf0wNI8lRrwQIbUSAAgzRYlQJWJwhCQQBrZSK3K" +
-            "ALM2iAQoSYMiJC0GhXYsyX6mgk2HRN+UwEliXQ/SCeD8TR4bHUn+TeUYeBqFyZr+oY2X4F2f" +
-            "0YBBGOtKTgSkWIfqcN93bMUm3B24ykJzfGs6Z44DEQL/XIVXiMarUR5ZD4P8EoI0JIEshDIv" +
-            "DEASTMAioCUE0GIScIAuVsP2HIZ2xQ+0Bek6oU8pkEFf3kVf0AEHOIOtcMD7VINWcIAUHAAH" +
-            "mGWODkyZ3pM98ZMy3E78BMKTtM90lQYqJhAZDMe/kBtjvAsQSAZxRNRspNt04NZapPN3gDCb" +
-            "0ql1BBsVEsLWBQX3JYMJSKEU4oGlpwCmY3ocpEAcdHocNEAcmEEDgLoZmMEylPoypPoyNICp" +
-            "q3qqIwCsLwOsFwCs17qt33oB5Do2FMAy5DoC5DoBoEH+rg/7rxcAARj7sBOAshPACBTACLiD" +
-            "sqMBESj7CIxAsBOAO7jDCEy7O1AABQQ7EVg7EUy7uI87sxOBtCs7upt7sEt7tav7tqNBtKOB" +
-            "vI87uhPAuNN7vU87vhNBt/e7vaPBs2+7v397uHs7AeTBJVg7BWQ7ATR8to/AJSz8s2e7O8QD" +
-            "I3Q7I1yCO1xDxueBN3A8I8TDJVBDHWz8NZz8JZy8O1zCNXh8tjPCNVDACMj8CFDDy5uCyT+A" +
-            "xMcDBRDByD97PFwDEVyCPlCAKdSBEmR7PDyAOzACz6c8NVCDPtTBxSsBBYx8tlv9A3hDy2P8" +
-            "Jcj8y2f7A5T900+8N1yDOyj+/ANcg9Obvdq7wwNcwtw3/MS3fLZzPDVUvLdX+95Xu79ru7fT" +
-            "vLZv+99Tu7Yz+8Pju7VbwAZYgOM7/gbgwQZUfuVbOuZTPh5s+qZreqd7vqd/+qiPvi3EQKl/" +
-            "uqinuqiLeqgvAwrYgi2MfgOcegwYAS6Yge0bgS0YwSlggxmgAAqcwh70vgeYAQhgwx5gQ+8T" +
-            "/w9gg/M7vwecAfI7QvM7/xl4wA8c//VjgwfsgRHsQfc/vwcgPwhc/x6c/x6AAAgYwffvwSw8" +
-            "//kjAPgj/ykI/ym4vgc4AggkPzacwfd7AECg8WAEm4czIAo6ArHwBypUZ1B5+IGGyhNHjqpQ" +
-            "+bH+0YOHJ09+WPzhCE5GKhcdFTrZCo6HQlVCqnD0o0ori62onKmSqWMhG46w7US150mXM2eK" +
-            "tVpYqNWPM4UKnfGQ0WmVJyDgqICDRkUmR09snmlV6IcKnFQyWVWhdW0VpiVZlszYqtVOtlqh" +
-            "oqJSCOPXKlVQweELVTAcw3BIapx51OCZhowNLowMYg+Ig9gWRtTmAcRGhCA4Vx5IecMGCxZK" +
-            "b8CTWjWe1aVdu04RJ0Vt27Vp427QYHac3b7N2Aq+e7dwM3Hi2GqgfNkyM2ZwQTdzCtcyWwiW" +
-            "oViGywguFEaWETyF0MMpFNj2pD+F4EfHPdhGnknvAdWTM6f2SPQwvyD+tlPYMEMvPcz2I6i/" +
-            "PYwwwjyEMEvwPwbVUzBBAzHLryAQxkOIoKMqiyjB+PY4gwrOpnqio4va+2uhktJrRYWeqgAB" +
-            "LUeeUsEyeRQqRB4Q0JAnxRfPMGsiwUDKKqogi9HGEa08oIKlPYpRISIhPZCHrK6oQKuVlGxA" +
-            "TB6bvtwLH5WCKeSJYFT4oQu+rPzhpScK6SIlxP4iqYqZvnLkJJJmqmgkw2DKEiQaUWkPFUfq" +
-            "+4GKiA7qyDGDSMzPMg8wY+yyjigDLT8jQGAttddWC9U12EK1LbfbdPvNN+WQa+C554hLzjjg" +
-            "lmugOuWi224ZbFCYzozmcAFw12UQ4AwbBQH+RE+7RxV0NEBsIjoWmzMANALB9BzkFEMHMd2w" +
-            "PPwovbagaw0C0D0UzsOWQPLku5Ay+Cid1KCLOtpIKow2osKqnn4AQc+jdGoPjmKcgsPEQmF6" +
-            "4k5sUpIIKmycjKoKHPfQEQ4ZVSimyUxaKsSrsnBChTAqVOBLsMHYQlNLONNiik0VSJZTx722" +
-            "nJMmmAqBYy84fmCJJDgKNfEJOM4wbKMn9LrIIsdAEqnQjUKSiFr4pGIMtH47auxCqTiblLL8" +
-            "/sPPU9ZGVe1TUl3LDbnbkGu7VeRY9a1WM4hrIDm6XZXbOl1tNeM7FE4BD10EpPXgPHOPPaVc" +
-            "Aw+axQinODsFvwb+A8/Qvwzx20Py8fx7T8BM9/uPUvwWSrZr0BDS3AipJpcKoUJJzPoMGhNq" +
-            "DwS9UAFhaKeKNpEmeg2jFiOpBIMo59lfdKmY2ev6QR55dCrZpbqWZCmwvUQcq8kqCHbEJoxp" +
-            "XMthFZ7KBCQXdQrmokzIKoR8n8jqsqw08yLMLMTMhFPPnHfe86IsDQPAPSnqCRUp4KIUdajH" +
-            "QA1gsrPMD6ZFLctwLXaQ6giAFrIQ9YzNNKgp29laU5oU4MFUp5oNb2jjG1rZolUsXE4KYgUd" +
-            "W6SAhctwFQpypSvtmMcIMdiV5NDjgWJRioiUslay/GOuBAFuQOhCj4M65x9rYYtT6nn+V+Dy" +
-            "gyAjGAs9jsFQfqiluY5ILj+Ykghm2uMUyHXEIp35yFFIwrSWjEQFaCgaYmiSs0PBrGj0ogJi" +
-            "UFGFAArSEcWQmYsMU7KRoK8KNqACNuDAsVPAAR+OaFKXQFCTjrAPea2AiE1cIpNGkiUTPmqF" +
-            "PD6SlidkAifug8pYBCNIptxpS1mRZUXMlBJBUk9neynG/4bGJ8Tw7CtQ04/UHNWvRjnrjCFa" +
-            "SNUOEqKDUGZzlRmPEThIKrKBioS36WbaetM2GNatbsnxjXNcZbe8xYFu7GyAc7JzClvoEBf/" +
-            "CY/oDEQp+QBxn4rrSIKkqTkUeE5BA5LcdySkoGX8B0CAm5z+gMyzH14RJHQWotS0yvMeypzn" +
-            "KAA6A9ISAhSDOMUyIJnXwf7oGJp8pIB4ulNH3HIGNAwvehJ5qVs6ooIqTKIDL1hCC3IwiSV0" +
-            "IAcxiEEHOiAVt0SkJCCpSRU84IgcLGGoOWjBEl7QgRbwtAW26OkVQNCKTPygBS9owVGD2tMW" +
-            "lLWopHCkWP9iA3lQwaxlRSpSJ2FVrpICZn/MyF9iMIlJHHWtZxXsVjswiYssQbBLiAFjfyrU" +
-            "GKyVqlTFwxLkMImuyYGqnL2sUDm7BDzIQQ6jlcMUOaWg0qBmbKJqzTdt800SdrM2xIHhc97m" +
-            "KrrZgoW/wpvc0lkr4PQKBQhwVXP+gIgdxAUOQAhIUIUWZJlqAWgP2hlo5bKlIOduDqEJCo+E" +
-            "qjvQb3HqiaKhTNaCyMX9FAsilPoB0fJjEc7Uh4iQCxhnhkY8GnmgJKBxH1BSci+gEaUQHdmL" +
-            "QVQSVTjE4ApHqMEVanAEQ0D4CEe4Ql4t6Yi0BIWTKrBBKzzQgWk8+Aj3oPA9DFGDcki4Bn8E" +
-            "SyEYDIka1AASDoYEio/wjhx0wAavxImVWtCBGhiiwjN+8IwnjNRC8mloVECqIaA85BRf4Qo5" +
-            "oHILPvLYK6iDyldoQZfB3OVJeLm0Hcnsha/QjzB7mcr9aMEGgGgt0nhKVLGZbWxGiCrazoaE" +
-            "cgMurOT+1k511mqeKrQbb5dBK1dhIwa/2o54EORRz41xoVukDgIAd6zihgcXmM6OdhT0t1N8" +
-            "mofaiWd3uAOgGCDgP7NIl1TMJZ94/UBzk0pQ18oolRDRCI7tiWpObtevB1YtpUUDzEeJFsiM" +
-            "QES+I1EIVpyyl4IBRqpXAMcwxiGLYUygCXQQgB1kUA6kHoV7JoIKVLugAsHSgAPDkIEzSkEO" +
-            "ICRBCosQQjWa8AFvdCFLregAIvQgBWzfQQACSEQShnEHf1wCDvLQWc5SMmYB8IIQWVhExZtA" +
-            "iGEIYRhTuEZJyFISw0yiBsMYBhAWAQQgyKAJKnf3Jb5C8kXIgByEIAcdfID+AyQkgw5IoMMA" +
-            "fi6LZPhAFFQFAWNTQQg6IAIcPsA5HehACFkQIhW9QIO1jsip1n5qVHYe4Wxzg2fc6OaEroob" +
-            "cdDJQuTgwm5mmM1toYML5TxnO7xydNi+gxnzVMg/gKMMeLD7nXpOCKHmieffjpUdI6AABOga" +
-            "HLrqqR4EWFNbDOpaRllHHn5Khl5R5Z3n72VJz4+UXkXTiJvI8hSeGdsggrGk/nTXEkjy7AmK" +
-            "9EYbypHwJCAhC+e4eBLKMAxJtIATCnFTS5aUo6zOAfgOkIUUsuADIJThAnRowjguMYKSyegF" +
-            "5RCCHZLAizKUgRxZSATHo+GN+aWkFSLrABea4Pv+jQ9jEQIQAhCa0AR/XMMqLSWZI2LgHYRA" +
-            "CARgERYBEHjB3shBCAThEv5I5gyQF8iB4iqgAkgg6pBAFhABEZTO6aZhCWyhGExhH3xAFpyO" +
-            "EJxP6VBwDlgQDUrH0vYgm8zmtWBLtmqDttRm0I6jOPAmuHoQ7XaQOObJOeTuneJpobIIG1hN" +
-            "oMIDunbFQUYNPwIHXcwDXQDPCFht1BCAOxYPPMLjC4trFrBBV1IHcC7oPP7pcAaiP4zIMgbk" +
-            "ohwFNOIQUiDiIuBoUWQEMT6KJNCgMGZCkBTsJJCNI0zEMmaCv1DCeryBCmigFMqAF+jAGZyB" +
-            "EAghCSaABI6qwECgZBz+oxVswAOGqgQIwQegjw7IYQIu4NrKoAnIQRfq4AGoYB7MpAPuYRGS" +
-            "QBGS4BjsoN7KwA6EgBf0oQOcpAvgBMZyQBkAgQPKoAIEgAHsTQrI4AKkQAYeoAMuAuIKoRha" +
-            "gBAKkOOGoQkAgRzsjRcw4QEwogOu4P4kUAbCkQPpQBbIQQMdIBmSgQVZsAM2ABuIAAVugA5w" +
-            "YBN8IBWgjg6SIRUGIBk2gQAWpHNOgc66rs7Ebrby7OtkI1XopgdpxW12UCN1S514ywihozl2" +
-            "hdXOIzwwzT0Wioyeq0EER0FGLQZGzbpADTx6yLpwwTvMg4cWavIcJDzSo7pEQ3UKIkE4RED+" +
-            "KGXyIGVaHkIOL8VY5IUx0kOmJMJgaERfAqUVigE+WIKNqgAzsgQhRmI/4AQ0dMZfyMcDvCEH" +
-            "YCD/HKACskAIKNEZpKAEMotJauIg1iIG+mEcygAI6OAOxkH6sqAJ+iAJ7gAZ3MEbcMJ7tOIF" +
-            "OmEYpAACvtEOOAAI7iARgKANKqkrMKIVhmoCDLDehsHieCEJAkEZmkAI4KE+SMJM9KUDCOEC" +
-            "AMHk7I3+FoH+rODj4KCngmA2yYD+KsAHCAERZKEPTDAZBmAOemEABsAHaGAJmMADTGEJaCAV" +
-            "ZEEWwGEUCYEECGEOho4ABmIWPiMGYUMGabBUvu4GYwuGcusjc8v+blRoOPxsOWyI7eiuOrQD" +
-            "J6ur065r1NDDP4jF8ZpDQW7SCH4FcExN1GIA8lAtO5rDDBaPOqxw8bzjP6kQBDBNzlSHQTCo" +
-            "MqaldG5nIVbnCQqiPf5zIzQHYs5gix4CPSZFJxaFv8xEIirCMWaCYQYsqiypj0DjIjCjjT5K" +
-            "pq7hCghhEZrA55Kg22SBA6RgCoYqKoKiEFwwB3KABsiBA0qBEIBACpJgATngAoahDOKBAuDA" +
-            "BmSiC1wkB1JTCCBACi6A3oTAMAUgBLzBYF6iSVrAECDzAoxU3naPF9oNEAQAE/KgIrzHYM7q" +
-            "G+lvGHjhAoTgAmQgEIRAHK7hJPJUBsD+VAYOoAKQoFN9wARkAQnIwQeQ0wfmoAS88x6oChtM" +
-            "YRIGYDjfkRIJkg7mYACIwEK0qFNew2x2dZvsrCJNKM/aJrhUSG2KtW4+UjnmzoZg5VfGcKG+" +
-            "Q/G60Im0iDtIcvEWyjvQJQYMFAW49dEEzzqKqztsIQaqw4cA73Ikp9Leg7uqqfGwaEBAI4ym" +
-            "xVzKpTNcZ6TAKGsKqFHYxV5mhyrcx3eO5ylIdHZaokQWAiPQ405CZEYF4wfyQBPKgRvLgBAO" +
-            "IBAyLjabQBImYRb4QieUIgaO4BzoYN4EAAm2LQhM4BhSFh4YQRywAkciJgZKgPwuIBGGAQns" +
-            "QADIwRnsYA3+rsF8Gi4kOmAIZEAK7G/jgGAc4o0AgWAYrCEPZuEkTkIba8AZCFAIJJVrCVBq" +
-            "r+EBBKkFaoDjmmAYELACbE5WZSHqCBIRkqEXaEA5OQEEiWAEDIEENpAO1PYd63EOiGBcPKdT" +
-            "ytM8Y6M1blDs3s5tgEudwsnQhvU4hAPthOMmg0NaF2qikBCHiOWgunDxcMhassNctWNBIc85" +
-            "XsU4vKPRmkM7hCPUesgnqbU8uPWg4mw8jMhe86Mh9qM9wshfjMVECgKPFEykTqL1WkJkXgQj" +
-            "7mR2csYjEiwlckJRLOlP2Ej07NAtQKBQaYAZh2EODiAJkoDnmuACYkAOBGk8qqD+BeSAEKSg" +
-            "CQZgGOyAF3oBMk0wCfyBCKhBJpCCfvyNFTgAHJtgMKVRAC7ADg5BbCFOHpAq/wDhDuotCZxh" +
-            "ETiAA2wxCYKAGNogBlzPLSahHN6yFBBOhAdwALOBERLjUsVxEQ7g5qKOEJKhbdu2BOlROZNT" +
-            "AjpADkCgGIzgBmSBBCqADvoAEVKBHm0VRPfDA0Aomx5yzxQ3heYThcZpbXSjVXbDt+ZmCFvX" +
-            "oa6wngCHWLoj1GRSu6rDWpzr0x40OG5S7mTIh7bDFtY4O+Zp8ZwL09x1dJxLczL3W95DNBqD" +
-            "oiTIgk7BdabFKaCl9L5CKv5oXngmMFhiIwTpKBSmX1L+InfwBZIKYSj85QnGY1Hg40hs4hQu" +
-            "oQXSoAKSgBBeVQgWIRlicwU4yzBAsQPKIRkWwRcRIRDeMhkCQQBGkVJjIkbWoiRIoQZqWQpK" +
-            "UxFKcxQmThoYYRa64E4YOAeSoAClQAqAgElt0YKNlBcCIQQ0AVBIpgVoQADONgnA1IA3rgmE" +
-            "djDQURzJAQkWgRxc2AdIFTkLchMG4DpTYQ72mQZcAwSm0xU2UOroACARwQfA8zPI4zRYi2xa" +
-            "C7a8CVUs0jcel4qteJx2K6NFsjqQywpZTVwl5Dvwg1huckAbjXOFQzi2Izpe5VVcBTvmrqWH" +
-            "sNG01QojrbpAwEEGag/AGEH+wIVTRGc0GOZY7hWjioha5qWL7MMgYjSOIEYmDAwO4ANopiVL" +
-            "AOQrToRoICYnEmKLgEYiMiwPDGEOSIDjekEWknQOKi4cOOsvMuv6rq0asoAOFuF9fWAYkgAW" +
-            "3CEeqkAn5KEPqUcJOqACIKAT6s8OAiEQwA8QzqENUGEtFKYFjoAX3pIX7I+CBQAQtFYZNo4X" +
-            "kOEa9MQqdnMThkEAGHUYHHUA8w8f+M8wyHYYKgAIDkBLlaHmeI4SkWAUUyEV4LaGe2EOIEEO" +
-            "NgAN8uAKSuA6ORARnM8HRoBr0mMhGJo1TqNwy9PrZAMP4qDPGDedjFWcbOM3JPe4/CbuVpqj" +
-            "UQD+js8DAX4FW08Nh8ibOyqXc9n4OeAYVnQLjtM4OOgbP1c6cE7NvytEPEBADDsUQipDukDj" +
-            "Id6DayplmiAipz0ijRCjXtRIZxRMJRimeT/KRDyiJWSE14IJWspSURBid/YCFbSvHDYBCTLb" +
-            "BxZwEV4VCDJADmZhN8dgGMIgEHzgAiz4SpOAb/3hAUbgCQgGLMKHL5wsFYZBEoGAx1EOAu5P" +
-            "FzQB9VChBVKhApogCW7T/poAFYXgGIQAEB5VBuKhAwBlrYRgAQPB3kphAO3vAq7hGl4CDi71" +
-            "Ng8ACMihAmqObaNu6kxwEyrAAUpwDmShGRZiBEwhA3xgHpcuFRZ9BLT+RqOke7odsrqtuyJ7" +
-            "AzficzdMBYZOCDjw5iJF0gw8Dbm8EIzN9SaBqHXBI1cgTzro+zmiwziWQ1l9S7/ZGCQLtDls" +
-            "AXAw7Tveo6A8QDzdg1PKJSovCl48h9akKYndI0QMYg/aQyGOggpAI6UK6diooBhozyqK5iUs" +
-            "QyMKIqXea0alDSuqMmcYRiFMgQpKAOh+sRfo4OTmgLTZYQl+QBNi4AaAwGdNIDWdTgCyIBVa" +
-            "oQ5SBA5OwUkUQns6gAfogBfuQAiQgAMEAAiIQWkxwRtkiacuwBl4QQgs7vuS4PvqrwzsD/yC" +
-            "YU3ch6iSoBQo+FE5YABHPhvEdi+GRhPgAR7+6ELn6aLn6aIEoI4QTADqfABuiRMRogDSz8AU" +
-            "iAAnzqIi4GAE5PBrPAA1KN2DtImbuG7PSqg3UIiiNR2KQf2+o+NWtsNvPu07et3UBvRvQveN" +
-            "q8NyccFc39g63ukjCc1clfVBecs7eD1aHy3UAgdTzEWjBqQg9kkOo1LXpCY9PINTYK1HF5Zo" +
-            "QMOk7uhQaqIhFD4wdMZ5RYpndJRoFMYR0CAwutIjFKKSZ8cRUGAEOsAHBoAcuk0CFtAE0kAZ" +
-            "/KG0UEETliANLqAJHIAQJuDHXSALQsAd5Lw+tqRoaqZkYqAGzoEchqFN63oCyEEKFGEV4gGV" +
-            "igHCDjg0TQ4CtPb+S79PCIjBGY5hDfhaMCT7At5clct3ly+gHAXpj4rhAfKAGtxh/0eg/4nA" +
-            "HQCCCJEIMJDQIeTDBx0fsmQhcuDAnikQZ84Uc0cEDQGBI4iMoOjhDAiKFixsOFlyg0k8J1uy" +
-            "xAMzRQo8MmfGbBCnZgOccRqkyBknaIqdQXfaWtbAlhkzuJYuQ4HiKK5luJoyXWak6tQYVZc9" +
-            "jWFmmZmjYRt4BbtM6VgzO5e6dbrUFgq4uI5SNYIiBopTRk7tPeXh1Kk92PbsOQXCwx4jhEEc" +
-            "duwY8BnDHrCJpIxN8g/LZzyEdPTkR0UqPzz8cPSjdBU4iR1Vseyo0Gc4In886YzKUWL+D1TO" +
-            "nHpCG5uHYh5APHG05wyc28VqAHFFZxiiOYQukCtSYUoLJqa8XUEkpJQscmWS0FkR7wFveY4c" +
-            "ZaJdqBCqQq2etJDShFwiO+Sk2BHSRBmhXEMFHFR08M4izgxTwQVNLBJIEotckMQwQnAgwAUT" +
-            "WHMJKcBdQYmCQgzThBCLCDGiEPBcYiAVLsKhGxXtPYEKCDWi8sMSNMhCR48+EkKHLD6kEsUI" +
-            "nu1RnGKOKVbcHiNZVphKJZlkkkssnfQSTDHZVFOXOskUFFA19bRTA3Gx5VRTXqU1lldqHmXm" +
-            "VQiYoZcZKBihllJ6mhWDWEuV+actbaGZJ1dO2WLEWKcscwr+Aigg2RdglfVVGGLYYAPCKcJV" +
-            "hkJInhlxhiOKCXdGZoldugcqhYHQXmUwTuZijbY5cgZwtMKhAq2x0aYcHDWesZkHaIiW6m17" +
-            "PEHaLKktCQeSMBbjyDuE9MKLEHT0Qs4wfcwxjD1LzOKNOMIQkkQpdAQoRCvXqOCBe6RlUohr" +
-            "hSCrwjyTkJAFEE3YIcAiUiRBThJJFANCIS20MMwBJ5LDS4aLlHLMMAI0AUQSHAyTBQea5FBI" +
-            "MR2QIEAgpVwA4AUOBrKIOA/I2F4VxwH78hMU4bbEHBUQQkKPQCJCyEOpDDLRpZgaZhgIRmB6" +
-            "KSohjTRlS05fqaVLG2hJNU0yafn+U05dCsU1Tnoi5dRcS3XlFVRUhTVV2ChY1VZSbAmq1Jtj" +
-            "KRWULYK+bbdSYtmF1dpUTfUUAjH4hQI2RvTlmWAgCGf44o91trhlkVeU2G5GJ0fZZtjY9kNi" +
-            "MJaW6xMePNEKrVS4XOtqtcJRDLAwegZHISIBl5kjwcEBh2IwUtQbCLZ5QMQZ4ByQzAFCAEkO" +
-            "EEES8sISIHiDygwVD+ODFGC4Q40KKsynwnFdVOFBFbJRoUIM75RHzgRlEFKNHRZOEIw4rXRw" +
-            "RSlS8HJBFkIA8q8QE0hBDA4kQQYC818tvNEFeUwiC0lAUYUENowkNGEF1/BGMVYDHBohi3Od" +
-            "6UxpYkD+gyDRoQI5QwQdkuEQEhQJU0bT1GIWR5FNXcoz2JCSSlpSpadNbYdVg0lOrPYTMGnN" +
-            "Sz8pk5niZBSq2KInaRFUnN5it7ecDW5saZtb7Oa2t+ykKUoxE5umUhW99AkFdxEjXwSDgsUd" +
-            "zQiKGQySHIOkymDKAzW6VEVmqDkPkqpURkDFbUICh83MRzZPKARplCObH6ggkKgQX2paUR9E" +
-            "0uoMVdBNr4pju5C4SDio4aQHjPCDZqFhEoSYwxyAMAxXOGAYw2CBDzzRATmAQAktkIAzEkEI" +
-            "frSBEcDq3hkKUYUfVGGRP+gCalpxhSMIQQpSWEQW7NAwCCSBGI/whiPS8QL+INzBGcS4AwcW" +
-            "MQEOAOIc0liEwBbBATsQ4wJgeMAwEVYhiZFsRA4KxzVcthqWASs1FSnND1BxBlREgAZAAlJD" +
-            "fIAQh2ziF0QgmpNmkSnCsHEkyalIRYwhpZQ4baMbrdpMwLS1j4o0a0VcohHzlsW2nTRvV4Sb" +
-            "nsIEtzIV5YleU8sT03S2qSzKK1k5yl7wAhUjYAUrnyzcqQZjOMR0xjCl+qRDjWCjUZXGMZRD" +
-            "jKjYaJuKgKY0senNDwxZq3lZxkAUER8mabOHTJ7iDKRZK2kIQyvANMs4P9DUJolgCEAMoBeL" +
-            "qMAcBrCIAwyAHJiIwRKK4Z0K4Mcc7lBCrtwjuy7+sKsQwSgQPlrxA05AogJJYEYQBNAJFEUi" +
-            "CxfAwj3b8IL+NJMDUrBQErCQjyQEgkQPEoAQyDCMa3SACiAcxgWM1wRCLGIR5BBCCC5RhUqS" +
-            "hnNPCI0fUQHdWv0gBkPoAyGQgARyiFAWhJBFMlYYmEehKo6OW5JnPNC0KWm0o0+LCU22VBM8" +
-            "DHFMYSqiUZLSk564hShEIVOgyBQmleIEJ1kzon+raNO7MeUqiZoKVOrCU6owqmxCzUzhDPcU" +
-            "J/GFcVA9UuUOg9TMFGcyiZkMYBaHGGJhA0fFcVFnYiOzH2CWVcFMq8uKU8kaeSB3pqGCYvzo" +
-            "G9f8AEkAXasjCkOjS53+bgTYeAf1EMGLRbiCEChLRhBgkQNwtaEcQMCCPvIAh0xgdh748EAr" +
-            "5HG60lEBXk/wRgeAIIREjOhfFbNDE0Khj0rmAAngLMUBzpkENnRBAN+8QBkC0QQBjKMJwTBk" +
-            "B24AIRMNN1sngscDbAca0jT3n6JCTXsqoo1JwIAQFVAGIYCkEEQkAyG/MAWmjmYYFhamMm/M" +
-            "DJKo1DSO6pqHWIMvEUOatTgIKsBV1K8T70umAc+0TCaVqbDzyxNmdzEpWJzbgnGRF6bIhYxA" +
-            "JSO3BSOYSDEm3IzJVIdNxcfFLXUWS11cSOY4GSSVZg+lEUm7RNUuAz1BfMtxza1exz3PVMH+" +
-            "xyAo0GRcUyrb3QbT91ba6DBVICQVgwrEKcEwNgGEQChjAEIwTzLIwYklnKGCbtBEPILZii6w" +
-            "VQUojxd92gWvM7y5AgEa7h2IQYZESEEIbq5CB/ghwQmQNkBNwEcOAFEK2VrMXzuvRTzgUIVp" +
-            "mOhBi2jCME60iAdcA+owMlB7ZBSq9oiqVh4AoTLoQA7uLs8BFThhFIgwCycd7nCKc1JlYPhQ" +
-            "Ku1a1xbIEtVs4kMuXS3APsmvUIRIJicOJdr8LTzhi2JSriXb2YCCop+YMhcJ+2ltWbkTLrKC" +
-            "F7x8PryHCwxfQrKYd2OqNHdv6m6SlDuqEitU9oZ6SMTnx9jRaJj+4CvEIikZL2Fmogq+ixc2" +
-            "ugo72YWyPj9wUWs6V/C6htIRKPg6ESYxDHIANgsO2AQrB5CMFcTyB9e4BBG8ofzfV0Ee/6yP" +
-            "I+TRPfpQoQXvaGASyiCECygiC8O4gx3gYQM20AGQ8B92cAdNMAEMMAyM8AIlUAp2kHT/4QwY" +
-            "4g/eoA0eowwU8lsNBAQX4A8UICMGchp+JBr/pA04Ijqm8QOTQFB0gAhtxzM9gxA+8AtMBlWl" +
-            "cjka9iRFM0MpoVFVciU21F5TA0TwFXjyRRP9tXg+UURaEyb5ZV+SNxRPSIVcE2w5kTcAJmyD" +
-            "0hRctCZrwxSfFxXYVjZ68YVG4Cjhthf+r2ZkOGgacqRi75ZGoqFUmvOGjMFjO0Yr7SIjXwVM" +
-            "vSQ7pEMrzZc7X5U7aeUrswAjMrMr7RIvnkErjCE6gCEqp+AiQ0Y+hYBXTdAQEdMLyRAyc0AC" +
-            "mDAJSxBKueN7aAAH8lAIihQvVWADMmID8jAf+BADRxBaQhAJzgAECsABvFAGd2AFSjA/NTAB" +
-            "TZAE/NIEYQAG15ADkCAEGSME45AEFyBAi3AJ7AAHk+AKZEAygdCBgAAIH5AHmYaCqGEbODKC" +
-            "WtUZOoIzhGACJLAzPkIHb1cql7IbsXZeseZGIPCDfLdrHjUmQcQl7zWFBAlSTVhgAMYTUAgU" +
-            "VIh4DxmFM2X+eC51RdhWF2HhJ58nFlghVGXjeU9xF0h1GIXBOJNBKufVJKtSGYNxj+fVQRXh" +
-            "JKgxM7pBR7wCYzZicH4kOs2HHGzVOWHXQa+zb6Wxbz8pIyMRSPTmY9gATI6QAh1ACpfgCOWQ" +
-            "BKdWCsOQDCRAIqlAAvaQZe8XSF3QBR6AD8Gwb8FgIPhQBWcgD5nwVfAAB1dwBxeATkkAZw00" +
-            "DBzABppQCN4gB87gDIHgHxFUCw+gAi9AMvqDjMRAIkJgBdbUAUeASiiiL9nXDJfAMhukjqDh" +
-            "R2IXUAC1BDDwgj1TAbLgAD6wCUCSDL9AAKJBEUfjKZEjUYtxKUaQUVWid3sXNUD+RERGCFJa" +
-            "05BDdHgE+ZBOGGw8QVISGUSTN2BGhESC4hVpggsxgCdnIXpVERVZoVN9AXrC4UaVwhivtjmd" +
-            "Y0fxFlBLMom+MyrtMhlkx0a5oVWMJHbtwnIVYUg0dmQ7xhq/1IqnEUmxoxtQ9wQ2NmSO0Bt7" +
-            "gAayEyodMAmT0AEqQA3fgAhS4AIVcDHJwAtNcACpMAzN8wQsBwKOVAWZQAWkE0zxgSMD90vz" +
-            "EAPKoAgJIwUCQA4C9Ge3kAdUUAgfIwAT4AxSMAEXoAmMYApXoC8B0kAcgCJSgAl50Aoq0AGk" +
-            "VS2SJgTzcGnI0ocnmhr+FJol6AEsWAEGwSOIgAiygAP+QeIDRRJHD4V3JNYXadRCKCGnvEmE" +
-            "HvVeRXingjdS9FWcQhScyElffhqROvGEScETTmQGPeFSdtEV2AYVCAA4nodtQIUX+AhVTmJ3" +
-            "i4Ekm6KSTtIZl8JPK1ZvFREa+SYrNJlvpYErohOirIErcHB8rYAKe1AFpYMNsZM7cNAK8iEv" +
-            "thEfOikqIEBWt0oFs3CrorMEMVADrLAELaACeXAFD3ICEkMIyQAEi5AMr9QBSyBk4ZM7sfFI" +
-            "jjBIttMKlSQPHeAKzlAGApAEWZAF/nKAZRAPHdAKNSACQsAA5WIHnnANSuAI31ACTUAMdkBa" +
-            "SooxMnAN7DAPS4AITcALDBP+ZYDgDpoQGp4JOepYb/8UErmhI0JyEEGSreAnCwPwdrYpNDRU" +
-            "HNiQRoeBJIuxXhulmzt0EjNRp+81NXFANUS4Q1czkL8mJr0WqHu6NUKxE0uYeInHFolnqHrz" +
-            "NzxFhmYgVBC2Jo5iGLiAAIYBVaD0biNRKskhGpWRGueFGrAjMyv2VmGXGI9YcG25B1CnKq5B" +
-            "Bb6jOsKkG/MhKntwoiKRXDWio6LyVVQwVsECHJ+hGKFiOLVyBnIwCYtAB9NAP8VABMZYAclQ" +
-            "CgLQC7LQBDKAUMhQiqxzGrkyH11wOjZAK4XAfoVgooXwCsDAC51gBzmXCBijB/mjC1/1DTeQ" +
-            "jCb+UgofAILFWgMCIDEcQAwogiJNMA+kUAWTUA7ZtwhBAAQyIAh50HwAFbYVQUey0jlv2Bkx" +
-            "AB1A0gcO4QPJkArJQKaD8BGvR0OZMhizcDiEcQqzcAo4hEN6F7NYEoRECHgwYSV/5yXzhafw" +
-            "NV8EiTUJ2ZySF2DNFhd3c0RrEYZd0cB9wp2f1218QSmZgRg0pCmOgyQiYQShIRLG0Tu0Jxyp" +
-            "gSk4UhGfc3yfNhqz+oabc2OoEEi1IiNrVUkC5whosLZ+WyAUcRwU0SqzQrim0QJLAGl99Q2T" +
-            "QArlKAK/aAJJ4AyygARNkAWEYA1W0ALfUKLCRLqOwJZPYANVgAqtAJf+sRPGnGAI4HQxZfAf" +
-            "yNgEF8AG3vAEk7kIEkMOQRAM0gsHl9ACJDMhQlAtw9CBsFCO32AIz3t14LgG7gAs0KWCnWlv" +
-            "S1MRqKAN3EsOCIEziMAQPjAAc+ADr0AALDQSI3FelyIYLaspRrCbubZeOTSEOoQlr8wSPyGQ" +
-            "V+NeIuWbA4mzQTu0RWF4z+Y1z4kmZ6IWTmGdkToVEXwnT5FGhsMYhqEpS8VUswY5liEsIyw6" +
-            "wmHCpjGraxV7uJM7qCAjnnEawMIbooOgXgVMqVEIviJjyqeibNUKnSGgmxMvwrqUOjpkBnIG" +
-            "yXoECIFOJRAD3yAPl/ANTSAFFcAL/+EAF2D+ZzSXAzFQCPhworKKCrmiHJVkO4GEOz9wCR2g" +
-            "MHbwTU0wDrywl8OADCcHBznwIIgmA+5wDchSBSAkIRZyDCQzDIAgCFunCTFADsO7CDIgA/BQ" +
-            "ju0iGgDVT7gxMzDpAUvAA0KCCCbgAw4gJANABw7Qmg01GIzhGR+8GFAFAhC1GKfwjzeUmxzF" +
-            "EiXxElZC1lJTs3+3JVZzpz7kv7Tsm09onFHYXyb1NmMBKHCjnWAUtWS0DAjQNxXGKCp7YToo" +
-            "k29UOW/oO73xGeYpn5DYk33YfDVMt2elNKibGqu6Y+qXCTJTq7RRorTxtwEFHCMBLbwDuOW8" +
-            "OLYjB0twdT6ABA7+AgxL0AHFQA31Ewh00HGVLAWlUAHD4AcxMAkq0IqfRsa/FM/iQyvfE8eE" +
-            "0HETIABBIAXflASJ4AfXYAMeQzKGJgjusEi62gJHkAUoIwClMFxC8LzX0ALzxwNWtwjX6g7u" +
-            "4DKwiRuRjLKLzLVLQAkMsQkO0DM+YAKcDH5vV6lztKnG6hfgtgeel8qqvHc6dL8okUO9Zqfx" +
-            "FV95+ptCe9dAoWxI9JxOhAtL+ycaqZF/Q4ZBBVV78SgSBWu2qRha3Rlw+Bljdxy6MStcxSt8" +
-            "GCrILXCl0y6y+tm3cp/+ps4MKj4VMXAA5Qi5ciwu48I/0EetwGP/lBiiASqT0AJOQC7+i8BX" +
-            "dlkDLXAFplAM5n2aUlAGsjAM+HEAAoAJySoPyxF8XuwrkhWi7OEuMeAJUhAIYcCLar4IApAI" +
-            "F+CMPlfbSFAK+QBmvXE6LbAwHchK2QcI+DALqHCL5GCXi7AKILiIDsd6kMxP1usZckAJqRC+" +
-            "CcEjPJIMyTAA9jAClHF3lTEpRNNGoOeD6sXK7DXhMCuzWELLG87hGC5f9UXXvlZgMvXLfE0U" +
-            "1QZFVLQMehGp1tltgw1ULHQnJ4Y4pGwaNd4qSNKUMHw7MEJv7RG2Y3c6ndbkwLJcR7k6haCT" +
-            "uaMcotNIvAJMAIXcR0YfSgMcm3HOm7McSEIreLAENdAHA0D+rcnQBMGVA++tCcXwDqVACLyQ" +
-            "MZxVBvcjBWuwBKRgA8giD8DSaB7QBZnQSO9RSLx1BL+YBK0lBPg3DKUwDvCgAsWgvP0CBOJA" +
-            "AXTrCPPQAuBwdUjAC0FwADLAC7zwAQ8Aw1cACDKwCLyACRQAGjkurrZRqiGR3/y01DNg1a2u" +
-            "aoiwCQmRCr0gCUTwvqfCtbTW1WwoGPQrpz5I1i9r4XO6m7zum7c8E7ncJciO7AZMtIcaU40n" +
-            "4m9DbX4SA32yJn2hF7ZwtWGtKXtBm3CkKZVhb6JhvaihVSbcfGcAKqCBSeDjiJ0DwzpuOyf8" +
-            "iPFBG7ETL++XCZ6hPaZRCCo3SAD+5XtpC8as4ivh04o2UgVLIAfPCwSyIATuQwgYUwId0ALy" +
-            "kAcdIANScC6RIAQHYAd2gARO3AIxwB66KjOnEyoullzLF8f/ktDqlIwmUwYhkAc+p0xZoAwP" +
-            "4A10nhsdwAOodNMyAAR9AAjDIALXMAsewwuAsAiAABDwLjn64cjRmR9nFP7w8IOhhzPYPOyh" +
-            "CAIPpRKb5mycM6CXBAkbX6HZg+0UCBDYKqI8qdLIqT0ejFiguaEmzZobbOLEqdPCBjw/bfrU" +
-            "WRSoTjx4kCZNkQJPU6dxmj5NESdOUqZOk26ACtVqnAYNvoIV+9WWrbBpbYFF28BMWDNncS1b" +
-            "hssuimX+CFAYQTFXYkWKMEue4rsHBEwPiWMSPJM4IYgzTxyBgMhwjyMqiT08oaIQDmNUHuCg" +
-            "ilxlcpVMT1AVkmewSqsqHlQEK3SmUCY42OC0mkylEBwQBQ8WfGK4IDbbkz20aEGJjpBFssgl" +
-            "EUKH3DghkL5dKZTnRalFi7IkAdJkwgVlHPwtaVEouIqGhQ46qvLkSaEuVeTNa0HIjpRh7OhE" +
-            "CA7K4KWJR7yBo4MrgCgDk0sKoeKJKkzr4AhyZFiEDiBkIIccIEhQYRZHYiiBnEXIKeaSJ35A" +
-            "RTUPUHHoB8j2aCwxlFKaRY4vekmmozRcmSOVjlyBgRQ0jNjDCCZNogibl2L+wmZKD6YUiqeb" +
-            "esqpqJ52EsooMMHMCiuqsqrKqa66euopqbz6qiw4yRoLLKvOcuutO++0Ba9lYsDllBjMoAuF" +
-            "lvY45RTFDqUMBIqWxCa4xiRKCCEPHEnsDIPOsJExD6igArLfzgABjioi+qHUy1SgAhVH8sPm" +
-            "CRVaOWM1+X4opBAaqSgVBN+q/IGKH/b4gTcjMP1hSkeeOOmzDWKoAYg56AgEiV6AEIKQAYTI" +
-            "YpEuvFGhGFOOSMIHcrYlRNtkkEhiDfbg+AGO1uBVARUVMtHVhs+C6YAGCKQIYgIGFknCjmEA" +
-            "+eSSKuLpAEUr3IEDDkyBhaMFcpBQBokPK0BiGCT+WskDlUkMAUIZQtzJw8VfEbK0IShTaoxR" +
-            "zbCRgxIie+lljl4GkMAVV3aWBA2VsEGhoilfQgAlk9CwdCaejPkJS5ycvslLL7tE6iilsB4z" +
-            "qjO7VpNMMr12M6w510oLT7TMQmttM9o2A5c96fqzrxj0WoZQilCYMqaXkGMUsimxSVZT0Sb1" +
-            "7aGDDJMM2YSw0TWxJyA2oiGFVH4Cm1MttbWK4HyDrJVCEns4RirgqJLUJ0YtpAphH4bMXdGo" +
-            "aEGOcwEZgJdhNrygCSAI4aAJakaAoxBNHKGhCQ45SAKJUsogZJgwXpikC0zlocKRTOZVQYV3" +
-            "5akCDhsuTCKLYYbJQoj+YZLg3Zo8ZlnQFSQ0ySPZJzo1KIZogQCiAnKGIaSCIHwgD5+JARII" +
-            "sQoKzAgipJERRPb2qCmlREop4MEcQnIzIaVhZ71IQzvQsBcjQCkxiDrMKf5yioIgwANSi9rU" +
-            "tMSToUANTF/ayprCRpU2VeUqWPEaD6fSFKvosCxyEksRpUKntZClLLaIi56WIShc9KUueMGF" +
-            "EWJAGLztYS8eOExMEmMSEKCCIg0JjUMaKJpLhWaMCkkMq0JTqYiE8QyISlZMKPSEyLQCYrCC" +
-            "GH1wNSwVEEQe8EGDPFohLBXUBhuvOUOxMiM4iIGgA/uSxTAEAAQfLEIKQCBHE6rBPzbogxr+" +
-            "unKEKUDQBF7wYhRlkAUDFEAOXpShBJPIQal+g4rhOQIVrSiGI1jjS1JcIT3bSoIzdjeOCwBB" +
-            "HAbpAAxW4Q5NfKYKmTHdEo5Qgef17gDkIIQyENE+FUxiExUYBAUa4xCIQERUXGyUSgyVIw/I" +
-            "4QZpuBlI7NkzL3jhBQQ4BQoQwBehoVAimkFBQzyACxBATWpUgyEMd+KTLV1NKRNlytbCJrap" +
-            "VFSjQOzKnFLQgI8mMQ5pw5NVyKYWJqa0bctg4tvqcjdC9WVoj0LUo1DSmHcaISWYY4hEVoUN" +
-            "0hwLUpqSUURYpUvI1A85k3JIi85ABRXgsQr5OcNUQ1cFG7gHqqH+o0IXqHAK31jqYbHZjKYu" +
-            "M5HIOAIP1gyED8AhBCH4gBDqk4XAhrGKeMSDILx5gjhqAAhy2IEDZNAkGcghBCC8owUdQEVY" +
-            "PdCKQMLmM4VQQcI6sAhtlUFgUhAYwfDRhhIBIx/umKZtajOhb7QgRYAYBiJkQQhEEAIIxYhB" +
-            "ia5JBXdQho00iuNEQNCkdroEDzdwRRqMOwSe7SwNXnDFNNBwNxNGSTcpoY9KPFAFbCzDA1hi" +
-            "IQu5C7WGZskoWAEK2NakFTOliaNnwkMQr+Jek34UpCBt05saYLa2pKWIbmHifZn4RLvUxQwI" +
-            "yMsyEFUSQ0VKJRF5yaIqsyiDHIshalT+mkJe5K4XTeYyutwDKqogxlZlBnu1cUQiFXIrhrSi" +
-            "FcE6HAgcARzH8cbFv0kIqTDnKRs9YRKTQEQTyNGLcx1gDsMoQxKeE4ZWuCNWpMkPGh4ACW7a" +
-            "YRznIg8vBNCEKHTgBaeiDRUykYkSR7UVhqTCCwhBDilwgBeluMMwmpCIYXxAQUuAxzwokKwf" +
-            "RA4hVKBAC0jwP3L8mRyy2AQhMmAKD8TgCiZAA0kYZaOIpJOLNDVUlYjGIwkwt2caNK4E0pAA" +
-            "ThDAA3g7RV6qhCxHnMQg/fyBQo2xAe+CN7xf+tJRlrIV9DLliF7hNUbR1CY2dXQsQwSiEsXS" +
-            "lrTlCS5oQ0H+2+bSFytCCTGU8QCiTl2lKul2IpSjiJ4pYxDKfAYlVcAVCPRcKYJApiAMKYSe" +
-            "odqKF4EuRl3IBEK2BxHf9FGPjstEK667OsF5L1WOwMYSOjCDTVwgEMOYAyAuSYfm+Q8ZjBhl" +
-            "ZW2Vn3mQggRw/Q8QBHAHQDTBDuTgxAtIlNUfZKILHpYQhVrxhA68AwiBEMIBMAudLDQhHHl4" +
-            "OTUeMJDvvetSHlgCD7hJCEL4ABF0ULob8qANIizBDSMgAhdToplLSaRlIBha3vaCB1Asd4PF" +
-            "hYFxaZAGTozgn9bGxVmLVQwPLGMPkdPiGWhiDLx7F+8WkFqsZf20olCUvDb8oZr+Cg9s9R4+" +
-            "Tbse9pzoNFKyrQ0scXlLE5/o7LlUkS97gRKh/lISPF6KISZk1ZQicyzHheYMcOgM5kyHuRY9" +
-            "Ks+8JUhMXAfWQqCCV14tiAriJQ955Pk2MvJ9ZDIhDxeDDlQQq1T95g6HJSyhBoFAOi+SQI4K" +
-            "iHxDAyOBO+IRGzioADjbc0QeakCIZCRCCrKQwsiHIQUk+OAKjL3V6jNRBVsFEg72asERoCOE" +
-            "JiCEJuCAYTgsPxgIU8iD4mGVVfmVhHgC6dsfOgiCCngtOiCEFSCCGAABW2gFAkAaiRCVxngZ" +
-            "yoiSWXgJmHiJ4eI0T4MBnkmDjaCEXxgBFCioHyi1d8n+rusCI/nYor3jO1nbux9sGiwZr/ES" +
-            "vPWiCjTpqMTbtfYStvo6k6/QoSmkwqrYr7NYi5RqAJaKgZfqk2aLIpk6FCZBGmwTlZg4pxDs" +
-            "qc04FtEgiMR4pBdbGcmIw0iKnIS4HoZ4F/molFhZPRuAj9n4sFawgVLxJeBwBD3ClHYTlj70" +
-            "gHZDCSpYAjmAgRTphedYBLmCq+eQAlhwB2/AlSfIqutivWLwhhqYAyBIggqgg/PxgQtALEHo" +
-            "gBbYjfrAj++hLPrQow7IOSEoA87iACkghAvIgktoD+EjjXarlDx0BIrBJqSLLR9IBh+AA1tw" +
-            "sWIgAndSklOjkiUhDBP6LRT+ZJINcII5SK40gIGN2IRNoAEesAciQIBTOIiXsJQqEg0qkQ/M" +
-            "qQKn0buo8bu+s5qIEpMa8iGoOK+D1IomzCElZEL4okJjMzb9gov/sgW5iYuXuBu6MAIC67pD" +
-            "IaHD+CLKyLN1KiqECKoXSwjhII3vEZWCgB2hQ4hpihEJsZFYcQjg+wzfAxbyyz/TyaWqag1z" +
-            "kxAjcATvQQh9ZI938AE6SJHbGQY6SIZV5IU58Id4yAMQkJCsVAFRMY0zGIFrOIJKOoZkOAAB" +
-            "uABCGIcsOIB8kB44wIcXUzHfwI1iCMRJkAEpIAflAYQkSIKCEQB4qCzMMAiDABZUIA0PKIYl" +
-            "OJH+ZFg6WSgBH/CBTYgCNPgik2gwJwGMywShmNq8U2ACUeC0NCiBOYCBTYhMhBsEIsCFd9Gi" +
-            "hvgBeSyIuAMBuFsSNCBCvou1H8w78HqoMAGb8lqvxEtIJQwijpKK4nQvHVrOITKp+yKL/IIL" +
-            "t5iLGMCLurELI/iTzQuMFJQJRBnBPUSOSmGgF4k0gnCRCoEI+iCI4dGUzME3hjCtxDCIR6Ef" +
-            "P+SeUwkd26iPf4MYW7wuPZKNYGiMRJoMFXuCGBCFMgACWZCBUiAEWWgC9KgrISCHVqgDzvEl" +
-            "/LsVXWpPcaACHiABAKGDvqQDYayAc2gDUhgWT7kVzpCQEiuEGHCFJiD+AyJbhPRJgkW4ACu4" +
-            "hOGBg8ipH9jRJYVYAlHYH0QAgqhMhh9xAyLwopcIISXRKc7jIizKCyaRu35CADkIzbKbA3Ao" +
-            "gTQotLMjhBBAAwTwDaHBFBCoIls5FgrhIhLJu37Uu928UxmiIYkqL4pawl5Lwj9dvGLjNfiK" +
-            "k/1CorDor5FqGyaaC5bqE7lZhnHUG0bRukplGWFJFuSoQ8FhDOKADF8qo2IwndWrn4i5EZbh" +
-            "lVXZg8cJDvkwty4InXfpAtNBjfqpP6PEFfAplapKnapqhUfxFDkoh1XwBzeABD/wBxEQgVXw" +
-            "AzcQASyoBZOpLHqxgchIJNnAFQ+IB3Fwg2L+dQMs8INwWAUsUFYwuIZfkQ/f4KpWmJBCyIEQ" +
-            "OAQ/8AMs+IR5VQUsWIUQuAZy07/ruR6VSQx2KIRwCIdlFYF3OFZgeAciQIklkSCaWoaU4Ass" +
-            "kkc/iaKNNAI8kARIgIR7AIZw6NhwcIMjOIJVgAUCQAGDqDTTCaHrAcfPgKTw6se7E8K7u9mc" +
-            "ALyl4FOtyYpdw6iGVK8pNE7HI9o5ac5EDSk7qci36a+74YvsZBLCUJLfgiCZsJHGgYj62Yzv" +
-            "SSeIEQ6DShnIuJ4qyRTRwL9RMZ35ZAjO4Iyq2h77cw9HCAZ52AM48CrISM+qig0K0c8Xawiv" +
-            "TMw8IIIRuIRLIAD+CriGSyCCS2CES3CHB2AEd3iCdh2Vdl29T/GwgyiGB6AGyHWHEWAETaCG" +
-            "xIXca3CXH0UN3sAPg/CGB3gAfXBdfVCCB7gGfWAERtAHUmlX+ngqR0ADc0MIaigGkxkB4yUC" +
-            "IiCAESAAAjCM38IRwoASqDWwKarBuzACiT0FNCACCiACNKAAClDea1jeEXCH8D0FVtGLX1GJ" +
-            "U3iYoBk95LDZFuoumgVCWQsTPh28jeoaxBtOxpPCsfCaAK6TibyvtIjIs2gbuIAbl7Leu7GL" +
-            "P2EnS7s6F4GMp0qIwWwI+wDVzjCMFyONz3BJ+8Bg+2DE2sCl2shWhlCBlTMth6CPY4H+YSOA" +
-            "F4agD875gXuDg2Cggj24DTzyDdYhlU8ZHPUEAW1w2xLjotVRxvqhjz46iCdYOUV0l0G6Lq6k" +
-            "gqzC4qgit+4xDbmELFuM0bFKFrJdFYQYwXV6iKETlcChKamdhX6K2ihiEuu0Ir1RCRRoDL2J" +
-            "DUQpBmxoO/jABQR4MZghCH9amuAwCA+Yhe2q2YD0R78rwt/kWbBJk6AtTpAC4KHdZIhUTiBK" +
-            "G4k8YP1yG8ozg2bLzrzAC0IhMMTAEYlgFFStFNjBlIOIDNVoDM0piHYD4c44leI41TOorOCo" +
-            "Au5ZPVJhxFagDBWjDA7djN/olFiFxAClN4bwHm0Ivw+DxBT+fhjPOGFfagxuRrHh8bcSqx8V" +
-            "wAdzWzHsmRBDxOHf8CXXkBDQMQjQKYhp8iVPyQ8qkKzVcYRiABbOwIwWcaCho66HKAmYcWUI" +
-            "UhJ/qqLqjNRlyK7JwQYEEBwC86UIgoM9QIDGkgmVPaihGVWFIDgRwpzmA0KaTek6TWnxKsJa" +
-            "CzweSq8cUkj+PaIApi/Gs2lBNSkzeDwtzJPJ868oorwoYiKoxV6d0qKToBFJ+aLBBFWI6bDP" +
-            "aIipbqzMsNtAep2DqBRgASpdQknVoAJ5yI19Do3hqY134Q3bkBUQoLfGqOdWCR3RcA9IhIN5";
+            "f8IgFmVi5mQIHgMfYaLNjqQvhgAcBkES1SsBTpUIpsFf62ETdADPAmEUPq8LbsDXboATbM0O" +
+            "cMEEusIwBJIeQMsqqkEStg3THBRZF28D+MEIDEOLNaAlP2/0RG0KRI0INM8pwSALuOEX2IIJ" +
+            "qqH+CiLUD1qrALIAPVtLENJguUwDEuzBEez7vnHBEeABHnDhF+zA9+rLRfVVAhggFM6ADlYw" +
+            "H2YBHuBC2OBB2MphlOxmCKZaep+IOepyObhgpigWV6wjY7EDV7rDV8hDO7ZIFg3OV0rWrLuU" +
+            "ZrUlPRjpc0KTlmG8xtP0xd/0lymBPcYjGCsOP/p3GTlTf8/UdDgkX1KFd8rlQoJjyX1HOBRE" +
+            "OFrCI2RihGekRVAJKjKbYoQ1NU5jUjh4AX4jMprTKGZEyxXCUgWyR9hEDLwBHI6BBwRA9m5A" +
+            "AGjAh59gBzjBEpXACFggB6Y4waRQwbKAHyYhDQCDM4akLeSCBa4g9KD+AAxioVs3LxYQIRJM" +
+            "wBQmBQe8wB82CwwZtM9oazvRII6PFQZMAKW1uA+SDbpU0imxswD4QSqDBAMSgdPyYRKMmg6A" +
+            "YBZ8nQ5mYRvcYMEkgCsRDN14gBRewAZmYQXbOR/KIdrlIdpnAQhUJCS2z8JjZdu/L8QAbvwI" +
+            "DjtIfOAQZ8bKgxcXU5UvB7DzGj1+/ADTY2fZd2ZvvMbao1rKmjBhGVk2837tt37VdF3OxV5I" +
+            "Z8ryZXf6CCXq5Ws/ogLjhTY7ZTWsRynCrDRWUH4UokuIDpthghGgQgy6djNy6bNJCeRZA7SV" +
+            "gBHAASfdgAcKwAn4iwh2IAecgB+KdwFMIM7+4di+KM0JIiEbeqEoNH1KMOAC6IEJ+IRlWAAM" +
+            "CmAHeisBYmEE/NYM6iENqKZEJQEVbo0Gwutzd81a/dYSCsAMimEoE+UYJKGL4XhBmfW3HKEX" +
+            "YNc0wgZGtvmaiQK1nE+/7rVHeSAUbqAZ6AAkorwhoDzk3GaSX0V6t2/DaYWKBkensIjfAs4w" +
+            "ARN8uUAHHoeXzfc8buGp7mNNNafi3GM077r+NjMB16g94n3d0UPhfnnd1eg+3qgxuwrHTi5P" +
+            "USIj7CjJCWRBUseZW+JDZsNbNqlDTCLMzOwgmBMmXuI2b0JS4cwwWuI0+PF33BEJu4LqQtAl" +
+            "Uh4J2/keJGEHdOH+8yRAF3YAFcTfD5phYNdBGq6ABo61Oo/AFNIA6Z3JNILGsIyCCQLBCUJv" +
+            "AwDCzAY/YCztyLIhnzUmLKr5I0IECpEuA4lgmXLE0gYiG2IRyTKAGJV3sgzxwHIEypEClo74" +
+            "G3gkkwNZ75QMqqkEECAxicSIGXJhyM5tLmhI4HGDB4+jNG4wsNNs0pw5d1BYncpoDgqtU8Xc" +
+            "GbLVg9gQZMuGiHEW7dm0IbjE4BKiFZe5cuXGkIvNQKtHXPbu5ZL3EbYtS3gZ5rVoEa9KlRIj" +
+            "blzJGy9GvCQ7NuzNG+MtvCgdRrxlEaVKhhkvJr0I2+EtnhNTWoS68qLMjWfPbqw5szf+Rox2" +
+            "35nTmxFY4EPu3GH0dchUoFTnDFHu/DnVr1Sfo7hzQYmYOYCULBgiZsGgnYPoDWLnfdAQJe8W" +
+            "iAH0LhE7QIkWXJijRNZzJUp+09++gHv4LYCCGNpxh8EFQAxByg52jHPEDjwkkMBSnIAgwgXE" +
+            "sNNIAlkQcUMWcJTjAD0LsPMOPTqZ8s4ciRxg4CsamDPABjuAAYYEWYyQEhj2EHNANcdAAcY4" +
+            "BWDx0ABYEGHGAAVkMQVHWBC5iyKmMJTFklBscMQGG6BiCRTA9LLOAuzxtxN/OQFywU9BXcBC" +
+            "DjQoxQkPcyLFgxNO2ACEcVpdd1VzU2n13E9ieRDCWImuFUP+o2ox2spbd8nFl11+PbLXW5j6" +
+            "pRo2rSA2Gy9LKFYZaYgdplhspypGqqmhXWZYaKZ6diovoXFmGK2gmlbbbN6Mhttseei21W/C" +
+            "UYUcWFsBNQRyPwlqXHK/PXcfCtbdYWBxgKhX4AHuKeHtBejBCMgB7+wki31DpKgEfrIkMscF" +
+            "NWGXSLsoJALIHAbmq+89XwGCAiPvoXDPMQm44MIOR7hxQwFEuMFAMcdsw04yx7iBhRk7vOCL" +
+            "CQbSowQ75q7LBAaAlAwfFX0cgSMRlowwDhQjtARNGkr8QsUOaCyJxodNumzGR0tiMYIfUECj" +
+            "yAHwaGBRAaio5Ic//qQER9IYqDn+iBIX6AQIeG36BN42btBA9pw3JJUUAzzYMItWvAFXlbWD" +
+            "QrfcEBMcimhZjzKKVt93xdVoK3s9Qjimcxk+OKaEc0YYqobBZlhhoBWmmGWwxQY5JXnhusVg" +
+            "BhjACzakOrYIrouRfps3lWvGmGalZpbHsLBnBpw3xzUnHG/X0f3c24PiB1y8YvB2wQV3eAPU" +
+            "dnfoBBQgsuTrvHoXBLheTXOgKMt777zDzh05eXXBeNgNIkYe2Q2PX3FDDKJVIkPkMYcsSpwD" +
+            "RBjj3KALETTkoEIBezyoB0NsIxEm8AINwJAFR5CJCQYyBYzoYYohwMMe28pETUAgBRpYwhPj" +
+            "yAIijnD+BE9goQDQMAIG7IEDGmQBDEdQkh8yIohdZOEIEVlJS8ZBhDRUYwHV+EEB/JCAlExj" +
+            "HONIgA9s4YAD4Mtk59OJgbTzJq2xgBZOIJsEzKaUpNjhBPKgCgrycBXjXGc604JOohA1gTPm" +
+            "rVF6I4ujGuUWt7ylL1zgi+Hm0pdW5EVwBljCYFTTOV0lZgu4WoIOYhWayC2BM9gApK1W88fO" +
+            "RfKRtHoNqU6lOsRo5nKqSwwjcEObyMAuOCjwxrDgZrvgBaxZuwMOb3hzu+IIzCvTmg5QtgI2" +
+            "FHRHDNl5B/nEAI97rMc+3DGTchLBvXgJaD1iQMH58POO4sQLLOCZita0crX+fAyhE35Iyjim" +
+            "4QZO+GEcduhCDapBDWK4Ax07qEMyFCGLTBzgApmogMhMAa5M5Eeeg0hGNYKIBhDGAgvjwEJB" +
+            "ilGmQeBgB+MYgESwsIEjkeEXGyAoFGJRgAJ4CQrxqIkG+jAOoxFxIhAhAjccQBI1qYmXSmBm" +
+            "vcAWpxXQYAdXPEoWm9IMOuDOOFmZCnWmYpXfzAFReNubWfKmN0nBkY55xGNdDqcXwrWCkXkB" +
+            "na0W+RnTdW41vNBj6ArDOFtNtZFkrWojwQoqVCXGMa1TXa90E5lPtjV2ukEOI0rZm6COkTjO" +
+            "EapylhW8rwTlOc3CjnTEIEznaC0ogxBPuQ7AH2T+oit71ZsnigSkBPfhp6Xr0U712hUeanll" +
+            "QL9pDxDEkAMikKILR+gCKVKyAwYkYBgauIAiTHCGbPgiEfQ0RQPxdQAYyWKeSnCgGKqxgx1A" +
+            "wQxE5FEC0DAAP5hghzjARxYsAYYRYhcKz6BCF7J0BCygBAuxOIIt1jGIV1RhJRIZhyUKAKEC" +
+            "OMBmZtqWyTLbUjXtJHlEmVMX7OSEG0jgBnOygw3ksZUxbkV3XBlUVYxzqEWhxQN761ui/DbH" +
+            "uSy1qXW0o1fLSkjBeWoJejSA6EJMyND1UTWhE1wrDEBIz3Wuc3sxwCFjzLhGbhU2rzmNJdl6" +
+            "OcYI2VdC9kYpMxO3zFj+6zhZUQ5vejdNaf5VX8oxzjX1FRThXHM97uPJPMNzADa9w4IXCC6b" +
+            "FhDmISzgFaAVz/IOwD55vaN4aO6ame6Tk6/w9itmykN3lAAEFviDBrpIwAZ4wAAiHMEON8BH" +
+            "NbYhBhMQQx5GoMdzLDiHd5iiO0xYACAcyB4mDEIDkhjhcsfZswKMYATcyIQ0PmqGI5gBDUTK" +
+            "ABTSoA0XpAMMG8iCGaAAkg0AwwjWkAVyj3SEBLSECH4AhgPqpYSr7VJcgGCHULLFS0AQhaY8" +
+            "4MRRuD1gBhw4eM0pFrmF2mCiRniNZUGqG9/oYqbypVGIqyOLCZcXbBCOC4bclB9Vo5epPoL+" +
+            "kHpppIkL/jk+VlUHUzWAYAZjq82Z2HSjOQywItOZxGSyEsdZKyNEU4lSMqY3siuWtVqqlTYV" +
+            "lh1ue87xolO3gD1TX6ONtnMAcefhugc+O4esgXzpk3dgQDmZBYQ3zNSfISQiEdhSojXLp8sL" +
+            "OLOlKMia8ZRAj0QAAQeH5sF7Ga0SAdyAH9UIxJ/FIAsm8IceYTbzmGtSgUxcwBT2WIUUMgDC" +
+            "CAyACHgoEhjMUIJkmMIQVwADFDIGBSKRQYdnOEIWZmiJEYp3HJCwhhLmYYwuEKEARxiHPxJA" +
+            "BH7QYVvj6c6ftSYG9ASFTT7RwA/ulJQBK+VObPvdffz0G6FWJSv+10GqWB414UW1+y5wzDCl" +
+            "/IJHOg48j4ojqx73KGLBHNxTglPciwfjYhdvoeGb2oKJyRrjiKcVMaORTGlIw7rMJCYyjPHV" +
+            "+mnjm1cCJ2A+ffBPknMd6twV5oQ1DmFv/ixO9B6yUDze8RPdwVump0v84RzksxU2sR0o0lKD" +
+            "AFlC8TyKBQhaVhzo8RzeggHbUA0YIA33UGo04ASWQARqExEtwAMnIAywoASdJgZXQk/2wB42" +
+            "KAv2IAvswASZIAY9qATHQGsdtBEucwR+gAVkACRpEAggQQQDYAZIaAvEIA1UEDNhcnh+4Adc" +
+            "UgJGEIThEFIuwVoFsAP9QAyehi/a4UT+/PEebMhLQcECP2AnTeEESHEDdmA2ByYd0uQc0RE3" +
+            "dnVXd4A3REUWimIWayFH9MZU1Rcpb2EpLyY49qZvg2Nj3lc4nrJHkiQYmMILDPc5njJwfpF9" +
+            "ghNji2Rw3hdjlvQ4p1EbmVQZcMU6keEreXA8prQVXmRXx/MVxzEEifUbvEQoXSNYsvQs2NI1" +
+            "U7cdznEfBpI9aGcmBnIA2VNm8HImykSAanYA1vYi7FNnc7AAFwgu/SEG54ItsqBYx8ACLKAB" +
+            "B6AI1LACA0A20WUHHOEg0wACLPBpBPgiYnAAFjSDc5YIDMRzQ0APTKABTpABRJAAsQAFDWUJ" +
+            "HpILivAOQbL+Asu1QgNwBM+QBuBQDdOwJUoCBRh5ePyQNLJwDBvwEF0yTkfwCg6QE1lzdt1R" +
+            "PD7BJtrxHixQFBIyh1lkJ+I2C7cYN8txi690FXflboaYVIg4R45SKYpIF47oKIOjfKJIlS4m" +
+            "VXa0iYMziTqwBX3xCFGlR97ncDW2fSS2VSb2GY+0VrfRVpCRGa+RfrpRV4HoRX14HcLxV4TV" +
+            "U9KhL/kCHn+5H1H0E0JBmN5xH3XmPSqSaaKWmIBwBzfhFexBPuCSjd5BLubCS+PhFTThHPcA" +
+            "L0NwgdugAVdQBttwDO8ADmHQkPmDBTxACkQwDkoBDBMDH/lyABiAH/MECJkwdNH+2B2mMAiD" +
+            "kAlU4AIrVFFZUgBQuFzrYAj0kGtYgAfhBQbAkAbJ8A4aIAoqYQZLgpH+gAXFkAYgIA0s4ATJ" +
+            "RgM4NA5d4ADEoDUyyQ5B4RNvSJgzKQZE4ZpKgRRqc4eINm5ZIRyBwhVghBxYwQiK4jdnkTeI" +
+            "8ihuATiNKCmC80ZLFTh3wXxyUUeUUjh5RKFeiXxeeZWtoAOY4nCgowP5JkneZyuaswQwZiuc" +
+            "0SrBchqZ8YqnA3++UQlgFDAyd3/RYRX/9xyOmRzb0Vm/qDUntx38GE33cgDFkR/DAy5dsx7n" +
+            "ET75wo/tsj68BZrENFxKgAIiswDXozXLc2VawwjocTz+6yMGIrAK4yABUqAB1QAO53AFI0AD" +
+            "DHB4unADDXkDnAAHGhAIkFku2vEObDZm49GD8FEB4CIFZ0AEiAAGCTAC7WAR0bkBtoAiOIAO" +
+            "y7UBBcUPDiAewnAFm4oFMxQRRgMF0mANC6AB6EBS47ADRAAHDpAdaTKY+8FZXbMTboKTNOBt" +
+            "O5AUpPAUDHA2UXGL6qN/yBEw8CNGKDAWCfp7hQitZyFHZfGUgbMWaVF8GOoWm2KhdOSgdHEp" +
+            "yNeUiiOi2qdHz2eiJxpjpOKipoIZtaFJ62cbwnKjHPdKx0F/vVNG+4plyrEv95EdU9Em9yCw" +
+            "hGUT0NMdQBE+QroT8ZII6qH+ZtWGcxnIDheIInPGDoMgP/rCH+ARpjzBpWJAPvFSpBegAdvQ" +
+            "CLCZAFQQCBigCPdgDLFwP70mATvgnZwwDfZgCCiwAJmAqNPDDc/TAZ72Cr6FAUyAc8PgBSwT" +
+            "CwTBQodnCf6wCyYACNUAUn5gEOOgQCJDDCygaEGEBQrTeX5QAooACNTgBQmAngWQAJ06H6s3" +
+            "H9X2nj6hL9EBpUSxBwFmU6RwNnZgB+LWRbqnHINbSlbBe7BDiDFwlIdiVGahFhhmYWwER49A" +
+            "fBw2b091ODFgR26xF5PYoHVhlZvyiZ0zcGRlcWpVK/KqSbrhfr3RfkYmSlZhZHDzNsrCU8YB" +
+            "jD/+OphgMy1BwR3JiHPKcQH14rE7gR1+OasG8lLh0RPhEU2PBR4HYGllFmbyEmbcUYGGiR9I" +
+            "K6ZDAIJXgBQfkQOBUA1M0I4bAAYMNQKocAN+YAaWQANQgAMscACJupva0WlKhwHsgAHpkqVi" +
+            "oAg5Mw7ZxREPOQ3RJQjJUC9U0JCcNw7EYDPwoQE5oBIQMgVQ4DAJEAnEMAhGcAxdsIUOswct" +
+            "6RM5AR6p14u8pD7McsIs4AayZ4cS8BRIoQsHFpTLAVSvdFewVBXNOojQ6m7YShZwIblsRIhp" +
+            "wbnWmmF0BEeN2BeTom90wVSBcziYsgX4BqJjCXG28n2ERCuswhmtYRv+jUEJ6ddWvUEsuzEH" +
+            "SPYnTcY7PvUT2zE91OJZHnsfhbIfPaET7+IT+1g9P3EASIsiajeOMlhcgvoKXzpm5ggf+rEu" +
+            "oAVZ+rKxnUUVmbUNgkYEPKBc6XAGDfEOdEAFA5GnG5AAKgS/fiAI6WhcN+E9pmBt5iIvptAm" +
+            "oIZcLVQQ04BAHIEI1JkJ4HAM/qASYAAH+WAuSgAPVjslCVDBBQAF00AEiqABShCHWoieDqAI" +
+            "9bJfP2ptg+kcQnrHKBsKN0AKPHk2L3CHBxYcPvU7XwQosqsZEaZG8PxuFNZubnStbCR8aAEX" +
+            "0rphGipvk7JUlfIXyVcpH9pIUxU6Kdaig8H+SI9DKoJUccECl+xnO0e2G7wxLG/zZHOgrINL" +
+            "WNQCnzyhcrMKHpQ1sdDIBM6xAEzAWEs6BBgAMuhBD+/wHkoUFMG1NTg9B/2rHO+gdt7jac5x" +
+            "LsLhdM3zL1I3BOk4Ck5AyrowDqhwBNpwDCAgC0BwBVlAU2AQCzyQnFBgaGSgjvg0vCeiBI5A" +
+            "09IAD/mUWcB5DMCwdwjUQcy1AXhnBFWAARqgMPELAyiVEwuQCJcAEV0QM7A5ETvwDJZnCH2Q" +
+            "AD/kA87mHVC0eoH50ULBDnG8DbRACqHgt/iJaHfok2PUZLsYPIEoRpGxKD5ciO52oIdYz60N" +
+            "ud0KoZLylA4aKXT+IVXgysSM2BeeQ2KNpAOX5EgKDTlrdRjsV8aL8HGwYUqRETs3+hulRIu7" +
+            "iDzzB3PeExR6Vih83FlWii+F0hPr8zzRy1n8cQ9bUy/zESDXIwu4iXY7cbHx4i3PwQRLOgfF" +
+            "7D1Zs4D9MauKJQY6sA1XQAMqsIVOEAoswQPVYAhMIA2JIAlQQAMeggV7YFCx4CHNoAHs4Aji" +
+            "8QrxYg9MQJCZgCKbFo6GgARDUySOd4SWYAmOIA3X2QjpABGQMAkGMh6vxtVEwFDj4APoSZI8" +
+            "YYWgtwOdqhP11TXvAR5sonLc/Bzb0Aln4xSuKc7CSgoGRgGAAh3UASj+CTfHoyiD6MP+zsra" +
+            "R3XEYZ4WHtCtUkwpdTRHfjEpmwIXkTLQdfE5JjZWotKihJRjLUoJiZQrl8FW5ac66lcJuhMw" +
+            "O+yf+afDczOfP9FSxbNL63GMm+UmJ5Kb29weqbcAGPATC1AToAkP7JMIW3oyHj4EB+BbxuzK" +
+            "4UEPP0EP8GA8nL4d7GFnS4odC5COQC4B7jsOTnAkPPCmmaAIm/ARNHAEfODVZkCnWDAA83AM" +
+            "wLkA+IR2OwgfLbU9asZAx5Bd04DsjmcGBeAP4lC2B3AMV3AEUzAmJmAmSHcMkqB56UkE08AJ" +
+            "OGQMimAN+XAMr0pE/eCS77ET4tImbAIe2AFzf7INTfC3dsD+Cm6gC36b8AIgAOh8l0A1HaC9" +
+            "xrtRHBE2AXeD2qkNz+sWrUjJN4/rVMRnOFepOHGkuXwhR7btlSAmfX/EYn/0OZ8xGKWjVp5B" +
+            "GkUGf4yRB2/jJznKe6WUez/1FYNZ9NRSLzcnjAYyWNmy3Vi2X7WpdPj04Qmy0u5BD/awpM/O" +
+            "jRWIAXDmsN+hZoPgf4OpRMqhjk3AA50nAQkwJRNyeGdgCNXwDopQBTAuJQrDQgeBD4HAAu/Q" +
+            "pSw9kGcSg68gnNJgCJyQXQQRncoeM1UjC8LgBUQABnqQRFcTH0pQDVcAepks2Ay1A04ADpsg" +
+            "BhrwAqDXBeDQCzb53SrMzView4z+gLJ/+xQKLwB+SwoJrw3nwHu02GBEKdq94+UeoPHOijeH" +
+            "qG4g30bAF5V2kWGT4pWce7l4tOYVqn2nCGIEx9Bb9UiPwxq0ghuPw36w8XE99TYJtn+/s3t4" +
+            "qT4hA7Ahk20Ee3LFA+nOxOks5x1gwRPsgALgch4nAxALhgBicgCQmHemlLB79w7QnAUCUQx6" +
+            "J2aOkgWA7og5oOQOREBDhigBhGIIhkE6WFyZZmfHkR1uiByhYQcKFCKOjLwDB6QPFpdYxnGC" +
+            "ko7UjizNAmlwCOjVBSWm4BHsAGiQvXcL7FWThGZAAjOI/GQxQ4RIrjQLkmmgMa6Eg0GJxCjB" +
+            "ANUQjR3+08bhpeGEiARHigCt3EGDUz46ShQDugBIiRgxQ+bMQTFH8sfIk0XQ0sXKjS4BrOwI" +
+            "cFPajQ15dxgxQoGC0eTXc/IwGsJ6TiJG3jx4mLC79+4Qu4XzHg7cuPEQyZXHYN6ceasQMbg8" +
+            "4sKllfXq069vb7X91Hbmj1qJfyQem4FH2Laox3a+PS/18NVvMWBgy31e+Xkt4s+rUiVvvFkE" +
+            "QAEXCdBAb+bIbTUFGaRMwZDmuOOex0xKJEIl5JqDHSWG+OixDzscaQExULBqiMouiIwdxzqk" +
+            "6zFADjhAJCUOuICdA+AR6R1ZLrhggQ5ve0eJOQY54J07AFkAAxTmYocRQN7+0WAbJwrYwY5x" +
+            "jhhHggKgSIAGLKB4JZ8aFbnAGEt4ICIWKHzYAAwJoDBDm0B+AQSQTEiqgB4l4MnEsQMoyuSY" +
+            "PizJYpwCsCjgiCxwIqIXajCo5oUdjHDAscgGOUiDHG7Ia4cECsBrHH7AeUyDBJzAxwF2xGAs" +
+            "JMYuEEk1yj66A4WPLNuGlhx0YWC0z/ZxQwAB9tHmHBTy8IYR1VhrlrbaaLvgtd+qJa644oID" +
+            "TlvhgmMuuhjADdc5LqTTDrvyxIvhuumqa67cda0Tz4DuHqGXPWzstY+XLbqLD75HtoAPvi0W" +
+            "uW+R/Srhb8BK/KuEEgAryU3ZO+7wpmIPVRPJNjH+GPSRNleHiEyJC+4QWTKTZMWsQlfFuKMx" +
+            "D0fyaI4oIavRRSZIVuKdGQGRZqohTHkFsiPnEIMeJixi4p05vBmpNiUj06AaN3iAYoMrxzn0" +
+            "pSxAJcOXSw9YgA5rNhhnHDzA4AERPHYYBww7NKDiHYbeGWnIGis6wJQYh/EiATCyIGKDWPyA" +
+            "Igt/doBkECU0cEEUB4xQDMghErlgmz4K82McJ3YobIcV6NgEHBaOOmESkWQd6OTJJqt4Mtdc" +
+            "Z0SHRmZwg5V9dHmiNNLckESbbwJcLcFlN96Y2XssZkS43ib4jXnfrsV2Ww+Cs17cEODNrrru" +
+            "YqDOuu7ajff77NjNjrz+fnVQL+D0dOjXAPXQm4/f9pYQGBv9+KUE4f0Q7s+b//xnWQC8GOwq" +
+            "k7GNVaZWI3kII+bykCHISkIikRBULCKGRIjIMZLxUWTEcIELDeEdObtAQipiQhHagx4/oscB" +
+            "5oCBjrwwhhlKxEYek4c7KKZiJBHBSvxhB6sdwVNQSJPh/ICPdZjAIYEChCKqkAAJmAELZolF" +
+            "AnaAE3NMDVCD4Ag9IsIEDNRIISaoRheOgAUzaG0A47CEGQpgj2QAYhvmgIEDhhSjGSmGGpcg" +
+            "gueI4AQe0EACKxhHIjYhhkBkDh6TsAxkmnQyk7SOWbH5SGtop4vS0EIIpdkH7vZhBRsET1n+" +
+            "q1nNEO6hoHvgxkLMGsJwnMcb571SerPk1nCs54HmiOtd62rOdd5FnvF0J3zsasW6hCmv+oin" +
+            "OwIbmPoMoL72GABh87tPNZnpn0VQImEDys//AhQgBUVLMpeRzLJMEjMKXkRkGwmJSCAjMkzd" +
+            "SDGUuZOHoiQrIz0mKgeYy9JutIADtGppLjPSBSBSkSI55G4L8FFEaJSIOUCFBduw2jh0QQMo" +
+            "TEMARBgAFhgAhRE4ohwHoIfICnIPI5xhLyOwBA2OYAnPbQAKSKgGCKJUASYMwhSOGAQ9+JSQ" +
+            "juCAEzuIheCOUJYNoGEcMJAcC7iBCwfQBRBh5JAS8sECHkgAVDf+GCQpGMCDXyRGBpe4gTzk" +
+            "ATvLiEStkkzQRyjJiG00wg0W2IewcjdXNwjhByA4Ky9uRcCNXUQJq1FMHirRSuLE0jfPa55i" +
+            "F4st5US2l+UqVzHN5b3rUCeY5MFOMLdTrvKMJwY6qNdmsdEKA/BiCa1Qz3jeg7/X4g9+/MFP" +
+            "fiiBDW0G8JsCVI1rZvWRtRrNZBGVDM1QFNFESMYxyR3CASA6hAWUlGYCMdqFGtkhhtRzEEtz" +
+            "DDxIdAF6ZMJVTGCCQWURKIh0ZCSZsJss6IGkRCztIkO7wza4cgMi+IEIDBgHTpyAxgLcAA7Z" +
+            "yAcgTJGRd3gRHCDghB+OCoYEYAENXZD+0w60oQ1rDCITTMAThxuSQSaYYhDVMEYCjlCAs0Hh" +
+            "CETIgiVSoIiKQMIBisDgnR7zQTFsQxJf4gQNBOmEG9AgDrMYAhC2MWQgtA6tkykuZV6TB9ew" +
+            "RlkiGIUVPmOa25XGBXudRbM8tAhGeGQRIhzCsjLEiDwM4ZUAeGW1FOvY50H2erp0jnQu+9ny" +
+            "MGd73TtXu7aj2c1udgv2Ou16yHPaJehgCfNRj8H+dduCNSw/BUIYAAkkITRLqEEGZeVvXYWx" +
+            "DplMhwxUHYYYd92QVFXUC5hMjRhjpAslwhQ5G2HOavSnC8xaRaYwhYoyAY8P8sigj5kDNSIS" +
+            "iG1cgQhBHlz+X7AAYR48WwK9WEdAlfAKWQQNHvdQhDY4EQo0gOG/ZqCBH8BAgxccoxolzCN7" +
+            "ccSEIeh0ARq4whHMCAWuaekIxXCALMChCCMwbhAZcYyKLqABVXShx+PggR1owANSkAIIgSg2" +
+            "PGbBLAWZTCSRpBVrVnMr1SxLB0Woqxue0DsXuMEOOaDFCS6eoNp4A4NNm7nTOhIgNQMAltBb" +
+            "bCybFz1Zcis53xo6F0IAHXOFTzrK5M540hW+0AYTfNw7NNPdRy8d8MI+7sv6fVh7P36FPX/9" +
+            "u8UWCGRpw/4HBd5Y+4MwZhHgRjB1EsSUSOSiormMjCRGq+eI6JmRgTymMRRhtZH+ZiQLR9BD" +
+            "DK/oQEVegZV4Hwm6WRnRIF4mC4uAkEhzmZIdiJAAAWC0AKTA6BHiFIsazCIZdANE4+cgowyZ" +
+            "IBgu2QAUs3CEUCxqHJGohgZqFKgDLM1ItFbIMVp8hFjEgsVY2IE/sqAIQxA8IxzRmYqUAAQW" +
+            "dEECTtAqA7gfilDIghJzAMI9kvyaytgKYxKyWGtcs3bWVGLkdsAyK0hjB1L84AcuN/MQwOyh" +
+            "/xCuyliA5GKHBfg5n0tABfS5WaqeyIoOcBm6o6Os0HKX8KgOzYoX7XA67vEzYOKC9kgPXmiF" +
+            "9bgX2VKt06Kf/BAYhCkYhmEYiNkPSwsQiwGgj2MQyXj+DQpyp3GCjMwzqLkgkQjaIJm5ABRo" +
+            "FZIQmQ6BjHfAAKKxvCF4L8bIBIWIL4XAEXoABAPkkyIxCI7gmy5cgBwyhWxTkkFAAfuyAgaQ" +
+            "gL2wgwQggm8bByzoAlIABgJrrscAKIvIkCJLg3BQEyi4gXHYAD/YgQ3AggTYBW1ggXewh4zY" +
+            "sKjgKVnIBGnQgGn4ig1Yow04FDZyBFnAG01pER+0u0DIgR34qocLBVK4gRewgVNiPzRrlthx" +
+            "nd6ajQBRljwwrDzQgVEQFjfglRxgBfALhSawgxo4hzHLNqchmWVxjNyYA1loGgdaQFlKQN9g" +
+            "M1mingeEwDt7DgxUpqf7HvD+kI6mqxdlkhcdII/0ACb4CZjzkA/6WA/70ab1uCYZXJhFUBaF" +
+            "8QbD+iZnaQ1ME661krt3khmRYIyRWQDMG4ghEYPzsghAkIV2IhmREBsfociLcIyIaiExMMCA" +
+            "wpFE4CIMGJLbMAUMaC6FQAF4qACRKIiDkJFB2AYpyIIuwC8soIEbOIJC5IECsBJcWAdWG0mJ" +
+            "lJEFYAgbIQYmcIMbyIIC+C8scIIsiAUwiYdNiBIMiJGcSQSx2RkpYYV0OBswWLENsAQi8Adb" +
+            "oAOtJJkLcciLZAd2GIJtGAUi2IMb6AInCAU7uAE7OIPUkIw8aBonc43ZsIy140dlQQEAKcxd" +
+            "HIX+H0g5OwiFHLCCUFiBH6AFHtiFc2CEREgExKycGlQC6VKM4lICa0xAbCxNxyqOcOHGOqsz" +
+            "qAOfQJuO5/gz6oi68uCedgwf+gim9nCP81iP9iDB9simemSYfZS0ZRkQ4eHH1/A4y3AyH0ER" +
+            "mbEhy4kgYrsNIawRg4IuiqzOwFMuV7GMQRiEVivKJDkAzNsugeAQ9UqIkJCRgeBIJciEGbkA" +
+            "sTlCnrEMjNiGIogEQYiDOIiESDCGOACGa4gDY6iDXZgEBzAFu2GCDjBAJsg2GfkgIyCGAI2E" +
+            "OLgGQcAHAx1QMkgDQFGMIzHAqcAIYSiBOqgDQbgGFhWEXLiGSCiBNKj+tUFACcXokA3SQngw" +
+            "BlFAUGM4gzg4AyGVh8pwzopxjQRZu0qomIjJg3z8j8PUAW0g0jMwhyE9A1FIgSs4g0joh29g" +
+            "hBLKDZl5DZJgBDCTBY8YiTZLrGp0HjbTOWvEFqIrOj0bOuiguukQj876rD2tF9gUpnzxF9Y6" +
+            "LdTqjmeyH/cpQYFpVPjBLf0omG7CJl6ghAPhx7U7zEmqGE4dSKg4yAwamUEYAiRsFZohCVeR" +
+            "yFYjmYOSjAx5y3iDDMdgnH7ip0m0ESWwB1NAgfhSAhMpmsmjGRkxmnlSEifkCEWQh1noBQeQ" +
+            "hxkjBgpwgDTohXLIBhNwAI6wG4o4CJTYECH+XABFyId8IAYHWNY0mLFeINcajUh4kIUFMIWO" +
+            "CLEbTQZLSYZsSINkAJts8AViyIZ1UAL3SoQlgYpsWx0xoAOELddZKAezkodymIXUIExJysUA" +
+            "SZbdIiCIkdLXOAdl/YZonQQKmAVimIVvWFYH+AZRwzmNIKxoPKAcVDNYaqwF9AA5zUZackBw" +
+            "oaw6cxd2CS0+/Z6ng7p6Sab06E32uRdh8rrukI9HrUcV5Jfa2p+wk9pKwCHlnMHhYjLXGYgS" +
+            "sc7I2CD9FBGoMCiIyDbB4qAbmwvRVBK6ga6AGoKCaAykYYwK/ZGMQIGdAQRv0KmHoKGKfIXb" +
+            "wIo7mEQXKRqAJRL+xVARjSySkFCCpHk9G5mDdxjVGBlVNXWVV7Ac+oTbqTgv6KqABRiEClAI" +
+            "GYEKJsigVzgADHgFBz2SRGghd3UIDFoI0YQMmvEgtbIIFMmVXGkQWqkYS6tajAUQ/qANjSmz" +
+            "yqmN5F2EO6CHO5CYDLmVubiAAOkQVkqu2FDAnpPZOe2WboFAyXoXyuLZ7uGODnQtcCzUfsmX" +
+            "dYQmp6MX9DCt1LoP+GlUa8Kf/skmiEEYAOEFAhIQivkmjcs4FBHTk/ERTWGRJLwTIWwZkTiv" +
+            "VKPVH/FVmTEa59oRenjLRFDTi8gRyTgSi+CZvhUbmnFQHGGvOeC1t3wvgXKI13sHH+H+mcgQ" +
+            "2MCzmyipCICKyNKNESJhAnsoEr4xsMdgL9CUhQwKlN8zkqYA4ZG8UXgYkqVpiKw4Eq5UYJKo" +
+            "ix30II2zCCWjxQeJssJEu/9YmOERicPCjUXIEN8iEqdhtYsJCQNhBCMeyNZYnZFwU2qcgDiN" +
+            "WchCDuWAFz2zs9esDgMQn3gJNPOAH0ElQeB8JvPQAXpBX9e6H9i6LfyFWoHRJv2QWuatVIlh" +
+            "0otJFh1sHQpKErnYiA2OmQyyjMuVmRJZACZgtcoRkQy5INFsjMTFAAdFAVju2xa6k08MiQUA" +
+            "thQWL3bYXIKoIRFiGhwxKCVJLseQBVHz1RhpXDCCLnhoDPr+lNw8mlyDBCFYIRkZEWaBwAgl" +
+            "kDfH7Qj3yoiRBM0obrzgm2Ie2WDHyAjFcEu1OicDcrIHsYyKWY3WQDPDJF4EYZZl6ZgxGwLo" +
+            "LbMwKzOn6Ri2uwdO+y2nuQdT2hjg4g1sjFNqrNk3kx7r+ZZxGRd3yVk9rcDKkhfeTJdEG0H2" +
+            "OVQTHFRl2gL1IZj6gFqDySb40GT+aBiFoQRLHZCMZc4lZbvnbCQPESwfweWOdIy+/dR6Fpnx" +
+            "3DwVcdUe6eAVgU+3ZRwZOclc/ZP5ZII7SIQ/eSECfCEHTRIHHQh4ODz0nAsS5mH8dJk7MQnV" +
+            "nYuyjmuDCDyLIJGLOMlqhuvxrND+141IEZtPh0jdo8mEBWhExukAeJA14AOSxlYMylWrdJKQ" +
+            "2GGW2QBotmM7ZeFH0X7SZWGEShBMkckN3LBUu6mge3gNWfEGv4oMk1nlWyHgkUiuyWAzjdZj" +
+            "3/ZtAODtmu2WOJuzndUzeMlZY0Lu8cBA1zLUr1sCpgsm+K0XQyW0/FC0+bgm/tmPhPEP79bk" +
+            "oObfiEkQZsGY4hrbisGUr5UgSHLqyRhP5dIUJaRdhWxqxbgHh4SHx4CHDogM73IM8iKSV+Bv" +
+            "6FLTHPKusRZhA7OHKIwHu9kwbf6TySOSDJKVVbZPDO+Rwx2JvWacVhmS5rKbA8gEqDgwdtsZ" +
+            "g9Dl0CX+r6maYni40SFJsCWhB/4GWKsgCVoNGXbgNE37x7Vbu/b77NY4bVAO7eFJcsmoBMuA" +
+            "0gmZAwNxlWXJIXS6QcwuZWi56ODeci7vci//cjDfcuDm8t/W4+COpTjl6Ddznm7oBmvsBt5O" +
+            "wDaXUw/ohjq3cw84hRA4BT0/hW7g8z3nc0Hf8z3XAUPXARE4BR3g821o9EbXAUdvdA1Atm0I" +
+            "hECQAWSbkkpfCkfXgCkJBEOY9EBggYmS9GNggUDovUqvht5bChyYEkOgAk+3Lypo9GrAAVTH" +
+            "AVxfClb3dBw4hm04Bm2YEhwAAVLHASoYdVbfhqkBdvuqhkqf9VifElY/hkD+AIFaZ4FX3wYc" +
+            "gHZDqAZLr4aJWnZPJ/XeM3cNYIFQZwFWXwUWOPWpqYZvF/dQP4ap0YBvT/djCPV0Z3ZLnygR" +
+            "iPSAh3RD3wZIF4FFT/hDN3QRSHQ+b3iD14EpOYVKbwUPePRTEAFkg3RkU3RIj/hK34aAF4Ex" +
+            "YHiBj/RoSHmVX3mWb/mUf4CUV4MHeIBaqPlaWIYGWIZl0AdMWIUA0Ad92Pll+Hl9IAFkOHqk" +
+            "N3qjZ4ZPQAam/wSo/4M2IIBP+IM/IIeql3qob4Ooj3qrVwWrhwCpt/o3eIMoKIQiKIM3+IMv" +
+            "+AK1L4MvaAQhKIJRKAMhCIIysPvSEAIE2KS8+gH+8LMDO2AFHlgBHuABTpgGHniBFXiJFfAU" +
+            "mLCDFbiJG+ABf0BEO6CwKwmFaThFzyOCwyeCcQCdQSyAbysAxCEFfwCDPjoqmiQCM0ADFRsB" +
+            "NBD9AeCDcdiDAQADt7k9GgAcLJAA2C+AFYB9PzgKIgiwLkCxINoLMEijI0CErgkcCTiqccCv" +
+            "AmCAtlgBLBEVIpgiHjgCrDG3HTAjoWAUKOiCMCGCw3kpMIACOYT/9z+jsriJHcivtpAA/Tf8" +
+            "G3ADUvB/gLATyo4uHnYOCtAlwA1Dhvt0Pdy3TwjDg51C8RDCYIeFMi92WHEjIVSnRm5edCrS" +
+            "aQUPFzmckHLT6ceLHwL+QnEKtcLFPloz7fBYMfDHj2hGjSaJliQp0qVHj9ZSU2tq1KkNGtRa" +
+            "1mDZMn0BuC5D1hXsMhJhkQVAhuwTMmaf2K55K3ftn0/k5LapW1fun76f/kCA0PfPF8CqvhQp" +
+            "8mVxmcUcyryBjCBIEMhlhCC4TFFIEJMQKRI8eIMHKTtOxtGwQ0rCDh66XozjMbpLgR03WI/j" +
+            "xINGApgbW9/esYMBjSM7SPmxhJoIlg1QdozDkmXckRFgJCRoJ44GFkRYdhwxk+X2ESy8/cU6" +
+            "AsWMmR2WwJiR4A9Mlh1EshDh0byLBOo0xj1X3DjQ1QceFDfcYFx/RCTQBRFH8EBdF9xtQAP+" +
+            "FAPYl4UlCWABRgJQxDJOASMUEN0R42zgB3fPqUcEEQXQwAkRwjlxAw0GCaQLA3aoEFpCuvSo" +
+            "y0Gs6KJQQ27Q0pALK7jhAid2WMFJF40EsQMnQjRhBycTAZWDEPswEEQTneTwpBUCsMIQLS4A" +
+            "9cINabqBGSuqlTbVU0odNYYrRqlxp1FTuTLVA1NxlRVXYqmFzCGrHKpWWProExZbbiFDAlxy" +
+            "yUXAXm9t+tdgfaUSxR+HfdJGKotBsJiqHLD6RSGFlNFYrLE2ctlEQnAWUhBCuMDTPiJJQNBo" +
+            "NzDAgwQ8MEAKDa0JKZxBEZLmxIw3hPJfsKddO04CO9DgorbjZDH+3Q5ZgLGsGWBwiwYY45By" +
+            "RCx+8LDBAJZIAAUYUNBQgDhg3OAHHrHcgAgi40xzLnTsJbBHFgN0sUMsA3QLBRT9YQEFEVB8" +
+            "54cZ+RUA4Q5gWHIDxhFiOC4RNGyACg/lJcADFDA650QBG9iHxRGc+OGPfTAm4Ad1RyQwDhFO" +
+            "OLGbE8UycAMpRRJESg43+OhGDroQqUsOv7ohkRAW7JODCz/sYEcjPHSRgx1EhFLGSQIgoJEb" +
+            "ipWRgxU/uBCUCyfRUgZROWBEkBBlLJQDDwZ9LQTfdkjl51JL9RlN40k8EM2ealBO1TK1MHoo" +
+            "WGItcwhXjDqa6FfMqMXWWmt9Epfpb63+0QYBd/VFDgFtCAaBpqpEIWphfR22WBRfcOAq8EUg" +
+            "MDyssQZhAQKNWMC1ELRYYIcbFswpAJoMHOtG0k6IxgkNCGLvGlAJ0FAsdi+QskMXRZ8WNikJ" +
+            "ECFkF37UOAAWCdxghnk3OHgEb1BkgQbcGQBq5OW/IyACXQPgg3nQ0J4jZAALp4GCJXgwjYq5" +
+            "zBL+QA4UjnADIpihABJ4z7ZGADFLoGFbaNjAB8ezA5oxwA8TA8/3CgAFJ0zDfzywxBEk4AQ/" +
+            "EEECG/DfDvwAnSMQoQsbWA4ROJGOGRlnB9OQwGiSpTQ77IhIWFQBKwRAECKxomt2SIgb0CQ9" +
+            "NWnPCloKghv+iGCHTrCCCAIowj544IbLDK55rGDA3wC3ENk8SUw+cQMpcOSCJuCKTQdRYw7c" +
+            "UItoPGAMjYMkn6CSBDv96QGBskpWtjKWs5Clc4cIXaMudbq2kI4tb0EdpgbTBk9BQBV/eFVf" +
+            "ChOqwnzhDYj5Qhka0QhVNSIyhehEJ4IQGSFYYVeGy8FCDpK1k5ACTayQjRvs0B+D3GAaYbPD" +
+            "CoKoixug5iBFlIAbeFAAThSEQXbIQRfwp4sdFAB/XUAit1yELBDmJzpZMGIWvNMF9mgLESPw" +
+            "gcZiIS0wQOgIYCiAy7IAoftwbEMSKA9qLFGAdhqRBjw0p3HO5sHi7EAXtHECePz+8D7y8QCI" +
+            "3YJRcZo4UaGJa4g7gMIGesYi4xBRgAgSElB2dBA7EGunXiSILuIkPTBaLyQVKeMKWEEL3Yxt" +
+            "GlaIGydcQBFS/K0QQvhBI0KygpjYgRW4soAQeBAKVjRya1wlJANCYVWKMGQjGfETnvKklFok" +
+            "RSqN0yuhuKKPWmwlUvpQy2ATVTrDIqOwpzRsKg2LqbcQ4C/k+JTtCKOqw/zuD7/TJfAa84Uo" +
+            "FKEMxXtDrYIwTAFYoQlslB7X0DqRHBSSIWb76Y1Uw60b6EICDTsID2oElHZic3BACedvb1C3" +
+            "eLqAO+OQQHGgMCDmmKGb7SgXFPAwADnEAg2x6Ba58mX+nQSEpz1QQMQAJJAFPPgPC2g4ICKQ" +
+            "iAg8FMAPA8jCNPyAhXF0wWIROpGFYGTD/NyHNQTkgT+OEIoE1McJA8gPKr5TRAE6lDq2aRBr" +
+            "ZuQz3uBXNmYl6k+JiiPVoGkhWJOekXRhgYV40Y7C6cTZ3riCabghCNZ0ww+4GYpq2qEzuPoB" +
+            "r+r2JDdYQQiduBs3w4akJqixi3awaieq2Rq8MuUpSRlDNKgcjai4InJGGRRVunw5zq0iUl1B" +
+            "bOgGexYyJ+oTllJLXE5nF0/t5ZWT1ctnc6cKwWhWMcKEDC/F9Ko3LC+0FOHxPqhnhSTtww6v" +
+            "VYgFqmkQRx8NKK0ZXwKACk7+HtyECON4Ew9axgPhSKAgQEOQgzadwWzSZyP6ow4YFkoDcvkv" +
+            "CyOoj6wHhgVPmCEBaEghEbT7HzPgawNogAInssCHCrWaN8C2ECL8geB1FYA+M81C0AawgXgx" +
+            "LAHpuQEPaZBfGqzgCDCahqZpMI0BScxKM4LOhFwEv3HEhlu9JQUDhioknwoJtwiRSNYE8BAX" +
+            "sEKsDFmIBO6mMwsQ2A26QMU4cFU0NzTBDSBpciF/IDiiWAEBQN7HC248RiEn2iACKJMLmhwa" +
+            "VrAxJ46ja10dt1dXJE4qlltG5mh+CM8l6sxkXsYaWLnKZaiSzJjyuaeG/pdP4O4Pr/xDKmpZ" +
+            "hib+uOoylVFJJ8pQiCBUvQltY4gVOnFisjbaDnAN66+mab1Q1IgBunDCjZR2ox3Z50afnqId" +
+            "uvU9acVmZRAihQ1H45wbYeF+EVrPjBDWhVYrxwzKYJjiO4gHNLDaEsXJwrWPMB39rGumBLR8" +
+            "ev1QG0ucrDxEWMEG7pec9fnBDzY6Aio+CDQa+IF8wmlNucEjtBIBCDUnAs/sd5AAbWpLgDci" +
+            "BdSEpIulGV9IP1L4PgQwg63t4wdkbYILSEELlgjBCf5gxQ+6EApa0IQHVhDcDkJBfjtYoMm7" +
+            "op6VpPcDtYkVKKFwmtpu7AL7SE8IjeDbC9pIAzcgxVE4heT8CSVJjhr+7EmXGYqhgIUnhcUl" +
+            "cI7nnIViHRZiwUUFOhbRrVJc/MEaqI4qTNYnQEBmMZ1lFEJkzAquVN0wVR0y0Zgm4Ar6gR9B" +
+            "NMSOFBraSc9HcE8O+B6yrEwXAJWLQA147MFqaMtBTIsuuEj5wFMQdYsl7EC9ONcKmMEImMER" +
+            "VAevZcAIWAge5BoUoAEeRMcKRQcYYIEEYMG77MAAeMe4eAcCIcIOdEd9iMPGAMhzPEjQTMeH" +
+            "6MxMQQGBbcA0dMt3gFc+QYEcfAi3DJHLwAgW2seEJABz2chucEs7tYYAAdUYYVFptIBCFImI" +
+            "NQ+NMYQQvAEi/QANNBIRMMAPJFEnvJMdPU3+TQjBOjVB8z2JC4zc3TRCJ2zVNKkGD3AVL5LC" +
+            "QHRaRnxJQTjB9JDGQwSFHdzJI1VSAbrclfVVVvQVWWRFYjVKolBgmrHSN54SCXjjKUWW6hCA" +
+            "m9WFOepFX+hOEXCAYvDSrHSCFTRCEcAKZxQB1/yAMhFJkBlOnCic9IwfFp0YFUGN0ewI+RQN" +
+            "/JQPKXgP99hBAiTAN8GPQRCBEb2PctyAHJrBcqjLDrWXE5gBHixReIDByvDBxpgBrjGHJ9yP" +
+            "J3gCucGHg0TAwECBMkyHFY4DGCBCAMGHP4BQCIEhfkgHvG3ABkgACAlN4PFAOkAeDQxAAcSQ" +
+            "P0jLjORXPdVG0PD+xrawnXDgF2qwhgSI5duRQjRVky64gNolBJGgiRvMwK9UhmhZAE2EghCE" +
+            "QtjcHw1sVWtIzYAcxAtwQv8xRBkE2Q8U0jCO3ws8T1gJyZkYBIsNTkvM4gqEFUmFAqFtxFFE" +
+            "TpQ9xSM9AJdxGaFsxcx1zubc3AR64yeQzji6GaaoDglQSuk8Vpx1yuwUndLJkmAsxig0BqBl" +
+            "xmQIGWfgiq1MTfRNzz5Ywa+QFS0ICdcEjhWwAk7wQHS2zPHhEGncQMskzYyUJUmFzW5EYnZW" +
+            "jLI4xwcNGymMw6ztAXhRG7ikhxNkgUuCEB6AARGMAB5gARHQ57h0kBAFHg3EQn36Qxb+YME0" +
+            "AFB9VAwU+MERQOF9QEEXBB6AYEEBwCcUUpTLsEh+cgK83UgUYkdW4uGJaNpF1VPQDMi5AQfb" +
+            "TQgN0JuPEMRCsGVRKVyMRcYbzCItCEFqgM0OaIQ/rECNlV/E2VHVAQUhrcBGuEBydkLXRGcQ" +
+            "Wc8wQUkOrEDY4Ipdlk8oMAiP3QSz8CAnVJkATpIaaBI0dpkaXI7l1AIyMCAoIQoFmg5iiSOm" +
+            "vNLQtYXpuMVcqNJttsFdcMo67sWn5E7w8FIj4AoCNAEiEerz/AAvVtP0hMQPJIkbdBFFsIJV" +
+            "SWoovEDAWVON8AAncIIEpE9+2NZwbOQ0IIsQHUHdARFQbUD+AYxGB+3AadQGKdwHhABoFpSI" +
+            "GaBBbcQCIjzIFoJLBnhIdREQFliCxaSDd+zkeiFQR6LBwAjbCEzDBswauFjMEUQlgMSTP+Rn" +
+            "ccTTOPAQdPiMtBzBaQDYDRFBTb2ItjhIqTHIgxAMdCzXhDBXa4DqvTHADCiEoklqnExEFJQB" +
+            "o94Ar9gRK7RG3WxATGApZW7EOGDRjfGYEAgAA/ANNlnArkiqUHRJGcjYL1bTj33aOJxVECgh" +
+            "Zc7TDjCFlT1FoOzVVFQOYF1OzBbKNiIKmokjYbVFnaaSa8Jmnq6OXKjOKt0Fn27K0v1F63xK" +
+            "KoxC8JzgZrQNWXHsryTTLBaVBVj+gUL8yvwB2Q8Iya8AFQP8ym4QxGlgmjlNpABAhx0lJaiK" +
+            "DBEMYYkAFRLZSAfRQL3MDDj1ZwIIKydAkAdF23dkARpMRyzwwcCAgXx6Ah48CB5kQK85AxbS" +
+            "Z6+NgM4AW8PEQoFqzBLBx4OAQYhswMYQQbgWQAi9UBPlV4U5SAE8CBBp2u3hHn5pGrzC2w7s" +
+            "gQCBGoKQRifOwFr6m/XEZSGMQpV+nxCETdxMw9UIkJeURqP9AMUWC0lxggBAKpmUkUCYTZIq" +
+            "2iwGC0O8gRtwguAkUTRJxAs4wUD4AxSInYygbFIshco2DjSuXC1sEmnWHFk4imomSmORWc+p" +
+            "WaUE7Sr+RVZsyubREXDqtBJf+MVfQMBkRcFh2GNkHNrTKVOVpglc0ZgLMsQ3+ZsQ+OJAYpr2" +
+            "yAYxDsfaJdFofBpuvY9t8ICLgOp/HIcEeN7gDOiNZEEGGIuGbBq5uO16+A9P3tcAeIJzFC5z" +
+            "eEcCnIvqmoG1HSgAgcEAoEKAzggAuQgWgms6DJCmtZo+zYglVEjoottzJCX5EMEeeEvHsC68" +
+            "CY2LqG4B1IamQYfvyZvcEcsLrJPUmJEbaIEQRMEbBA8C7AMCEAmLEcH72cE45ABN5Mddcuej" +
+            "2YH0zQlQsAQpzE2sVO+U6oKQAc6ObGRGSA1zuUYLaFP1PYgkS2wCIEWfcCb+JcnvKvMVl3FF" +
+            "A2CCAx5KmKUZM9wsMvTc/a7OKamm0eVyXFjKnVoK0PapXMjSJ2iKn7JjqtRKwFJGJ7RNlS7T" +
+            "JYdEUX0JDVaTVf2AwqFWObmG9kzaRnYBsrSTQQ4IsninjaBCD2nJGdrBBoTIB92XR40DSelP" +
+            "EjWxxYDBsO3A44GHdcyUOEwHxthMeBzB5yJCAQDxfUUAfG2Ad7zaCiGYOFxMuFBHPLFxFDuX" +
+            "xeDLzCxX7ElYO3GCuc4I7rUrGotbEuEXSjGX8PnWjhRJ18LJGywtCjZaGTzVDzRBW+EKD7yA" +
+            "agmJUZXfbLXGnGyz2BEJ37ACdHqJxP4lMpXGPvT+RzLGYPmGAgBNw69k5zQMhIUMYMs5TmgC" +
+            "iphWRSfBrCdFiqLonGyymaJkoM9p4M8Z1jBrCqfwxTHv6WB4ShvkxangUiNkRhkUATLtyg80" +
+            "nxWExBjRAnTeWJOEQlF50Q3QGBapXUF856fZBgM8CG6tcAEQhNC4Bgvz4ICoAHjkR388qDy3" +
+            "THTczwaAwQhQB+OuzArdABjgwQ1ZwqoBMRrsQOISQSxEgCV0QQLl1z0H3rFKx+8pKHgMgHNl" +
+            "AehebnEPiHiMw3wVERTGnfociwDtBrw1jO9py7Zwyx7I60q3nfksC9QQi2q8SULswxvAN29a" +
+            "ndSUwTTx4jJqBCdIzeD+zAknVOod/YAVuMALBMVxLITaMIALYAQPWADUaU+a2EcOmKJuCImL" +
+            "3M1M2UaSWMjgPPeUffVR6JXLuSw1YoU1vnI2bk6ardKbrsU27vLP4nLqIFYuD/BbzClf1wUy" +
+            "dIpcFIZiFAIvFUIT6JLeYAYGs5GkRp8VSUSRhoRshG0yVlNt6ULdGgTsBQt6joMcCM5ycdOD" +
+            "0MCUfwc4nQgOmSF/jEN6xEs7rM+50MwAhMgKoMd9jcAK6acnYGEEjMAO6CoSXS7GxEI70BQi" +
+            "xMK4ZIDQzBd1lB5zOIdzlMgGNNHFzEirFpHFyAhJzUjw+YBE1i3bSWQXNIy1iLcPfEvC4G7+" +
+            "jQSVMwVcQghAECBAZARBLv3NLP4N3eC0WVmBBTCZxEovQ4SCcYUVUVxGURWLhr0VI60TZeIo" +
+            "UDiNSdiRxLWqZFuBCszIlGcBFJjN/DhFEgDA4kjO/LKs/IqpK5v152ACKIXFarZZBZpOLrP4" +
+            "KjFWz7o1oqjZbM5pKyXwqBAGYZRB8KRCKsTK75BVcDbJ9Mwo9DRENZtYLwLZWTaTcP0WLn4a" +
+            "EaBPAqgMK0hLh7pI0aiu7BEodthMp2WrEt0XCJlhGfqMGUQAFOgaAc05FuyBJdhPdWfAEBGC" +
+            "4uKBJwBRBgzAh2xMF2iIi+jwBmTAFQLQy1T7xWyAp0NBgZlBO5n+KLcsiye3jFj2Vg+2hrFQ" +
+            "OQ04AflwwtVLwLAfREy3ZZxcRqzASqMVwcUJwUbOopXQsWo0SSPHiRAQz34bBEUsT9ZIWrD8" +
+            "AAKs09q7bQ5YwBvUWLMQQSOxyQqA7HO4AIocgQCQFQMsDvsyxSQ5zibJXFnP3FeEUs0yFums" +
+            "prsbVlqsploEwJv2XGGluy3jhV7QRZ8CqmZFQfBYXQPDCgccD5aw0UJYcCKN0UQ4xEA20vEh" +
+            "yzcNTiE5/FYOzri0zEx9VDr8oRN8vH4I9wo/+zylQ4PU4TigghkkdAFEgBlwwnpYghNAAYk4" +
+            "wZynw04Swvni2jgkkA0F3hH4QXQrlMX+OAeHdNBO3g8I+UEXAMSIAQkKZJmWAMu4BEfGNWxI" +
+            "gwYPGjsg8nDCg8cNBhJu3OAhYSKnizciQgQJ8kaLG7pa6LIjYEaQMm8KNfnypUyRMqyECHHj" +
+            "powbTm466eLxowkCAT982nESKkcONy7slLG6z06OFzzs0LJqwU5YHjvsCLGwbywrF11WCEEr" +
+            "gUeOIFYS7MihC8qAFVid7CBrgUeSJNEGRxsTjXC0Wg8QP1CDyVUtyZNrLbO8DJPlBpUbWA6A" +
+            "DPSn0J+YMRP9STSyNSRQIyPhGpllZJ/WLEsNenZqZn/+kG6DGvinNm12f+L956aqLxBSvfmS" +
+            "6kuTTgjKmP3+EaRn2Z5uBOwTwuqlECsv7LgRouuGVFZdyLrhMe6GgBvjaDAgNa6AEzs8iBCR" +
+            "IKG/HW6Ypj8JdiDiiI8KAKOAHaDA4ggJxkEkCyeyMMM/MMA4wokBYoGChiyy8GMPMyKwhAg8" +
+            "zNghFjSgGCcWcaaAQkU/xEFkgwTMGOEIKBDBgogsPgwyi/5EJCKdF4mAoj8ouuhvnCMa7GKa" +
+            "HQxMAKK+aAAJo44wooEUi7b0yMuKaLhhh4xuCIsBVgRAAIEmOHhjpjp/KMs9XXzaQRda9mPA" +
+            "CjdeAKqTH35Si4dQWHFjn+pYKYMW8OzQxYqwxBuLKyEE2NKoI3YwLyj9Nt2AiB/+dNlhHLss" +
+            "0GWaLlghhQjBZJ0VMcEUo0wNyjqjrLJlJMvsMtxCGy23NU6bTTVkcVsmNGZBczbZ2XoT7Y/h" +
+            "ejvOON6+aEO5m/4oZBTnUrFKzibcsMKC7fQswyU30s2BlU46EaA8n0JJT1AGJt2PFFK02sGJ" +
+            "jnZIgKMdGiTFQSJocKKAAo6gYRwosvArFjzG6cKMDSAGY4oGoTiCvQs1xgIMIsYRiAcs8DhC" +
+            "Dg2P0BENS2hEhAgz0NjADzOcjAUMJjfI4sEBioQiliwKwpAIRCzZAegliUjAoS5o4ASiVPdY" +
+            "WCKMJIIrIwkYCCUjrTMak6KIAvZIl7TTbaKJmTiIYhT+mYJgRZd0Q/GKOyEQuHO7G0IpT+vr" +
+            "ZOqkvP3sCOKNInRhgJYcdrhbiKC4smOcdF5AACxOeBDAvfacgCIBnqxAeAU7drBkGjfsICKx" +
+            "WW1VQw3HFHugstolk22VyzrztdfRWguuNWRRM0001tZYdlnZcNPn2GuD442AP6LgDQLk/lCF" +
+            "uedwKoMDnYpIqoxOfjLPTz19WlSIH/bZx4ogsOppdB72UZ0TBtzIgQEn7B/Hnx1U4KELqXqP" +
+            "PwowFomlSWIJ4EFBoCCBI4BhAzs4AtAUAoWScWIAK5qQGQCkMx4cYQBE2AEYzFCABIDBE0GK" +
+            "wEAQMQIoWBANR8BCFkg1gAz+FCkWZsDCBnpWAIkRoQDpKMA0xGEyJjUsgCKsy8VQNY4q+YVL" +
+            "EZGDHNZERZKI6T8MuEGYIEIRrqHNOz3BjlWKwIEytK0T9vtJXL7zAp6Ux1CdkIkbWJEDHpAi" +
+            "LOPrRBEscCc37scNb/CJvtzFgxXQ0QdEOGQZgtAv1T3NDerTBSd2IAALRAyPQUodVgBAK8Qk" +
+            "BjGRuV0tcnUZUy5jV7czpT6EpSxklAZ4wyPebZ4FLdwcb1jAwVa2eqOK41zvC9OLAk44MKdC" +
+            "lAE51amTBdzlk58EIQjcsYJ4XJCDdFmAFCpglAB4oAsBGEUCLkGVBEJBAyAmioASWIHM4EME" +
+            "CJH+ggZHeNgOfuYpC2LBQWCIxXtieAMQjsMJZsgCKsz5Ige5iAgZwFA70DCOIIHBEpZABB6g" +
+            "YCIo7GAEZkiAJcwwgHFgwUU+wtAGBEqEAWygAFPYQEOO4Ien+cUv4/jIRMZxNYicyUtau8FW" +
+            "OqIRi/SUI044CSk4wgAGeAea1JmTTQohhE58wQo8cAMCwhIo/OWAc+UsD1VegBRB2sEF7rFD" +
+            "+0YhBGuqTqpC+IIQeMAA9DwtB0jRBQ3KQ4oC2GF++RtUULbECh5YYgOHZMB7NqcLWXXSdYRR" +
+            "QzRolyvbjfIQmOgVr5h1CH1AyzZrwKWyZpmb6D0LeYcwpbBWA7xpkUP+FdZCTvW4dT3k4KR6" +
+            "fyhDIXAiBFpErgxW2AcCsOMGrzTBDqy4jhtIsY8mCCEUEhAAul5ACregypsO2kNYTEYWJwRw" +
+            "sO48kwwv6iCa0UCiIrTZOCQwgoTw4EEUgUIEx7EBRHgKEWA46AZucKEnXegIRPBEBDDmopxl" +
+            "oUcdRRANl5QOf5DwhWiIBZJkZgmGANGcClnYDq5mICuV7SISIEVHOJIRor5AixnRYjjXdBFS" +
+            "DDYj85tL5HhrlTekogiNKoIbdHFc+9nWPFaghXQQ4K5NSVW4drjBHovgE10Q1w6dGEUhLHCX" +
+            "fdzgorQAy5pcwFYa/OQFRHiBcc9DCrqtYBz+oTDrHhTYPso5wQU7kBVh1iwYV7jCMbyqxe4s" +
+            "c7vN9OqUmI2Ns0xjmtwMCze6WVYDPmMZ5hkLNG0gQCyH48s2AJO1X3BOG5IThWHOCSfYQaNP" +
+            "zuiGJ1igUJOSozM7gRVSCMBe5fErn3IwNT4NCKAMOBB8eDCNHC2QR/602AsKACF6UpAIP6NP" +
+            "FtAQwI7yIAt8AJEZwJCAaehQnmgYQXvxIF80mKEhN9oAFvhQQjO81x/tQITEYlgACvlhvR/d" +
+            "wHpJxZCGAGxLEzHQltI0MIIJlUz3+k/XrHRHO6hAyBoh55n0hC6zIC5yUSgCbY8bhOPS4gfi" +
+            "W8r8siIARS3quLn+BSvCctC2oMTLCoZiVCPcQwta8GcoQghCWOjFHiE0IQjoMc8+dsAJQzmU" +
+            "BxbATkfc2l4imC4JAABA62y15sXkKna8SmWdR4sM0SKDlctgZSuf1ZplfAY3JNis05sem1ee" +
+            "ZniomVb0fHkc7QGzN1FIRbd0UoayijFOZqmOEPDqzJ6k78j74OZLTM2AHOxnTUYRoS5ekAA/" +
+            "rGQHfiBLFxyckRda6WP+ycKGaLCgClX0CPWdNng9ihAdwnCGfEADEUjo0iwACQoZHccAlCGO" +
+            "ArQDDOOwRBZk9rNe0/4IGXvQth08Dpf63mRQ86IEpIYRJ9DbCULFCFzkoKa2BkwFcAn+y0rc" +
+            "umEeuKmZDlf5GxDwBjqVobZlaARTnNoI2zrVKhD/+9/v9wILWCV9nHPDCnSBgGPSfR+ssNL7" +
+            "34AWVjy5gNInI1ygbfTPBX7AQT7FrNDGCqygSuyAAWxkHKiCVgbjdWinFqJBDVJJziardphl" +
+            "tGRDNgpNWEQDBKHleJhhs06w61IjODSr7P6AAL5AW76FN6aHN4wjCgrheopscMQjchphmtwC" +
+            "K1AtCLDq5VSnLPaBFJzgXFqtbgTgIlxgU4igm/bAhOyAFKpEPxJgpQwIDLrACUiPCG6ApEzm" +
+            "RxLAC9ftdAbgZbIAEfzgCNDAYpINQjwhCyLm245gA/gAEcb+wWaYxAw+pAAGkQ8joGfMAENm" +
+            "L9iAhmjkiUkWIgFeyqEW5vi+5AaCaks0bMOOD2xuCqfWxKjcim40ojzOQjw0IXycYyYkrRPe" +
+            "gAN6grfep1I2pycIZx+UbMZoQXx0Qe9eriywg3NyQI64IihcghSAYj9ygBacwA9C4f3KYFK6" +
+            "Y0kYoAnmql6aYB/0QyigIB3gxS9W4Ab2QegOa80Qg5QWy7HmjB0/EJVQCVhAEOqSB1pSQ3mW" +
+            "JTUOATVeQ1gMrbKIJTTIgTaw5dGOgxxo8BOiBwJ4EHsKgSbKgLccshOSgk58oieqAyjMxZLE" +
+            "R8giSQtzYB8iJRndQIvs4E78IiP+DmQaJKIAIgi9YuEI7GADRqCAdgALLqoR+8MSYsGlBgAP" +
+            "oIbZECIDQOfaImYAwAALsAAR0KAARkAZUERFsiDc1KElEWHBxGFozABFmM0fTq9HkHIDwrKl" +
+            "HuxiREjeIiKKPGKwAOYjQkFf0CMjXILDzqRf4kLVvMknLEAvHa4RyiAKwE/SZqvIcIs6INIt" +
+            "EEA87idQ0EoIiuALCIc7XIIWEOALRoFR3AAucsAqyoD97AAK/MANSA6PtANsfoAB+gMatdEj" +
+            "0uUGiMB+Ks8uJGkFSgexiq5WNDAa3qwDd5N3MMHrguUeT/Cy9sw2nA7q/CzQkMdXDG1YXgN4" +
+            "yEEGe+P+0ZZDW1QhIf8AAoIJO63iC44JAThAFYrMAtrOPN4gmtxAJqKKJ6YiuFRnp/bBArbC" +
+            "F/fDCdKGIO6IBiJoP+RQBfJzA3wAvB6EB/yAZIjAD2AvP3mEBhQRFXZAERkCDgFsAFLIEiKg" +
+            "HYgADZShSBRxvTwBD1DBZiKqRU5vBCQ0D2dvh3AvKS3hJj9GnhSCYCYCYEBCqCIiTcSGI1Rg" +
+            "wzZs+uhKTU7MrdLGDs5ifYxrmiAScWaLA6LDqcylJ2ghUAzFO0AFJ9RHrKbpB8LE7YTwXM4j" +
+            "NNdqH46MKeplH2ggFHQB4U6RAaCAB8Rj71hh5ciiUpZky6zAr+rlPexnVmr+cwwKY7E0sAHu" +
+            "bDIW6wEwcDM2w5RqQbQCwJSeTgSRpwSPBTYg1es+wZaAQyDF7nrW4Fpu8AtUgQc/QTkuDQH2" +
+            "aBTOKAjuL3LW6rYYySeYAj3+7370Re8Cxn1EojuSC6/8ia5IIb80YgcI6AbQDQuwxNymIRQs" +
+            "Qb66AAwG4DNLFEKOAA8GwA8qxsG6bRzwAA+mYA4zxhI8wRlOhg9oaEcYZAQygKTwcAPwAGdE" +
+            "BAq68oVEpEdaFKWWxA+6QGqsxNVMzCI8zEvsgDzEQsj8zqjEwq3CYlHCyPyuAzFfblVn6wuK" +
+            "4PsEKXw6IXIslip86yfKg/s4QHxI8kz24Q3KKgf+bMtSWHG5guA9BAD8CsE03aUvrEAbM0IA" +
+            "gqAHJgkcoYAT9HIsyMMtOuJVDFSqOgmxPqkwcjMDBZVXXKExJGs5mc4zQjAelecQQIvqfufq" +
+            "oE4egWM0poWXdPAPjOUTLM046EQ622aYzsgvVQExEUAVGOn9+Mg8yurIsKMjowmPoLS5zMOv" +
+            "boCOlG8/TEZBLmpA85ABVi/zuuAz96ARseDZPOEz0QARKo8PYkECLqQAAFFoKioCblIZzGAa" +
+            "8GBcsSADntJHNhSClHJEZi8sVxQLLKEle+aFZCi/GEIN62JhsmTfMtFM7UMjOmJxvIle6AY9" +
+            "Ak8XSCFtuiNdVK4BxSj+CKhD0uAE/tDlttIFKPJPCGARc8Bifs7FDf6mMO+HOwBmJrDDUCRH" +
+            "CEYhUHjC+6bCJ9QwNBkpUVSHQP6PBxSIfWKOKx7JLkxnB9yoNs/xk3LlVnhnUCVjHX0lUE8J" +
+            "GQJAtOiMUfPMlrLOaoETNA6han8nW8DOOGLJerSFBw/yJp6jqZzjCxohCG6iqWziC4IgXcyv" +
+            "PILgB+glJC1gJSyJXvzWr+xnP2TKPUgFPRwKLl7EIvojQZjGDJxgGpaSB1okVc4t2OhwgobS" +
+            "DzzBDGgAD5zhhZZSRPgghUagcyvKDOQJDAAsKX9GoFBq3TbAwditR45AZvrDD9QwVWI0Isr+" +
+            "5AYuQl+2aE3CxMtcIiyEDJDVaJqsQBNUrhN0ruHMUybewOOqA+awoyf2gQp/oif81v6+oHG+" +
+            "oz0hsjzMhZBmQnWaggEauQy8o9T0pW2iqTwQQBe64AWEAFaIACSt4HhDIVDGIhnNqZLySouS" +
+            "oE8F+JOYlpSWU2kpC2qvToIrI4JryVkuSx9pqR8vKzhRYw3aQLOM49HErjV44zd2CTneoHpG" +
+            "+CZmyzm+bxROdSIR4Hu6w32m4rhUx7jsqF5aE4cThQmt5JuuqwsC96I4wRIGAIGueIFIZUGB" +
+            "JgEqKgv2gHQLgAj4AA9oAAzea0GSktj4QIYIoaEmakM84b0uRET+AAuCTs/BblKe5GkDThqI" +
+            "5MlhMpcI8BUi5AAtLYIjAK+n2goCeThIXcKb0ubIOIeZJhmFm6AIeAu3/BJJYW5vaKEvzwgn";
 
         private static String splashScreen_gif_base64_3 =
-            "lI89Aw5fvox2e5V2PRV5kBHYGBX+ztGVzM0MX07kqsLrCkHhh9Gjrso9qGI93/CNRNIP2LiV" +
-            "fd7nhzGIFlEN1UOn3mKnRrE6dzKUwdg8jXToVQ4hR9gDXJCMtrMUeTSIvnAxrhMWy0COzhsV" +
-            "ZkQ9zMlNmgWA3BTugMRZl761W8s1Pi084iRUqCiiK+TfQYWvI5rItZGLLCRlt0ELQUEBW4Bg" +
-            "vjCwiSAMiKCIyimJTJmRycgzS0mrlfGUWbkeX62U0ykEkoDhxMDWXzUIDl29YKi3EdsD/SA4" +
-            "ciuVfcauH8iPZDExRaQmgLMVgjuVRsIMlJAQe8MjtYZhFzuI1OsUiEmOzYA3X2o3YtYV/cuE" +
-            "3Nue+9D+o9vwZ3m4lUECYl35npasZdK4usRgEsMQGkOZWnAc7+k9BQSIIkEWmsMoKEeowScw" +
-            "AlsoyuLIVBOqklJDIVOJHMvctrN1Q/qtX6ch7uJmId+8ElvLX6Bwivw9yK0RTpyOryisrzdh" +
-            "PP0aKed0mzsp5SZqqSjywu9WZRSA2FemCJLUDCJNK5fMDcwx29HZjFm+nsP0lBf+jBZ5DTxS" +
-            "ARuwFNjoPfFbjRUTnO8BKn2sEFwxynqrAl3ojBgviHl4OV0OjRcTlZh906oiiDkUjZdbPTg0" +
-            "DW1+rExorBjvW/rgHnipj1j9FdMY9sqGqlzUP1oPaKa6kUcZoZ06hVlQ6kn+LQwlieMalNrs" +
-            "GgwECBa5m6OIvpwo+qKSMB0vukzkuBE2phLH+AEAiHd5n3d6l3djiPd7n/d8xzt8p1N+9/eV" +
-            "Fm6Uttn6tV9XM+5/vFmniSGieCGj6Ak5kAMmUAo5yJqKjz5KlIMlWKsYmIToi4GP1/jo03jm" +
-            "+PhJaAFKpMUYIPkY2IAliIEciD5afPnFWnla8vgWmD+PZxCUz4Ec2LEXeIEOYI9JioEWEHr2" +
-            "eIGezwGQz4Ghj4FJmoRJQnk5mKQlkHqUb4EcQPlJokWhj4EYkJ4l2Pqq74BJgPqdj3mjj74W" +
-            "OHuDA/m2h/qfh3qQ7wCmL3mjZw6nXyzmQHuMB3n+kMd4PBD5wa/4FIj4is+aiccDJlgCJqj4" +
-            "qwEKSmwWObAAOZgEpRj5Dbj8ix/6zV8rJjj8kdf4wd94PAB7kcd4Ofh31v/3fudNIeRN8JKD" +
-            "XKD9iM+F2reA2q/92+99OYiAiLeEXNixSbCE4p+Efkj+MRiDflh+52d+5X9+59cAYVh+YWAF" +
-            "VggANQgAJ9B+NRCFG3ACDBD/NHCCHnCCL/iCG7iBL6ABFvACJ2CuNKCENBgAH9gIGPgzJiUE" +
-            "XqCDVJAFgAC0iFAqcsPIDSDURAgOHMMEVPChrAlCOuTI+ZizaJGsZIvIIKGzSAAxQpuGZeF4" +
-            "gcNBIXeSkAMi5Y4QIXb+EgWqUGbLInJSJhACVEYIIV5hkgS9c8GgnUXJZAwbloyXEKcXlhKy" +
-            "U4acS6QTpNBxCWRA1AF0AhHyOIwOoCYHRAogt/IA1ySLmmQRAihJkyACpDRJMnSRlGOLkgg4" +
-            "LAVIqSaEFqFdRKdPHzo4TEgY0CsZ52Q6BsxJdSLNnF6lTdOQMMdVGhppvEhwlWoODzrgKG0C" +
-            "NORLKkJp0vjY9OUGjTkznHyhg6g4IXA0ElCa03oTCVng0nxJI8ZLKuoZedAwZsEYeWMAzpdP" +
-            "b359vfa56r2vF8ES/fr2+VjqZwl/fj7+/8fSSCOxGDBgLAE2UomCCe7T4BgPVqLBg7E8uE/+" +
-            "JWNUIowwrGi4zxgaCqOBGqw4wUoAoDgRQAA9YMAFBk6IgcEXXDiBnBg3fMHDb1984UovEqSR" +
-            "2RylJUOIDwkBUUEqA8QkywADAEFHMj4AMZAshJDDCx2EWORDRlgeiYSVFQwDxBwX2EUmB40R" +
-            "AkQSHAAhBARSPHbHBOQkMSdTSSQTFgfkEHKBFMM0kYg05JRSBlCBlFHKY1kMI0tgSDwmhEiO" +
-            "AZEYEkCkRIgQAiQjKS+yAMELOco8hAQgVfWRRSlICCEFOYtk4dZP5DRRBhkXJDJMEIPyIkAg" +
-            "eDomRBJQHUSIDI/JcqWXqSQzR7SgSauZBNEO6QprvfgYpBdDpOH+CgwwkDAEDYTM4QUJMiBH" +
-            "CCE8zkGCBAls4gMMX+A23AwlEMLakKp9UZyX0bqWwA1z+DBtBO21Rx4A5TFRjzERS1yxMfDB" +
-            "t/DC9diXXz/9xGJJyCHvl9/IJx+oTiyVrNzyymOsrEYl6swsjDrqNCizBvuoIUwlMquhhogk" +
-            "gqLGiaIUzQoroKAICtFOuDhDjAm8xiOPaSSQwGq/uUKHktImAy0OdHTUJ0YIu0tHKiRI5kNQ" +
-            "Zsoyq5SErLU2EEBwOQwvPfEyzlaE/EWOC2X8bYcdByQjhDOL+CCYpUKUgZSgYAUSCVh3KFKq" +
-            "VsrecUcQQJThDBK/SrGpAALQEYQzegX+JlcZA9WEZaMOGCuSFBUok0WSidExDEyEJHEB4EQR" +
-            "qsxewg8jhEEXbDrMIhc0QQYQw7jbJjiIcEbHHNSGttmQqah2mg6bwCDBj7/9xkMJMFCCLiU+" +
-            "8DLkMD58AQMhMMzwhQ9pqAEKFyWkgQdzoAMdekEaHuRIa+CoV7qcAAMadI0EJegFAl0hizls" +
-            "jGIMq8fDOMgwDW4QPrmgz3wssYCO6cc+k+BDyBagn1i48EAYOhANV2YAlR3IAApS0D58ZoAx" +
-            "9DBolThR0IIGBaA5IWgBUEOKnLY0DPSARKy4QY2+sBvkeAFrXvACDHqRABispnzJIAEdaDAA" +
-            "WdAhI4hwlyz+EOG2jLitAnQYACK8Vq+YgGNLQCAHwoAQhM1whRCIkAJM6CAFKZBBFhtxDBkm" +
-            "RYgscMBUWZDCIiogBEVshQNbcIYLEnEHMunBGXQgA198cBghSGohcxACpGRxgQlcgA65IscB" +
-            "7EAnASQCEISAgBCS4TuL/CkVhNqSZHAghCYggRdLkaUQ3LYRwAnABXKpACAusAhAGOYxBxEA" +
-            "9ZbSJLGd0QclwNb2BjAb0/QinQYEYy8GwBpXDAl9aUgFcIAwAxgAogRcmAMQ0tCuNMjIbTzg" +
-            "gWm8cJxxWRARJJjDFzAAHeBkJBW9yF+PhkSbEkiHYRerWAglFh+NYswSJayPfvT+w0KSxeJj" +
-            "BxLZSmsYCxy6zAApG4PKZkZTBelQRJWAwk53qgZRFPFnUHCCMJh4ogBADQP9Y8UXasTUGXCh" +
-            "BzegxBC8kIAvmAYG8yyBK1jgCjpalBAOCA2WtEcqhPTiMYTohQ+GgYRU8AstaQDHQOYgC16M" +
-            "ZQ7kAAQO9DoMxFEFKzLQkjAnEClacUB5WWCA8qSRCDIAggFvIEMgbPmYCQihD7GiXhOk0MwL" +
-            "OAMQkhLCATzFAdhdoErKAx5RFiGECvjyAsmw5FrpRghLSuWZbcUbIKgnl7XIZVZJ4AUSkqC8" +
-            "xlTgAge5AFGUdxEj+WBJA4gutIbUmdnM4QSlAdIQSgP+z3Ct01+/kSAlSLAJMSgLgb1QBkND" +
-            "wwMn9OA3XDAXIQA4pBwNIQGIuCBXv5AABCJsE87xr2tokAxyXKej7QGAghksH0t0dIT5qQ/J" +
-            "QIYyPsD0QBZ2qUtZNiCYvXSGO9RhT9XAMw0ckWlFLKIoSDQiqLEiaFDjAijEMBwxOGEGadhN" +
-            "wOYwLy5qlRISgNZvQqMZty1UFpRaKwmCANsBitVtWVJbGhGRCjog4YIIw0gvEHEBQAywCZLx" +
-            "VGqRgJIyECIQEJiAJSMhyiwkgk6AqAZYeGFLrpThk01QRBYeOYphVIADSqlAoax5Bz0kDzBk" +
-            "SkKpanIpQOBqIHeRzDCcgaX+SLpSCCY4gDN4QYjX0QFN1BQCpaSQWiEAQRYHGAgQZGBmt1Yg" +
-            "JnRwwByxuwnQJAM0R+LMALoYmzRo9TQ/kkAWyzeH+1HqC3MYRglm8BgezCBez9lEc0hjHBnp" +
-            "qH7AMUlrvqBj5vARa1xIQzK4mpGrHZsQHnQwACLGYAdHDMILbo8l3tMx+6BUZPTRMIdR1m8K" +
-            "AZxCNF0ZzXbI0wUpCEMjAmpQU5zEEkENRTxCKoy+QCIdvSaLrvACJcI1AC/UrzQJgCciAGgW" +
-            "gpxxS6nwgS6nRCof9EIkHEkrEEggkUomRAi8AIcsyLAILcnyGCYAwh2k4IAKFJ0XwyiDZ4sb" +
-            "BlL+cwACWcgdBBRBjCREwg7kSMQbDBLnxySiuYlAZhYUQOo808UOSUBCoYhCZ6Vz4E+lcMas" +
-            "OJAEcAjgTzoRAiKO8dpMCbIqhKAsEirwc0JTRK2qAlQgZHAAXvBCl0tOo2Ysur0TLGnlocmW" +
-            "+bzQCy4OyYCkMeD9aHABZXiBbmnoxSL6OQR3YScNvqGaD8qIMPDshjXzHABp8PcFLxx7DjQg" +
-            "Fw3EYGx7ZYe9H5z3ukO4MAhvTKT1loOEJ7zSj6nshdbXNw7VMcOTrjTDjTCATGnaCJrFgmcs" +
-            "q8T5G6EBdRxxh0UsKhe+AIoe5DhGUJvBi5DzBRtnx+dlB5AkALikApD+SQewsZV0vNGSkAAh" +
-            "NAsBScmBKYORgEObzJFBkEOR9AQimIBryUIJQE8dnU5IJME4AIJFlIJhkUMZ2AFe/cQxkIMd" +
-            "cIOs3AE6JMEwdAIExAkvmZYA+EBnrYVgAMJenJaxEEUTNAFnrQWaSIYAJMGqDZeZBYIPcMUF" +
-            "mEA14c1fYVmSiISn7U3kVcWqOJkQyIAllRY5IEFMxBpdYJlyJEwvzMZsDMAJtNOP5Jr5rN5v" +
-            "ZBHIXU0J8EBzpF4TaBUQ3Mb7IMLqwc8EuQsg6piMrF4jMhQXgFF01NEF5QgJkEYyAdAQOIEE" +
-            "HAk/KQMMeJCCMR/zRR/D3NsqtlT4sRQNjcH+DbUU+rHMgYAfLBYcTjVCLNIMTSmcBijIEZnY" +
-            "izkVjdAIRYmBGASAjMgIJRRMdswBJfCABGyCtnBRRmSR2/DeJgDKkBgPIhzbUszBSaxFMgDB" +
-            "UlzZRUSL84zVMAACEiSDmAwDDpCJAEBgTQDKBCRCGQSCSyTCqu0grnSCHfQgA9BKIjCaTSRB" +
-            "BSTB4pCDoOkOBzCAAFwAAzAAnnRCFvBCGbxBVCRBKUyPzi1CJB1AE6BFnPAdmgDaSPZEIEQK" +
-            "LzQBODBGBQDPMJDABfACoTFPT7TJbXkNlpBDrFVASHhNroEPWyVDO2lGUm5RHwbJ6jXV1dxP" +
-            "GshAMvBA6ymbMsj+AhjJwiYMlHTkiOyVhkVJABYVx61tAiIMgY3Ry2xsAhD4AMjN05ZolRtF" +
-            "otqcooN11MXIW/WtIn2UFA3pR4b927+BWA2BTIZhCMt4383AjDr4zGICY8yAAhQcUQ9gZgCQ" +
-            "yIvUHyU0VRU1VdZgB4+kE3ZM446Zj3RoTXd4wblgTyrIAhkNQDwiAaVQ0xwhQqwRwmxiyRzw" +
-            "C0cMgDJFREkCggkU1x0A2jDcQRk0TtjRgR1kJFdMAFAIwRbYASDYwSg0BQdYDhAwg0EuwgSU" +
-            "gZlFAgQ00iaRwXLSSic4Sp6VCeE8T9G1xesESxNYEgQAAhlAISIIwHVWwKAkQz/SAVT+VECc" +
-            "vOMwLEWpVAkZyNGWFJ5BUAqgPGBa7NdshI86cYdprIYESAAL+NOLiEEA1d77sNe50AHVKAMi" +
-            "jMvdbM8bxdMNPJTbbMImaE0ygMu4lEAqDIErSJD+kAA4LJSygaME3JYPIFAaDEAFlCLD6CW9" +
-            "cUx80AfHdIyUWkILkBRKcVgtuhTMLOZiXohjzkzANaYO7SJkdunN3EzNmFiECAPPBM3SQFxD" +
-            "3QCOzQiPWBUXdFw6FRu4ZNEcXBVp8J7W9IJr9MKVOIArOAAvIIIFtUnCOECUTNeylBwhVGCR" +
-            "8AIZcElxCUEqBFoTtBVNJAMgQEASgIQAaCQQ0JmlZEEnCID+DNiBAhgWBCiAXTCArCSBcT0S" +
-            "JPnEoFxAGQgALyQK3TXBOFRFYJwjYACCMwzXrQ5E5NBNFJLAQqBKDiLBqkFg2gRSNSmd8lxT" +
-            "6w3lNZUKIJgKlzTLGrrAbuYaOoXNaQxA58WGK3xBD8xADyRACVzVVBICEniBKxFCd8Flj2ji" +
-            "jAxQcVRHBbDGkZYGlZDAAzkBDwyA+lDqAPDIEFxJpPICDQwBDPgATc6B/ahbPTABE5xHezCB" +
-            "MXwUAETpBkHYvfnHvlXp9dXQYabUhtXiYqYpLwIcDs0QDe2QgkQmhgCRMCQIMM6MZWrIi8nY" +
-            "DFyV1VjNEOiIjdEAIkiA07rCEID+CzwRGzzBK2lEi2qUwAOOEU2mhUHspg+sYTKs0UDUngAI" +
-            "QS9YEiBMCUViz0IIziIAmgkMg90d2CFtxE24oxQogt0OJEx2AiIJQSdMwF5kQSAsQikkwmnp" +
-            "Y01oJy8kAgNQhSJoXRbYge7UykYYFky+1kok4VIMwzGUAuRFBd0QBV6RQFugShNUifMcwB6J" +
-            "a5XY7ZfxwuwCQR8811C6jSxg11jqoR5ukRioQf1hFf2UQCLOgTL4wLmMwyakQQnIgL2kwqbM" +
-            "qPTeywy4wq15yWx6Jg+4QgmkkStkhEMNiQ/IgmqgiwSsETlsAkOlAt6kQltUwHmMrCluDMe0" +
-            "x3zwL4T+hUw/jBCW3mJh0pA6yKLKPMhhwkzCHcj6KUia1lRP9WzPQkGCVIKF+BRmYqYTDMG8" +
-            "8AgCYYBDBVACeJ6PWdX6/MbKYU138Z5pAG9sWETYBMVYgYNb0ZPh7c+ArtVogWOg8EKfEAPj" +
-            "yIIQCI9CQA8OyEUTWAQDlIEsQYAAyAIxbC4SzMTiSMEWGOQEREKrKkInPI8CJMIiJMIWMFfh" +
-            "iqodoNoELOF/5qBLjANhNMXkzKdAlMJrDcMLVgA3BQVRmJmZKU/yXFMQRJ5r7c3PHbI1CURQ" +
-            "Akq+pgXazma7pqZ3EZsT9N9VRcdAmYSymYnsoQu5SUdq3NocvG+/BFDHrd7+HIDDOEqAAO0Y" +
-            "tSUgF5yLbLijvSgiQSybANAG3SDBBjHYRm1QBOglhFWflJLMvh2zyBCmYVLIhQyIOjSChRww" +
-            "l+bQS1GIhzhwgOxQghRc+i1I//jsmzrNDewGBtiY1VbVjgZQFv0G1QBbFy1qAJmvdIwjZgwJ" +
-            "OAxACVBbWtjVqnmJ18jCVw1EucmAZCDJtcZO7xQSByiCuzhDHA/SBEhGKXiWIemBXUzArDZB" +
-            "JIxxEnRCEgRBnDFunAWGFDgDXnzF0pWB3rBSVNSEm2QBngxKECjKXZRBktRKBfBCEkAac1Xg" +
-            "z02PTjNuVFyADPTWz9mt0kXFMEhPT+yRUP7krE3+yTmZj2kAiTLCFyhkhxjc1wAAQgI4wSYo" +
-            "A5D4wLJQyWCVwAXBgPQ64yakAs9Vh45YMmlc2f3wCFffGg7UHHjECwR+FRCwlyz0Iz1RAgzw" +
-            "AkidoiqGUMrqGysacDWPjJYecA71rC8e8A/hVDPv0EtFcC7KjM+E84qBwnEA4F3niGcq22r8" +
-            "3h5C46CmAfmYCzqBywNybZTIYZNQCaBwYOH1RkyMDYLCI0POUWcdQFtlwQEsW1XQAegM1642" +
-            "wUaOKjkowj8qp6w0gTRkARkYy2lddyA0wR0wAGiNgl1Egh6s5zE8UiLEhWC4VhZo5FXEiUve" +
-            "RRP0lhC8SiDwNN1cxAX+xJoaJtMiHMCq2e0BGLWpPA8hZwkg0GQfEEJl9IEclVsqLEk6rQZr" +
-            "eEFULQ2NZFsgDsH/kIA0esn/IQyPzO/3bAISrPIAUE0JAN/30ECLX0290M/7zMHr4Y0rXFU8" +
-            "kkC0ngMQZNEm8IIMbEIv4Er+Nuli+6/K1sd88AeFvSKFyBT7gZjKIDPPrkyYKsgDh+mTXzk3" +
-            "R8iFYEhReanMBKOCFFEACIP/8F8VIVB2BAkCwQBG/QZbcYu0GNCP8B7wdURpuMsmFEmSeEny" +
-            "aI9D8MKSTE9GpG4vVCtBeApHPAZFOMBekEPPZYEA+EWePU8nJIJm3QHqSEEnZJbmcgAgSAH+" +
-            "OrwBEHRCJBAGDkr3TedKDtqdEOTt1MHkMChDrOgcB9hBVPiqMpUBXhUdEHDA1F3AOLTJQZAB" +
-            "pvrkGgECEEBaTATBXvk3EPjcRgC4HDULGl3EHFELZ7BTGuBfFDkBFf3GDZDLDAyBl4ALtaWG" +
-            "23Rs+76XjtBAKqxRBQCQP8HAANDA8hqp/QGHjz2GxGYHCYBjKsgAEHQROQgAEKil7F1AdZTC" +
-            "HZyHyI5sk8qbe8jb/o6Uk+tbStEQ+WXpY8tUgBzILhrwl+5QLlbCDaX8zJg5E9WIGtyA/4jB" +
-            "aFvV1WjL73ELdoxTMhTgsfWCsqXFb6yRv0gJnxtJWhFFL5TANWn+DyJoSaATBbUVUpyw2uYy" +
-            "qAwklixwQCIASiKo3QxKwbIIynDdgXrzwjZEAnONwp3YAS8BwUkHhjNEcRI8LjlMgEEOwyGt" +
-            "yjgcywke0xIqPFp490CIWT3qUhC4SyUpQwX0d07SZFAmCaDoZuPHBKTl5Aa6jQRyRuhReGnY" +
-            "GIvUfP3JyMM6AWnkSFrQgLL5V2FLQHQAxyrPxm/MgCsXSRphYxZpBkahSwFO1/5kx/1IAEM2" +
-            "AT1xR5IcG2Csxt5UfMVfzHtA/wgtdr1RP74l84ZlWIFs2MhzGPeXPPcvQCuGmPc1Apm7fMJB" +
-            "QWQGYxHVyBKRyMyLAiVkTViWho4UVJH+aZXHVZW1EdRm9EK+AwQhH3OSEeLVS0IyIIt8+CC3" +
-            "iFAvg8p8VBi2CAmdYcN4EQKSJAkdMlmE0DkgZRgScqWSkAMiRYqAYUnKDAM0AZ0QXomkBJmQ" +
-            "qGUWDhx4cRiVRcCWTsM6jbowTJEzQqXucIx5sYyUC0IU3blwgYOQRRwuLGqShReQUk/vACIU" +
-            "ZBEQICr7VKiAiJyJCiTo0FFJiJAswEgI0alAhxw5QuToOEA0wIesZMnmVO7VK42XL06GOLnh" +
-            "xEmaNE7mIEozZAChL3MAb5rjo4QEV7HT8Nj8BYYEyKmGpPnyxVWa1ITASbBdohePTUAQzRki" +
-            "RnllIICc05j+Q4LQnDR0mkQEkmXYpiFDfNQDAMD8eSb12Nez1N59+/e5LNGnbwl//n6WYvGP" +
-            "9R/AMQD8rxJ1BgSwkgH7AdCABPnjI5ZG/htDHQorqUSDShqhcB91GtmnwEqgUEMYEtVQgxXQ" +
-            "TgzAiR564OI3LhJIA4baRPMtAet68YIHVySgRDQYtJtjEzpMmEMwOkrwARFEUkmGDrdkoYMQ" +
-            "AYDwSwghEEGilCYQISSJCwhBJIskAltEJkQWuSAJIGSQooxFhrmjkyCEYOaOqe5IApEm7LiA" +
-            "DggUEQCQO7YIJIlIJlikkwm2ciaJLCeQogIhpBDiuwvUamIYGcpIAhAh7ghEhgn+ylBmmGrk" +
-            "EmARMnQaBghygjAMMCqxI8QEKgWbso/CyDlMFhz6QqwwQu5K5sheTpjjMjHE4KIHMVIUwwkM" +
-            "5vACAxpgcIIHQiRYjYQ0xJhBAgmGgKGgTVzRzjouuOC2sk02qZELMdLwIZXXDhjgCy96ASc7" +
-            "GoAgxF9ZlJE3AS9kIKSEOc5SRjg6Bt4kAR/OQ68eJtBbD7734qsvgvzyi2W//O4b+cBYxtiQ" +
-            "wZYFHBC/WAxcMMH/LKnEgP/UATHEEDdU58Ix9gERRFDUcOLEo1f8bQYnvuBhiC+G8EK7LyiR" +
-            "zQsvaBigF0oooUwCfweiWhkkMPNhEco26UiWARYJRCD+jRbBbpgLKvABCI5kIYcXQAkR4k9C" +
-            "mhhnmAoYNVOKOxahI4sJAqlAigma6CMLlMgpI5JSFhnFDiSkYKCJRWBqopRO7giijG1aKkNx" +
-            "ruJ0ZgIhAsnCmac4yAKQJkKXIQsZzFoEkE4vknUYwBSrgDHGsENkMseSIcEBvgpLpqEkh0VM" +
-            "luwHGCAZzL7AoGkVe3BCxjl48MKHAdJwJbsEUpGlBC/S0M6JGdYXEgYfXMuNCx5gsL8yDaPa" +
-            "JniQBoAN5Au9qIAseoEIIRCCBpuRyBwkQAgOLEICc5gOIYLTi7S8ZhjsuRh6Lmae9kTAPe9R" +
-            "IXtMJjKR9QeGsUiQOmgItDH+3BBoMlRZymwmsx4uaEA5a0QlxpCgCxFxH8KAgjBEVAk19MCJ" +
-            "rEhaAFhktGohzV6ZmQElfOQFMVTGN0OYAw3EgJsBzOELaUiGA7TzvoFQjw5n3ERhECELu9DB" +
-            "IbBKhkXgZpAsRSkJWQCMFBKxCHLYIQl9eEkSFqGMJuhkEbATQgWSMAFYQUAKJMjCKI4hi9EB" +
-            "wQ4Q0F0nGLCIOyTikWXAlBTsIJNADiMLZUALTRh5jprMqRRIiNQwmgAEXsgqCG4xFi+CkBjF" +
-            "IKIChelLYRpCCAf4AI844AsdcNAHHOBtMeCQBfNMkIpUDMALCYARtFzktPqtawg8kMVoYFCC" +
-            "BDz+jWJAikwJXBEZH9hGnF8ogXBkMQdqkYZfrAFH1JxAA0K4Zhil8MEXEsAaHwQHYNrpQxOU" +
-            "4YqEJWNuGiwFEOa3CABobIQihM/HVuhCPrjQhT4ckIAE1Aga6lBAQZPhy/7TjwXhZz8pi2mF" +
-            "iJghDR3xRBrIkImSpgZQ1E8UAThqGceVhh1JrTIM7QUF++VU38zPRqnwgQTmV4FNnA0J+QKC" +
-            "mFLhESkFIRDFoyRRktGEMhzABxeoxjgQkQQpJAEJQuCAAA5wALsuogLOKIPhFFGGPtykCT5o" +
-            "ghQMOQE7CKFUkfhOJKQAhK4IoQnSGNVZcFeGoyyiDHYYXBme0gSiXGD+HDIYRpzIEbpFCAEQ" +
-            "i+DFbA8QK0IsArfGGxYh+AJNB9ABET4olq7sSSXA3GWb2Qub1BLgLAwgLQA3oBYlBpIGGrhm" +
-            "NfNa341+A53K4HEOqRBNLzbTm4ZN1TSsmNEmUoEQEjRHAsqYmytgRL1eJMMm5vNCQQiRGSRk" +
-            "ARzJkME5gICZZJQQY+cZKXtCZokG52cB+XlwCvWj0wiprIj/GaKECtQIDwMIZf6x8BGDVol9" +
-            "qAFEanDiiY2q4vFxgRUBcNENWHHUL9wARgWUHw164YrfYDWNTn3O/MQ7v4Fc5kuVIYQMcIBM" +
-            "IVzAB+B4CmAEIIAgIAIIztASOYYRCL8IIFL+5KAJB8ghhEkhYhiJ0NIFpOCWO6DEIqETnCh3" +
-            "Eqc72EFOWXFGKRKhALdyA7YQkAYvzCwFZTijlQLoygXOcQdnpCoLF6jyReoGWHK4JUpUcoFH" +
-            "CPEXJMgiMnjsC76ClQxQAwYRjnFArpBHhykx8ATfihEXnrsZUGimB16Qxbd6kYoChtdHr8Gj" +
-            "BKzjgzR8ZjUwgAEJqnaDBPKABqkgAQw2IwY6uCYVjazRM+aABPX5YBgDkGcF5uAKJ3ghmXMA" +
-            "RxaasE4o8WKraSBhSC/GBI95jML4OZkl9uOekKWQZDxc6Q6NSHAD9efg/znpyHKGIKAR0aVD" +
-            "hMKFXKyGJSZNA1L+dEKJjhYAUTgtAbXmQXOdph0MWKtqakwDBobggOyk0ZtAui1CKtCECuSL" +
-            "F4srq2KYBAQBuCAZQkhCE/jWBAYAAgnjuINc7HAHGdDhDllQjBCsVCUBuCQJihgGOe4Qhtaq" +
-            "mRCs5HIZbtkJZlwOApqDAAeGIQSy100K47hAKUoRCLJfoAmOBoQAdJelNQVCGYHgRQUIsxgq" +
-            "JcYFh/nVl0zgA2H5wASSIYEP1sg8B6zxfVBiUq4QQQesaQZ8oAGNFBMAmiGQ8QubqA1uCmgb" +
-            "HsyABgmAAXEqs18fQMtpaZBAr/2ZIjEGxwel6O/XmhNBwXDVB4AwNga+OBDWLEIWCUj+zaeH" +
-            "4L6OsAbBIlQwg0/osQe38Pv+wWlNcwogGhrxhgda2YHyA6H+9CPhJT5/ETVwYp8+UcWVYIUo" +
-            "VNwiUEBhRKolADAgjd5FanzjAH9sACRgBqxmfeznvvgFBvopgxaDMkiAHJShgXhBBkhgAJBg" +
-            "64TL5w4AES4gDIQg6LRuEyJJAP7mUsghEASAAwABchKBHMjADjiADhJloxLBDizCDhhrGCAA" +
-            "Al5rFCZAGbrBkhZhAhgAJJjBDobBDtTsAroBAoZBAFBJCHhiJlKLAx4pCWRCtvgmI5LJLoyF" +
-            "MQoDCeaiMIJFIKAE1OgASj4NvL4JB7gnjiZPfcKJqZhPDED+oQcCQA2kZjMKiBIKqBd6Y35o" +
-            "QDiA7AtmgGqiLTtmgMaoxmqEhAa8IDTooIAMor/KaHsySC4ooYwI4qoGxrryxgeGgAu8ALge" +
-            "iheSYBg0aISyr4TaIxdOiMLuI98W7odiCIh2KIZi4aSGMeEObmT4IxhlyAAE5OEezolAYWiE" +
-            "QRCL6kI47kR6AMdEIY2+YFx+IwEgEcicihISBqt8pJtEg3qSIYOYJBlggA5kAAjmwAReSzLG" +
-            "ihCSgUugjDswxQUeqXAqSQAqJQcFJ3aSIQsgQExKAS2CgAOkoBTcDpWSYAv0ABBCaxiIIQmc" +
-            "YU0gYOk4AB1ICwImQAaGLiI3Mgb+OUAWP2UmkuAYdqksNsKQeKF4XKBXGCPKjuswUC3UAmPU" +
-            "psQBHEAykmEA8oUof4sOMCOMwNFdZoBF3EUNGvA35IehZoAHbMMb00g2Asi6rkUqdc8VaAAc" +
-            "/MmoGmpdlIETQUMC+kmNhgEReoNJyIg0KsAVvEBwCAY3TIDZRAMIlIF7YGke5wDBso+F8g0/" +
-            "Uij84sMXY4YxkxHEZIbfRKymmrGmbCYZIYRlZMbEjEgYNGBEKoH/RmQfnAAKNCBpUuxoQAEQ" +
-            "GcozurFaMqOqyg1bLoMSbmB+NoFHBCMNGioidI9KwhIJFmcAyEFTCAIQgIAENkEZGMkhmgAJ" +
-            "CWEYJoD+FxDhGMogLYDiAMSsS1aCAwRvAvTgIvqMFzBHKxSgd45BGhhA6CIhEQpFtC5gAsLi" +
-            "AoLwLJhBCpqgG6qCIamuTOxKALLkAMjAkOICeMhAMTrtuPriS2oFjr6EesoQjyaD8jaBKKcq" +
-            "X7TDC75lN53lXTAA92ag1laOW8hLjJIyAV6PXlihB2BzqtbnEeeAEqQGIdAoAZgHAwYoGcRl" +
-            "guwyEGSBB7iAXMSrFxahFDbhCwagAs5IXCQgjtKgSpqAWTYoNuhNPUbKGHTRwSIgF1GqPvpD" +
-            "/GTGFwFkGflDMnVGh1SK/PSDZiQkFpqRxPZBA4bIxCyuEozmiKDAaFYkRcj+5wvGx9moBUZO" +
-            "43tm5MfKJQEslLwgwxWmZg64xqkkY34AA1/WEAgEg0iVz1KEYABKAc/0Ucto8pUWwa50YgIU" +
-            "IDuDcCo6gegSoQzshJWGLhEUwZTQIUwU4A4eKVZnIipWCzwE4A6s5M3YpO9Ucuj4rm42AhDS" +
-            "4gy/ZJnaUDIMgwSyJzKIMn3o4EmajJmox/ksA41YIGE0Y1x64Ili7F3GJ2reZQbS1QFhpDdo" +
-            "oIASggS+IMZmQH3WRby+wKhqJA1IYCw3gwus4144ZTTSoAQGAAam5rcqpu1KgBWFYxXJYxad" +
-            "tDh5hDWawxZLKBfjg6QWzDDJNBZSKMJsphhDTMT+9qMfxqDhGqEZF+CmKsz9BgQad2bifkoD" +
-            "7LREeAYbA9AJpqVpXIQShiBFbgBqYKRGyigN2qtf2mlIDko0UgEcFlCrGGgOyixJgWAckKAg" +
-            "vmKPho4xQEL4RDVO0kwKBOcOhAAJ7KAMyIAMTEUnkiARIk0KRmE9EyHNdgAt7OCxkkABImEY" +
-            "pEERkqAUPqcUnGHtwIIjOWuxugRSvDZLnmwRsjOZVOIMdysjoEmZmkOrUqHx1khJZCFXHOCb" +
-            "uucEdiQzuMpebmMzxkc1CXAGZMRGtgs2D/YzMEA0rivlouwLAoChRMN/RuPctAY2KaNfguta" +
-            "WrEyKqYJSOBnJSB9ekH+DE6AOjqq3eRnDugAQ29rLGtRpOQDPUyGhQ7TwfIt/FKq/SKTP9QB" +
-            "QhYAQF72QIDohWRGfc2PpaCgiIShRNSBiaBgHwDwREBBA2JBFPhvqTBAFHqg1gxYaqiFobzA" +
-            "XdKoNwjiWtBrDg41HzvRW9LAQdXIkAjiAuBtOIVgGNDGtDpCVCrVrZBAGSagGnQnByNSCBjg" +
-            "UqRAVYUAHfBsFGb4DvZECLaAHpiQGcqkDDDpAu5APcsAHf6zE7JgdpBCCMoELCIFs8CQU8Qi" +
-            "VoglI5apSehg8igjGZzk8ranbSjjvpLhm/DljHqBBsrlNw6QFavPCf5p9I4KSGHkG2/saSr+" +
-            "AwbOB4zMCTfUKEl99ws0lEL/CQO46gscYg6cQMYI9kcWYwjsp/Oo7YuYbQ4qQABIYEb0UV2s" +
-            "hg7AwRVSIXj2qRYVbPs0Nt/ko2MME4Ya0zJfqGRiRuAgcwHUwRKQMUJqBmiY6EJkKERIRDPt" +
-            "FApA44jeRRCdRgz4bwbC8WiSuVpckwcQwllKABF6ITQ2QX0ooTTCqYE8b/ZIwAM94sqg84E2" +
-            "AZbgTXQCQcBkYiGSgAOc4SKZAYQhgAHoYIfHlpXEIgjZrQy24AmrohMigXYYIBJGCS1CayPf" +
-            "TOiyAClUsgmGDlEu5ZGoDrZsIlZ+yVgIT1KFkpkcz9SKstdGt1H+K2MAhHIyCGKqisA3sqaM" +
-            "vCgBxOlZxufk2NU3bANIRiNDce/cYDc4hAONyGdd+JIQuAAUuKCmnYB9cpdq0oASQEP3EogM" +
-            "CAEG3qVikmFd5EQ78IIOFlWMBEKNBg8GBkAZDkMwR5ljP4bCOsbBwNcxV/mFxK9MCWQYz9cS" +
-            "1BeWA44ZCeSIoDFELGQ0rxEQS9Pj1ID/ROEPQYGwv0A1z+0zuDEBhuAGKAEGLEr2jG08fEAH" +
-            "eiEBPtk0MJgdSwMQmoMOWCUV0AwQ+kIs+kJOFuc77MAjFAEC6IBwgSdYsTAROkGvEoFV/sAO" +
-            "yKET6IHqcph2toBvISAS2K7pIjI+j0H+JcFsUo4BTf4zUqqsyrJEd+qmg12CHDLC8PCo8/oC" +
-            "1BqijubAAdjrMqaqMtqrF86IWTIDARvQNupFEx/xxURvjeubeg0ZfXyjRdZHjPJl5TBgAQNZ" +
-            "f2AAA3rAOtKIIBxbDWh3yAYCNDJ7n7igF4AAnObgIpJjfgZA9e6FEFLBoAIBCOrSXi3mFtuD" +
-            "hLhvhQoTfPOtHxauMbnUhRZkAeK3Tde3pipMrmeqQoYo/4pol4sIRAxAxfJPsJFmH6hIXF/E" +
-            "/0BjBmrMnMSAAMPGC8LSx3pDfVYjfWpDFg5C9/DFFfYoIlgjVgZAI3oJTLJAGUhAVAIDs4Cg" +
-            "AiYlCSqlDK7+Lgs64QIAAR30gBDKwLaHQQr2Kgns4A+UewcggBcUgQFEC0/0KgcB18yUGySE" +
-            "7pHqru/8LhCy5CuEgAyO05BcwDBGDTDapjBMYDKI8knaC9uMMqQrY73TSDO8yBvr5zdAgwtE" +
-            "oV5O7se8SIE9AxTSyQsahkbSaNdAg3Z7LMpGo4BdwaLS4ADoQIHnp7nWpWkaqqdB4VBFAzpL" +
-            "4AZcYaoi3C7pYH42Apx6AXRVD338ct60D8W/V2RIanxdaN++1EvJ9H0fE2ZQ6qVUZsdd6kJ4" +
-            "6og2ZH+PyE6zEcWEATREYf+Q5mhmvQee5jNIQ1zE4FCzsnta+su1Iw3aRrzmiNn+CgJWKuKB" +
-            "8IbdVtCdm7MUkIcm3AImkGCIH6cUaiII/twOvqMTnAEJ7mACyEEROkEKAiFW+Y5Vm+ANIMCu" +
-            "QGICWCILjqHvsDBL/jNLgqftNkJAx7AjFMMvkmlYOm+ks6fU0+eMXIF7Lq+8yxu/1/hbyEec" +
-            "YKTAnyu6nOCobnQIYlQ0KEEzgKRPFVkznNTYvoALkgEcUhqMpGsAXIEAMXR8wus3iBKxjyY3" +
-            "vuAZjOVb5gAHkkGcMKDXbCMVkDNSmyNG3ccHeCwxDizBMAaV2V2F8oOkTIpMIWSuX9lLH1PE" +
-            "DMQ/aPl9+QCIgnGIGqTE8i9CgKZBRmTiTFMQncjtrUj+DQJgRFhEXI0ZNPrlOeznRG9gCCSg" +
-            "uWSv3JSji3sMEXiBqmUBCYxNscwGEQCBHMh8K56akppAI1SpBDwlCHCgoVllEcbBGWquKhbB" +
-            "Bw+AKlgFcJpgiBMBIC4M6yQlkJ0JSRIm4SAgy8KFTYRIFHDsgoAkAoQMG8ZrGDleQmQAAUKo" +
-            "AjlyhMiZpEOopCxZc5IhooNIFqFkA3r5mNOr15yYc1LNGZAmzZA0X76kESNmCBcMSZ1I7eFE" +
-            "jBM1TL9g4OJkRpobXJN+SeAlASWlc5hySQPD1SYgFXj0UIOhl9E5hGA4AYWhqJc5ygh9CfDF" +
-            "lVZQTuw6gXGAThqpXH7ySEP+0ksaQosQebGcJmdfHz50DpMBDoDpeqhTo7bEWjVrS/Us8XlN" +
-            "+3WsfrZZx5KdO9bu3ZZux1LHx7dx38FZF+fTr99xdbEqNRqjbkz06OoqVfKtRs2+SvsCiIei" +
-            "pgeX7uYxlHfyxQkrsU5u8KA05MsQy1+4KHX6pReSsjbN8cUcQMAkgQ8sAQbEARX4sIgQiBAy" +
-            "TBhIyDIBByhJkQQSSMjAQROYjSIEHRCUAkgTWWDYxEKEOHNHE4vYwcGDd9wxTBZSrPhhGQ5J" +
-            "cVFCx2QkREJN5BiIEBckucgivJy0yAGLoIREBRW0dIAsdOAQYYQvIUhHMrLgMMAAJwQ1AE44" +
-            "6TD+hwRlieWFWBggplVVV9HJnlhJudLLWAkgBYooTpSVBg290JCAEz8p5UoqaXjBxQB0JMDK" +
-            "ED7xEGiDA8L0mBp9YiBGKo45EVkyElj1BSGpDCFLE4D0YtkAcxhWWKxeyAIEOBKkMYcDyQBQ" +
-            "j6+/ngZbahEMi1qxtS2gHHC6IZccbrHMlhxvlqgTXHPHPeebtcEdt911w/lWSXaxjKGdGpV0" +
-            "B4oGUFQCinfCsCKVGqLcgBi9PXwhhig9kCVGD5YlMMMNvUiAQaASJDDErka5kszDuhJCB08V" +
-            "COGAK4RkMcwAhFxATi8VCHABIos04QwShDRxjg+EvEhHRIsAAsiFhCT+0ckwi9yRBI0TAHFB" +
-            "GQIlYocQUjDkjBCBhKGhhitiNCQHWQjx4wVIL/nRlJgBchIgFSDRR9cSV0lCSXT0gYMJsiCI" +
-            "CGg4yJKMDw+bwBMNRdWdwBdnQSWVvlQ5MYR5Vend1QxafcGDKxIk3J6uV/UwRDJDyQLDEFJJ" +
-            "AAMlaYBDwhc9yGvZEBLOcfBaAn7BMlc0pCKLVT3oqq8PQAwwgysDbFL6wpuMJUsFMKQBKlFe" +
-            "POPKHL6ehhqwqyUfW2yvSUvbb846awlu1+r2vG7OeXsba/1Yt63221XivXXpZleJBulq4IQo" +
-            "apjbAyhQaBCAE3PJO8NchEklShoStIfBwov+SxTpkDK8CqxpDuRIxsII4YPOtORhi7gAEjah" +
-            "jGEEAREV4EApfHABGw0AJOSYUorocAEGXIAOUZPBMJKQhY5koQm8sIOIFlGKJlwAakkowzGE" +
-            "4IyLDIloGFGIkJJwDGIkBElCAMIikBBCuFTAiRIjRIUqQAc6uKBsLakSFelQASzRAUEPqyJP" +
-            "GrWZN70pKWl4SlICcAPOWcUJntqbVYYghvYgihJSGUKu5iALV6SBFTMoQSr24gUYFAxjvTjY" +
-            "FyRAAy8gihwE9EEqvOCpnszACz6QhSNZ8QyeKMUH4KCEF5JBDjrY8S907AUicuUfJMwhDQkY" +
-            "3hzOghfTFM94qmH+XmtqQ61l/aZbr1GW9Xg5veAUZ3q3yd5xgqMO6IzBAN/KFriiky7t7ANd" +
-            "6EFXugIACvAEQA3fDEAPbrAXJ9yNKkpJo1LsYp9K9UcWvUiABAjxSh6srRdiSAYhENGLZFRA" +
-            "BgNwkADo0AskpS1qKBNAE4bhA15IQQY+SAKIAJEQkuAICU1ACDkm0I1ABIIgw/BhD6WWkSE6" +
-            "w2QaVEgSSMoRiQTiQcOAS0vIAQgmMtEFVKIiSmZqEpSwhGx0IMHuEOQAH4zJVRK4j77swxQx" +
-            "eGowVXkjU6QiBq7IS1RveuXdxFACV4hhfkZZGOS+6gRX0GBhJoAB3xbWKEIAQQJc+cv+WUtA" +
-            "Eqt4waxxSoMPaNAfBipSV6Vai6t4QIIKIKI+nXnlWH5SFJYU71eoYYJrkrdLXgpTmcZxHjB/" +
-            "mRtiOmsBxRmOJcjXTOwcJ3vSiWYjtHMudXEBFMKoBKB6kC46IYY9Ve1TftSQTvboiQf98YEr" +
-            "FFaCOdQHcqkgywAQkQYW2GoTaTABEBzjg2HcBBBCwJAyBHAOJABBCkJIhYQWITEUOYAcHODa" +
-            "IiDQBCCUwQ7DEIIdcoSjJnAgCVRrAjEkQoYVrRC/C7kIB6SmEY1sRACBwFkQuLaSxtABZSYo" +
-            "WylRcpIqSVFiPy0lIMhQRbgptig82MwQ7lYVL7yRc6LiSlX+ngLH+jghADNwsRhiTAnL0ccJ" +
-            "acgdYrzSKAmQYw7uEcMrGyuLpSRgDjDwAuiE4AMviBcRQGbFXfHoIB844RlpcIUr/iZkWH6B" +
-            "BOBwyk9st5XO7MkVE5tMLW0J2cceLzXB5OxsnKVM24gWOXyoB7Om1SxlGUc31oGOuMxVHe+F" +
-            "yzir3VZq3aUGYWhADazoJnnoB4pKrxHGgwHFgOwoBrL0Kw3JQEoqNhHPv2zCMnwE8hwkmQCd" +
-            "kCMVMNDnTpBQimHMYRileHVIh0EHIAyjCXNYhAAMKIMLAMEHGQVExrIAhEDcQWMcmIDUokZE" +
-            "IZSiIvFNEklXmhABcGCHEtmvEKD+tCReCKRJTpxSTqmYU0IcICVf22IVf4oEOmDJw7FqlL6Q" +
-            "EmOmEK7EVMWAeVj3FC4EgAtMGQJw2TMHHoihPJaRAAmS4Ug1ICopQ4EBD7gwqv4AQTP56QUd" +
-            "KAGD7ApmBgnIiX0y+SaWIUVeEmAnXoCcBkQ4QAIzCNSH39YomyjwC39BHmSVN6zKxiYXfHaO" +
-            "bRawHUEbs1rAQXpvPJst6ziH0NQR17cqYQDjbIc62oGCuRjdCA28SzuAYoX9OI4YLvybLI/R" +
-            "j1HqqKu7zbyOJSAgxPgXlCNLsQReIAQZYDCAl36RSuRAxAUgIIMSSEEKJPABdpGg+AsQAhAD" +
-            "rsAKo5T+EGEPOAnglUgES6GRJcWXwEIwWYBTLxGqLUkIMVsSIIIQJXKQgRwu6EMVyWECDLO7" +
-            "irt7IA580EVQQS5Wm7DcGRNQR3yGpak9mN+L8wVHt/OlqvTrdBr6iRRRbLqOXyDKgHzQHlBE" +
-            "Brq9NqUYeAADJF9mEfdJBgmIoh9Dhp8kbuSMqPhYFjoAglH2MTxpMAMskChoRgh8pSuw0mP1" +
-            "wARCN1nGkizUEz2ykS3cgz3JMWe9ARzQ4xuzkT2CVh2x0HXh43XRNC5gpwZQsFrfcU2sAE6V" +
-            "MGlOcE1fkHO8ZRlWQUZVVRQB5Aot1wuptHdzQAe5AirDBSYmEDFI0Bm/xiv+qecDtFYKZEAI" +
-            "NZQKJXNsSLAztpIFHLYIOyMEWfAgRxMIGmMRi7AROLMRQRARrZddEvFDSrIkgRAEgXAAwwAI" +
-            "vAAEMlMBvBAE1oUy9tYShPA18xZhLoADLUETcAM3kJMTWqYv2PcmnuIo7OFIkIhbW5GJQ0AJ" +
-            "loJjlHMnmzEUX6AGoKArSqZXezIDMEAHZVECBpIfq8YCDgJJr6Ur8ZQKgLAJ/7MTaYQVkyQG" +
-            "acALSHAWtJN3BwMDsFYrBzAHCQADoDEHZyQUueIKvmIMubQ8q8EaERAbsSBMxcQszuMbgXYt" +
-            "0EJny7QbzVSBGjguxuFM2hEu4dMIw6Ed5jIGYyf+j92BLsLwJ+pCit1BJ6QIFXFSF584H4fy" +
-            "BTSgVouUCgMgAU4wT0gRfqVjAslgFss1AH+xT15wXq6SEoQAKUNCIBNga8NgeclwAU1ARUei" +
-            "EigJEhrza8RwAfjlUkiyJEpSekOiUAKwCDt0DJ1nejIQQQfwUotABmRwADLAYXChEipREhYG" +
-            "iC8RVFL0U1/iEyTwE64AA2yiH3eDAQqTFH2iH5zDFVYhcKJyMALXaemER33xGFXFBQlTK7Kg" +
-            "HrzVC3rSEnS0FogAOXQgBJujKz4AXX9xWDzAMamQc2JgGZRwAwMABKJTKxeTc6NkGKqCBDTg" +
-            "CiRDCD6oJw3pBTSwgLH+NnTXWCy5VHTPc2jX4kx/xizCET2r+ZrW0o7i+I7DYS4jaB3TEQvf" +
-            "MS7pY49jwD7oowFUEQCV0BUBMGkJoB7swQWRhjkR6ZmUBHQn8CYSwCg6B413VTCWIUiWERhe" +
-            "wAM38Up0QA4+ME9CgIAj0UU4Q0VZIAAkgAhZkAXk4Gs4AwSwF19QUpNCgiRKJAS8cCQPAntC" +
-            "cgw7REQr4kOwxyRneAHlBgRMNJVTwkW4p3tchCWDiIgsUUVdhBMBdQI9kVSw1Cd5mRQIpy9P" +
-            "xRVeWUdDkKIPV0cHo2mc8UoqZhRckABC0ShHRgNe8ROKxUdaSSX8pC8BJQG3RgIzAKM8UUf+" +
-            "gbkZQPBj7TEEfuQUR1YCi0QI8NQnmwBrlBBLjJIGDoAqWTYHwYI8EZiNzCN1Fdia35gt0YQc" +
-            "CyAuu/GmsdAI0KFM2DIGlvCmuTmP4gMdatBM27EP3yGPrFWoqwUKc+Eu7vGP9CMqCvcu70ED" +
-            "WbF9S+ViAxKRiQUVoCQBN+AKTSYGsYYUkGMCvQADmvdKwthPSjQAOLBQEVIGw6BPTSAD5BAE" +
-            "+KVCMMILNkSHDMqGQ8KgsCcRByAQJRkIZCAQYIgRGaEjpFdrqRczMfURS0QlhPClpWRvWDJ8" +
-            "VspFGMatX5QMqZAKkFMUbOITSEFGSWEV+kGWWpEePRBHorI3b/L+TZbRqDwgAeznA5YiLwiJ" +
-            "SQeQDPoiWLqih3uySJuAkScgRZtBT2mEYw30BTiQBBVQHz7BKExBpEaRBhNzH1r2Sp3WCxip" +
-            "V1A2BKkwf2mAOaphGsZipstzPdKDjt9jgcgkTb7RdbJpHHIqHOMij9TkPbsZdhqQHejDWv6Y" +
-            "j2qgAY8mFX/SFe7hKZaCGH2Sc1n2GDhmF4TDTn5jXFVhF99Zqkm1ivjkA8qwJ6ngYb3gEUOA" +
-            "CE0wMUCQBDLgf0JgWEjgnz4gAwlqNUsiA7xQlKlHDAKAYLvWBGwYEaXAAVQzJEfkNBNBYDgD" +
-            "eyZhlEAgjISAA2Uzbz/lJVzERIhQb2D+1IhE+krJMFyUKk8DeB9I4SlVpRWpy3H6QRU516hM" +
-            "cWS92DoZ22pehUmO9Bcx4QXzRALyBCbgQEA/NgQk4Jf10R/A80RNVgIMpFY6tyf+UQFLobtp" +
-            "dGSMdRnMdSAVQBS6gjj4BGcNqBrbqEuwUb7OUlqH5huJ1g/FAR3tWy43S7Pk0r6CRo/bYj4G" +
-            "AAXC8LPoog6NsFra8Wj5WE4qSBdW0XZ7wSnl9z+bAXSnW7UPx7tvYk6WQTg/wR6pkFSUMDGu" +
-            "MgeIoFZ0wAvMyLyvRA7DlgrkwBEhlCRIAAgXcAD2eZ8eAwTEsBFBeYYPEhExSTWJewF+G6wZ" +
-            "wW1JIG4ScUT+Z0gGkdukgPBgv3et9jZvCEIlDuAAlEsCX3ImqeATpToAetQT98EmfZIACnO6" +
-            "z3AoPeBUGAAV+sJ8L0qiVXE3XlCAcgEKNzA5NJAMimFxc9BIq0IIb8IFvQATm/BravUXMPEm" +
-            "4ECEacBETfYmvuNIA4AEA9AfJ0EJk2g5ncZHPugAvODHugJlGftKjQQsj1W+5EsbmlUuSge/" +
-            "x2EAglZ15FIu7GgchgYu9jguXbdat7wt39Ed6BNb7XMu50Ie6WJxV2HMVzE/Neg3+tYVlDAH" +
-            "M8BbxlVVmPOkw5NXMGAVPbHGqwaMx6ZkA/Axl+FKaEYOsBJTFobOgBAIe4s0/5n+RHvbpDIg" +
-            "M4sQBAy6JDt5uCWTkxEkUW/4Q6j3hjvDoLwgAzBcJSFkYWDCrT7QBxKTDGdTuYQADoRgAkZl" +
-            "AuDwE67iBfG0MKLrg3SkZAfjoiW6FQEXr1zBA690MDhmFX0CYiIHV3gzZMnwVv1RtqliOszV";
+            "mko88OgnxOfKNlMqBGArfmAzf4KZyMv73KcsgqIqBEktXpHJjiyqiIAU3AcZfwAB0IIHXEAX" +
+            "+mNI3WCLxiqf7aA2jRYxFisD5cyAnTaZE/WUqJkFmUUfGJVR+1EeiZOBoyU4ZkMgicdrIYC1" +
+            "rIdbvoADUgE76QRucCKYGJkmEOBIOTPJMGe5eoIBUpunf2JN8KoJoaIJiWAa7CCeOMEOugAm" +
+            "Q2EcisQOEjqCHGQgJDoLCGIE+mcn+2P+h7BNKRMC9iQgA6rtQNEVCtAAaHaEZJLSDc94vaCg" +
+            "ANr4pJnEiPojgPzgIKaBBqRm3gREczBisNQSeY2XXrQIeWnMm6Tp7vRmHwZHJlbxmBwzJzhg" +
+            "FJpAt6a0ypyqxxpzFL5g5u4IPaWRB9rnPJaCkcqDA+YmrKWRAVTODkIBYt/gJ+RXAkoWAssi" +
+            "KXKAFKbpPW6gUjTHJDk8FFRnYOxAMA6DzdQgCXaTMjBjOdkRGXYnADLDmQtNBC2jajG4sZPz" +
+            "BPfsMxw4l0SDHIbja2NJmz+BHJqDs29ielRhwZdDOZzjVNEvfC6yCSxgmt4AXaApULpDCDwC" +
+            "yAAIr3R5HyT+4KJ0IRTwNRMLwA8ACiGwYIEgyK7MABX8iVsbIqAdBNsKAA2KDaQlSGdOBg38" +
+            "wUcW7NpOL0XXq2jq6aQBq9da9MHcLb/U8KZi9BIlIiLaKqcysZuewHjZBD0Q1nvvLu7IBbea" +
+            "YBQuHPzYBuY6Af48TuXy8u7yz+PG5wbY4we0d6zorpLArwyYKU7bdK2oVBqtQBoBitq/agkj" +
+            "4geiykrUB128TCkygiQLxJOGWcd3XLJsZ7DzzJkd2+uEhVG3jh6dhVmCJ7KpvIOVQ+yCaZhU" +
+            "wZGnJzpMGCLLKCma2swd9lwmMn10TlNooCc+omRPhSvAiSt2YBoU4nAThBMAMSL+yjhNYiGC" +
+            "xhBoVqAAPCFCMmZJhCRitq0LlPJFBKyiSuYoJeYmB3EKIGrbSPpjxPJDXsgPGmYS7a0AnmQH" +
+            "VsAHKCKmtuQiziRgOIJMPAICdQE8WKJffJpRDs59rMBiKZOR6oQVmyBxgoDXJfmZMMcNWHgw" +
+            "70cqGiUrzL4rIscOJCCFzyd7rSAi2IUrjv0POA24huILlCIUjKsQgkACygK9xoFv80jlsMI8" +
+            "EEaqpmLD1szG+/qTAFuV8Aw4J9ixkfywK8PrsE6aqe5qw85Yjic4ogchh4kHq7MNLq0I/rJ7" +
+            "lvQmXg4nvMP+zsIrOLP+iiBQssNv3WeLktEOOEECfsL+CY6gTULk5zjBH2jgVEilNY8gFrqA" +
+            "zrMguVyEBuTQZAARC5xgAzLAZKxbD0tG+l1KoSRGQj8GKU8vpb0y5wEMsIBESgy0IdijiQJo" +
+            "HFZgIkziJDyCE9AEIG7ckCBwIANSBW/YYcDADis3Fizss9JJiJAgGMu8EdLoTaE3QT6WKdOk" +
+            "0chGCDAKoSXADcQmZdzYeaPqixU7LgQwYGVFIytdQqzc4EGrTJSYbn5IICIgSJEmQoAG4SFB" +
+            "SJl9dniEfLMvR6cgL7owaKKroYB9GHXZQSBEggSXDDgx2HdRZpJoY+7ejRZNTa2+D2rV8lsL" +
+            "07IGy5AtW8w48WLFjpFBfvz+WJ++xo0lI9Mn+dOhQ4olJ17zSTOy0qhNn/7zqTXrP3/efPmz" +
+            "ps2XL1H+fDF6u0ynL6qidEJw2w0rq2UsAC0jxCGCmLrcCJG5g5UAATt4WGG144ZMGjwWEjni" +
+            "hNQOIuNuJBiwgQcRM37sdIGyY0cCLAMkQEF05EaWDehBkcUO42QBxThm4AFFARscgQoYWGAB" +
+            "xgZ+YAGFJRtgsYEZ/0UIRYNHaOgHFFMc4ccR04yzAw1O1GcfDTDywAN4NMjhBIww7iDBjDfA" +
+            "SBANbtmhi4y66BKRRFYI8YMQUP3wBkmNRBEEck08+VwZQcDEkRCjlLFcEVa4sY8APOSwTyGd" +
+            "MHD+AwKF/ODCQ27woEsjRUzn0hu67GBFE3HaYUVKLrgghAUCWaBREDg1YYWMQmgSSnYmIUXL" +
+            "dDzAScMOblgRph3eBcEKD9EkoZeo0TzwQDS1uCJYYavW4lgAkCGWmGqOYZbYZbYuw5lisG5m" +
+            "GmjLtIbaJ3+o1hlta5z2SRtr/BFFKm2kchsEf7QR3Gy63aZbIULIxlwQo7zRiQVCsPWDmBap" +
+            "tU8jnErnhgR+uiEQXXZkV1YCROhyAxFYwHvEETtaQt8OUEBxRChdgDGNHRtA0aKGROgHBsED" +
+            "YDHNAIgUUAAiAxBhiYERHnFhiA1iAXIWlliCn4UYoieyPwU42AWQEuz+kYCPCdycgFs7cCLB" +
+            "pQnYd+OKK3AiIw9O9MiDQHa4RBe5KQXBFkwYvfGUR00898YbV3Kg0UZCCCDoRTkI0MhHSQrB" +
+            "CikuNPHFG27kEBUPbgRRRiH76LKPG5wkYHYZNwlqR8Qj2VnGF1jpQksOToQyUhBdudEEn0AJ" +
+            "wUN2FrnRkBtssWIHpTuIKjpfpPc1mGB+yZprYqDR6moADWjW2Kq6LuNqY61bZlqwpyHDjLLG" +
+            "Kivs8K7VpIpsUXzyxUd/HG8VB7shJwRdHgXVUxAuCdEJKy88MaWQFjXUtBA3MHAWDwmQIlR6" +
+            "+4RCBA3mHbHBzUcMmICBDPBwohM8ZMhDF1j+IMJ5RgCFLpgBDP44ghlikSEGRqgABdPYgeTH" +
+            "L0uESEMh2wCFjqAxj6GCCOgRYH2ckAAn3ChpctgDjmigwhj5CEYtkkDOkqaQlgQhTJoil0U0" +
+            "YgGnlAEBb+AATLxmt5FsBCZfsEhIytCIzGXKKlgJgtcQ8IMfWCFPdijCRhwiEU6EgkmJowsP" +
+            "jsCDqPCPFYfbm1V4MI2xBMUNAqhSEIyEkaWVSwB2IIUASFKW4+TADnaghXJ4MLpa7IUvtXiA" +
+            "GqLhCsIIpjGqm8ysdveY0CzDMJgRTSZh9ZjUSKZYw9NMaUQ5SmItSze5yRa2UjEKDkRheWx5" +
+            "G5Y+0onPFcE3Nxz+RZjmEgRSNE0igNRUVgSAABfwQAVz20HTXrCDnRDsCAzwmDL9ASASeswO" +
+            "CUiHMufTTCiYYRw0yEIWpvGeAMZiBH6wxAA+BIURiYyC4/lXxzQoP0vEjIP/GkcB9KlPASZg" +
+            "HDejQUBx9LMc9Y2gEpCDjHIkh4HwQHz7+AG5OkEXRdntIiSxSiGy9gaYaEQjQOwESCBnleZY" +
+            "5W3T4xsPflCI3bAiCJ1wQdN6UoaFTAc8+3hOnGjBiiMMoIxNsIAdBDCoUJQxCDfAFHEaYRzp" +
+            "5AmNcaLb5CyQA+nc5AWZIgX8LLApvYyhdIxkpCseoKoGtMpVmKxk7ZDRus4oZlfIcNX+7RaD" +
+            "GE1mxjQkKI0+XNOazvT1NMxgRrI+kdfVVIsAsVEFsWbTBtscbnkf3Q0CmsgBi+zDN9O7yHTs" +
+            "QC47OCEH3yPmPny5j324QC1CyAENumCHHxBILSBcaBe6wAMotIMIdshCLGiwLyhwghQQXG0W" +
+            "CkAgLByhC/8Zh09FZiD53fMI+vxXwUIUoophwYL/chB0Y4YejXXhnwmY2UB5MA6qzIhFQGIR" +
+            "/3grEP6R4qGAjBMrWNFDi7Clbk/6YUqK4LUggoQkk5PsSLo0qLLU7QtB8AqWEGWBJmRlH1tD" +
+            "ACD3cQPaZmmzLtlBF7hqB3i5AUvRcXAJhbBRLdxJwmW0HBH+XmBZtfygCVghKiuAJAALwJEU" +
+            "OZCIG0IFVlf0RVWne+QyAjDXy0wGMsaiTAB2xZgjV1I0oZEdMkjTmTVQuTVtIKUoBesa1rSB" +
+            "WLC5TSrIoZuRSAs5XwjqPmCSqT0hxSpWqKpFQnGcIAjgBd5xgwroJlS67UNNN9iOjP6cTjX5" +
+            "AwpaTZmKGmYH5ZYXgBErkIrGsYECpDNmWMC0dMcxHiL4ARUqkl92Q2SwEBUAFRw8EaiP64cu" +
+            "jMPV4BzHOPyAI6rU52cJ4EFDB8JbIFElFGrSBSnU4hKiNiEIT5rSD8sFkm51Aib/jfChrLAP" +
+            "Lb6kCFOSzkGC8AUIxM0KtJCJGzr+UQZWhEI6oQC2dIKQP5nkjCKF0JwAFtXMTljBl7ToRBTY" +
+            "dVkrBA0teIzO4cRtgf9xVgBDqdxNmpa3UB1ykY38S5BXNZlahOYQTa5ksiT55GVgXJOU1AzG" +
+            "/+rX1pCANaVhDWlMSQDJKLZ4sLGNK3PT0uZxQDa9sVshyjDvMhSBXHbD3ropzIAZ8JxuoU3O" +
+            "DUgxvayQQqjZ2Qd56SsB2g6pAJawwzS+ObgCGI0I/uDEDaAgQBqMZ9aZni51RRbPIxBhQW8n" +
+            "O6kLlk4NPhCEsvY0P2WtIiLc7LsrEqgcCvoztxDEoUiTQNKG/V4hRSdTCBiX1KgNlTAdu1tc" +
+            "I/eVRsL+eSyltFtM/TBKYGyFINAgFMQByUNUqx2YLIoBcfIDD/Zmh1CQIlOfKhfSdPEcBEyE" +
+            "SVhEgFCapqXbW2RGxiEv3abHCu/YOL52AWup/BKYVAGZdpShpJF9J5mNQ9k0+ugVCdhqrGRN" +
+            "kpSj1DIBUEOO9cMGNq0hRxRU0YYwH043TXDlFxrhJJQSR5dcdRFjclFYkSQy4STspjdhYx2Q" +
+            "0xCQAyR0IQGhYAdSlz7vQh8CgB4EAUL8kwX9sQJZgAVBw0EuQwQaw2luxy8QlE+cFl3KJV3S" +
+            "pSEbIDAzaFwkyE9kR1wEsgMmpHgrxCI7sl4zMiMtkl5L0xChUCQPYWPkoin+JBE1UgMTx+Zz" +
+            "I3URUXM4zFEl0UNtQFElbfJhMqELpdccoLVwOYYolcI3uVY3TUAKc5GBK8Am2NM0gMMQg/Jd" +
+            "n+N70dEtWPE571IpEREebjApTSUv8HIudkAqpeMKPlZ91PdIQtY6ulIas+JJslMrlxg8mqEP" +
+            "oPEJlThKK0c8o1Qtw+Nl8LdY0PIHqcBf3fYRr1QGSzIKt5FZTdAJxvFsSvRDFJgSMjETzUE3" +
+            "MUUUZHFuQuBLN/AQEnAELaEizXcetQcgPSIOBWAeB0ID42BPngZ37cRpp2YwFxJAEPR2RDAf" +
+            "HdRdMdMwGCIyGWJccsdB+uRq43gpOsIziucWAsH+I7WWUNmxNArBKYF0FlYgAKxAF6XVQ5Pz" +
+            "hB6lc0ZEEmXAAcgGEksiG+eChTb2A57Tf8whN2HxOVyzDw8hAAmwMHbzZ5yVJ3pCYXTIAUKh" +
+            "C1NBHxbxE2I4Em4QYgingLpQVR8WFWLoBsB2HI0nJhZAOnvRSH5RKmZ1Vg1gVqHxO03WO5Ix" +
+            "fiTwO6rRiX9FZYqRfr7iGSW3Gq3RLKQIG6qAcrTxZWGWSrthf7dxS+S2NRfRGxYhUl1xWVch" +
+            "KFljHFWiHLTALQDpkXv4KTkgYZjSS3h2kwWQAJZzBDQgH1lABO5xBLlGMIz5dpyGHv9UAOgB" +
+            "UCIzDh/idtBFT0dgQQ/+VDDXNQUg4o2ieQT+4Ad+8D45A1Azk1A9Ung3cCP8eDkC5SM9Uj45" +
+            "oAsCeRZDJRFEJXRQYQE/IDVSAzhYUgaawHlANBIcAD35dUU/cDhwsyRL8hDYwwAjKQA5AHv7" +
+            "4AScMB0IsXxYtCiy9wMUJRN7Ux+tRQrlNW4pMVRzlACcMG6Bo1meM5AC4DMucTmw9wO6ACdN" +
+            "IH0+RhiOtBjYh2TpV0p/NUmgMViaYZWl4X1OKUrC8zskpxvV0lhfUIrrZy01dxtvYH9lMApH" +
+            "MRLR0y3LliRQIR0aETdCkEQ54GZB8ANrppPMYT6DsnTRkRUuMBXjIIb1IoY0gAWcgE3juCL+" +
+            "bkcghamZ0IUeGraaIKQx+GQwMaOa9GQJ42FBmtkwn3ldoxYi9rRPs9UFGvY+81gjhIc04CEQ" +
+            "ilcQRzNsN8CbQiIAOxmgEQERYYIW1oMRdiMuVnKc5KKF9kUSKjFaViAbxUQpFHgbDtafR7AD" +
+            "aIEAQ6IWIwJayjFsxzd7+7AD08B0dZGHWOQpeyCp2IYVrAAV7XZv4ARMcpIkyuEGLrAP0leU" +
+            "EocJt6M6t5IYn8AZbZV+UtlWfsUaflV+nUECh9BXnxCKoghmL1d/rwFmYDYbwXE3zmJEt8Et" +
+            "3DY900kSAPobnbAczIFRm9WQYQJE2cMc5qYouaYJWsAACaA3u0f+Yc3UaOB0I/t0OU/6LzsQ" +
+            "M7J2BD7wT5M5Dh80axSCClZqXJ7ZMKVmavJzIg3yITEDan53MzI0NLyVeAThBDsyFD54NPyY" +
+            "P5UCPnnDFrw5PQU5JVZBbg1ZBj0gUl9jFQ/5HHljKIWAAJwDNla0N97RUc0hJvLRFHjEACzW" +
+            "BGribuQRR3+mRzfgDztQY3rGEFNSJDfkBJbAAFeRA09QNxpxk8rxXTwwSOfWCNkmHV1BgT9w" +
+            "KqQDZKqCCY4kZLLyfZyoGSQwfm4llcbSV8ywoFtJPCjHVyTQLNjySh2qPNhCLFHQBogVBbKh" +
+            "ijunfxoxi+UikxbQCYXQCBORf+eiC1X+chP5Z2NC4DVqE6PKIQRgYgdy0ydhwoMugS+e0x1H" +
+            "A0IaBk4EwiIm+F2RmgAF0AXTcCCz9lx+QKUNopkgtCD/gmoWdCL/ojEWZGmgJmswMjNdIAcJ" +
+            "0EKBN5sDIQctwFsK9TMF0WFFMoEBmikA6TTURgtTQhfdkhIXIVIwcSVQwQHc0nkqawHHUQYQ" +
+            "UKPT0xClBzdNMyROQHy/SAuDoyfh4wSw5wTT2EtEEMA9sTYvdY1lpBzdwSTMQReIEsA29gJy" +
+            "IlFcSIgK6EvntmOoUiqMdDqMRFezE0m+EmVXWaynQaGlgbd9tQx5NcMoN1ifsH7K8mVdVi1h" +
+            "CRz190pAjC3+X+A1swEBJFEIr9gJZ8YkzbYPFvAk0+E208Ek0zNv3MIT4gIRbAKgPUEmdSMA" +
+            "NMCSDLAieAQeK/Io5UUDBQCeKRKSmAlQJjiOJsiC+/S7EFRqLPNpJiJdb5dP+7S80AVQfmCx" +
+            "gFdQutYdPeJrBnGPvGVUnMKjpEBfmqMkTZMST+MGWtC+RQQVT3JsIPERXMMktnhgfPIcUBEU" +
+            "zWEHdxMFFtAScXID2mNnSwOgiQk5/pkkuvAW2OEHUjEVPHA+EtAS/TN71GYFs2qyflKM8FJ6" +
+            "Qic52GMktEe+S1dagoFIb3tWszNkqgFXorQGrWO3woN+fKUZ6ycsTslXewt/BBD+BfMHrYUQ" +
+            "lov1Bos1G8QiRLPxBSy7G9CGJsq8c9NBHGyBFj/0R6MQbx/2BVSUUzXVFNABZ3RmOV1ACn/G" +
+            "A+9lpzuwB0kVqeeVVKu1gzvYXR9kCbOmXMH7XCQ4HhqTxyC0vFSKCq6GauNgMwAFJDaTXopM" +
+            "m/fYAkhDCibkyEMCSLCHcPM1q9tRWtMREXtDF5oQFFqSEpXFHAigyj2xNW8whoB0OHVCLi6h" +
+            "C9PJLTn5AgF6Eb0shgORh1MRCljhB+NAX89nB8eWNGJyHpWjFjXmexaNPToyKZ7zROpqETdB" +
+            "CuGWAw8BJ/MlAKeyKq5gGHKFGQ2ACRi3GG3VcZGhK5L+sbefEFipcUrCcorI8H6i6MPIQA6L" +
+            "FZZh1ljvjC0QkNBfJi2oLb+38QV14kqpwBaHY6Pkxi3lQtsuMRJJcllJlFNbjMXYibMTIVR5" +
+            "Fh4Bh3Dl458SAE681iK05mqccB6vBkJn5wMMggrhSF3hld3f9a/75K+OZo2chgo5s1p7IGs3" +
+            "o0JIw2u9xqZLMyNucTQK0RCGbRw7YacQodRBwFVpg77TAVNW0GAg0b83NCUSUVIOfsWL4gLU" +
+            "aT0ysUdbE5CApGEf1gTN9zlDwnSk8DNcixWc8wJOmyQ+isUFeBPVcRVJJZfZBhWAtCR5koRc" +
+            "dVoMpzlu0ACoclZzxRiuYlb+kbE7l9GgLszZK/dlST5mraEKitUsppRX6ew7YMYaz/J+wOFl" +
+            "gwsBZ+ksGno8v/FKUFEIhVAEthijfDKdXyAdTVAIHJA33RIVz1OjbmNnoVsGp8UkFuACVmCR" +
+            "YwJIQ6IQQ1E+QxEKuaZVgQdOBUUg/wRqXeDWK1IAPkBpsnYg+JIz4UUglxlrhUymky7TmK4i" +
+            "OsNb3tvIjbxeAcU/4TFUvOk5rT5vMzkoM0kLBy7FJNVD7FuLnWcVKQFEvic1epOoeJM5j5ej" +
+            "FsAWYSI5PxDAFrEjrVUGOXCMP4A+EtBgYUOBapOY9MoJEL03PcQK/AMRl7Mce5MpzAFI2KN4" +
+            "Zrv+N3oDOUMFtLeHKtsM5JgxV0wZZZOElcrKV69h2lX+fvXH7wyaLGRZLbDBxMCxNUY8z7px" +
+            "c6wBAUxMAKmwUUaRCp73NvNVLpBjAS2FPSQGJpVLEqXVUoPyG57SLRtvWQIJe/LiHVkhE3Lg" +
+            "EDwyI+mWI0JzKWZHx+XtB3ug3QTbBfukmoUMUDdTALcJXpvOjWTn1i2kULPJIkM4m4fXyKUq" +
+            "IwrBm0MCR3top9PT7lxVWlCRvsYxHQ6dJIlaN25WJUqkJRbAf5wlNSgrE3RzNzExKebBABdB" +
+            "Ft7RqX6gtMRGbr50fETAdNSW8YhCA9KBHTsghrHM5kiBAGRxpGJSPsv+0aLTMxTqI2zwkiqC" +
+            "IeSH8dgImknkLBmc4UnL2jsMSor/rqFeFn/qfCyfTX9/wOW40Tw7V/sesc8eARvkMC29TxKq" +
+            "kAqsfEt2shsBKJOsQByQ4yQXjACqwCcfRRejQPYeyVV2aqdYP6cMoFDN91A/w7E/82olBEOr" +
+            "NWsFRAQpMmno/1344nbQCyPt3YJ8Vx/oAWr/BCMrACNDQRUDceo/s1AA4WQHDxpOaPC4wYOU" +
+            "G1YqWAlgsM+NG4kC3Fix4qaMEI5WZggJQpFjEAQI3rwJoqkJApIWhDTZJ6TTlyBW9sXMGNNN" +
+            "jiBBhLgh9WMfKxqhOLK6YWcip6CsCNp5GYT+FCshdsbxIFn1xr4mQXTpEmBn2g47TdwISGrl" +
+            "jRCwQfYldON1oBshOUH+tOiGhoQbrHQhtYOpVq1lgzEtKzwYMWLCixEHQIYswCFkJCQjY/Yp" +
+            "suZPnTv/8ZzqT6ovf0xHidLms+c1qjl/Av2pjSrQf768+RKFdJlRX3wXKmQaAu1PUb4UKv2l" +
+            "jCbkZawIQfDFbFlVFlwg4PAzbqEmViz4rttDOce1ZWrGRHCx08WMFl3osuOUBw9dN0iR2nFw" +
+            "x34a4yTQyG+HBIhIoIACxhkngQD7Q7ALBI/oggYJaUiABj8QzK/CHcYRMD8AnUhovhtGvEGO" +
+            "g26QQA4n5EgoRQn+eHjRPh7s+EoAC1hhhSI7bvLrBzcs2McmFSayYkchhmpCkyAsQKCJTuri" +
+            "oIkmOECgjH18OsuCMt7oRIAc46PLSh72yUGCHUjpyQ2FfuDBDwn2QUArXapKwCg1eXjpjX3s" +
+            "EIDOMdFywo4fEMjIDi33jIuVgVyyaSIh1hJpH1IMdeOGQJWaSJcGBlNjsE2RYawxUAuL7LFS" +
+            "QdUsMlWR6WwNzzwDrQ3hSoNNlc5kNY0z1ViVVbXUfIviD+OAfaMM31Ipoowy/pC1tNGU+wKC" +
+            "L6o0diM3ZtqIqze6E2KUbQXohINCeiqDgzKYXEuIjUZ6jqU5u/xJhb8YYEAA+Oywgwf+BvCj" +
+            "4YYJKSSChwoBRvDCPTjckIYCiCBinAsR3GOvCfeQwIcE9jAIwAUnBJFEfxGCcS8YR4TRifnm" +
+            "C0Vf+Fixwt4gdVnIAob20UQIIC0IwsZ9LJhBE4le6q6TldCLaZ9iSarJJpzDysoNTAG8Eq+4" +
+            "biDihpDsmBQkHnb4qz+rN+LTijJ46GIrJwrYwQqf9vkrzq9euoEst+JjRcuc6dKClBl3wnoi" +
+            "iWj80WnCBiMcmQYaeGyZURFDRp/FFV81VVVJ4IyZ2GAzLfNgP/sDgk/WMI0AZFyF7VZVvsDc" +
+            "t9OiwM23coOLQllmbYsCNmi/UOXcR1GS6I1ChMhBiC+KmKj+CWVrMja9IMwSGyRlnZfZJl2C" +
+            "pJGVHHgQYAZ5WSFFjvr0lXC+gQjSkAgajjhiHFQWTgBBHw5E5cH0IWy4iwj3EsjkgjyMsEIe" +
+            "nPjPyZyQsYIIxEQTCpnJGKALCSyEXgxhQKYEIJGbuYwu0/uRd1ziE5eYp0lRiZNLfiKERiDA" +
+            "ArrIiPXc0IQ3OE1mnKABKR4lqYnsoAAyRIm+ZNa+FVpBbwLoigoWYocCsQwopOjTWuxAiybo" +
+            "IgFj0gq+LGCWiXgFIUL4QcouMhSKFO0rOIJPqBjjmGV8QnHLcNypHscMVkVmDaoqo+Q+QQ7Z" +
+            "2I5WuMJcrlbDqz/QhgDCcpZpeuP+ujcMyzzBMddxgrUlCMgqSrgpghVYEQSamMVYRWDJlsrA" +
+            "EuO5RUoyWRJ0ztUTHy3vR0eSmR1a8BAahQUsWFPIQbaWoXFIyHw7aBgRjlAAHxyBYQVon4DG" +
+            "gbb2IahCxqRBFxJwMQ79C0AOwh+KJNACCfAFIQmR2H52YLIE0kgC0yPFVtwAFraNM4UUqeJE" +
+            "ZtCoHwFpSW5ZEpPU5ROTOGcfzuFTTDYiAHvRwA49EYIA6OMGTuzADQigxfVYpgsidOEHrFiB" +
+            "BPq0kRmFpEACKBJ9rtQJGmltHMFTk6GCYK26WcBLMYmbBC4iUC8xKkf7eALg0MIAxGDiMI6B" +
+            "zGYaR5n+VfV0MTztTORekzlmBas2nZtd5jgHmiggBzS+4cAX/siBRuTmC6Mow7A4sqzYIYA0" +
+            "bThOVv+AgB+wsAjAs4Jv9GS0YlUpCIUoww+0dC0OuIUjNNtIJxphE+9YJCS60JFFdJGDcdLI" +
+            "DiBiwIgOUpCICSRBGHIYgg6kPg4hyLKXHcfBkkmhiF1sQv+pEGjDJwc5IOQgLPKXQTwkMhro" +
+            "4iC6QMi9XmlYv+wpnyfcxwStINe6BAk6d1HWSTBSEyltyWZXW0hNvEQLp+liiggIJ0XuxUJJ" +
+            "BY8HlkhATGZQ2zK4lgFF2o8uauIGBtACATPImiacMA4ZNkE7atlHvTgyn4n+sIIB8QnSnvpk" +
+            "24twb0cpPFxhxsi4xfS0VGeEHAn08Qk2skqOfyDHGuioVNOoggATVgU5/vBHYX2mNBD4A1yd" +
+            "1dTSGEdZ0VIOb77wknIZK6oQTsWJXWcFBBTirCXxVhN+F4Ri/Wgjb3VLJzbyHIqUoSukZA9H" +
+            "zjIRfL3nBtIFy4jswACE7KCgCSsI2WpZoMvmZ5gcQkXDMKTZiV3sYM30wQ5QxNh++QchINqL" +
+            "v/4jIYGcaAf3LYh8nHbfJ4RlIgzxywykOzMLOm2CMIHO8sRGrpK4xUqArRKh6hsKqkjHDjnY" +
+            "037osicePMcON8BZpUjhXKnwQNAbEqltjxRdCzD+QM2htoi2fhYEJ1QtlS7Yxw/c8mePLEQI" +
+            "9r2BC35gr5cCSVTLuGktItNgVWmGBDyFHE83I7k2ko4AtzqqUU2jYW1fNZAlvk2NO5eKbbnO" +
+            "J8h5A0tM8oUV5uZ0qjMNTbJahJWcxMhtxaTYzqW2kMTpIj3phAlHYjPz0MWkO3rIV76Cr7BM" +
+            "ZU9IDKdi/ZUfbEqAQw7a0JfdlwCLYZZhW97PHjqkzGpKiLRXyRiL8AciEwHwRDD6j30ApAsG" +
+            "tHbhOJrUWVoJn78ciZ8UYQWPdOEztUHHr9eygvHkiZeVsGJHEjnLzgT6ZIG2lsbwmYgEVrDC" +
+            "YoXF6Qk4Ak/gw4AZdIf+FDSQiIHsIMmk1O08GZwURhgQMLEhINc4mcH03sKDoMMMiUmnBbEx" +
+            "QsbHHUIzkGu25BCvKtJZpo1DnaNpegXW3KhGWuA+DrNcVwRhbcs0uzEWl0jouo2UAZPOO00Z" +
+            "nGouBBQBOKonj5GbcFaAWoDGW40JQI/MqNzb3q41UcqecKSCG9irlaS475uvORC+6E9Bxhwm" +
+            "EXzgICKgYn4N80F/UBGx/4xDmRPKz5wJ0oXw9+uABuGBD0xWza2ZjAihsEM1R90vwuZz4WDp" +
+            "uwt2hJZRR32CuaWIlOgKeeoJAQgJuhAC7riIcfK17iCsSlGzqPk0FeABIjAomNCFUNAIKwj+" +
+            "FElBNZDYh1AANarpAokwCEMpOKoIAqc4KAEQEIyyAsCiC59gGQu4nnoBCrggrBkQAKHwubNg" +
+            "BcfQh8XrKc6InDZSlcxwsM9ZDc3gsE+4NgpThVQQjU8Iq3hLFtH4A3HxjdPBjSiAgDjplkLg" +
+            "gH3AtePYoNDrCdwYjZMwjtZpBHVhid5gCZTYKixyL3JBD5/gCJsZOE2wPRHKLf0yPp5boCm7" +
+            "gfqQAAaopgBqEYNQrepDhfgRkD0wkHE4gvghPwmppTnbg/bxrNLiJgmRAAACEWsiGQSCM/0Z" +
+            "hxFZEdhCiBa4gQhSuKDjJ6UAC2KbCIvAqHEKOreQiDlRi7gyj57+gJP0mKAjyYHpAR4jeYv4" +
+            "MKmDGKeDUEGkoIsVIAIGWJtweonDGpMKlIBJmgi+qwkGCAXmkoAEmJP4yhp/4wofCoXpSS1W" +
+            "4MEcQSEgCbqbcAMedBoy+qllK0ImNDDSMUIjZAZX2QxnoSNVKIRGmo3ME41yMapCKJYviLGS" +
+            "6KMU843b2Ko3aISzaIIUC4JGMBZgCQ7bwI1i4YB0m71tKZYEXBeY0LU4HKmagA6cqQucwUmQ" +
+            "gIlNswi/iI8bUAEvqZ4RqQ+SQa2EkAMzSQACeiwfiJg92IP0KYBd8gGH4Tip/I8ukEqNKUW+" +
+            "wKaCeBGXO4gXEZH5yJcQKRsqS8SEoJH++mCy+/ILXci7GSEFtkGh7dIFLfiR6cmIkDhARHOv" +
+            "YrQZp6MLmNCZhNgHkiSvHBGYTvOJxMKXHTgCUjCppJhBpAiSYeKBs0gIGbIZciQKGtARCVg7" +
+            "97oJtdGvI6GBadgRp+GBHKibm7AItgAstqERHkGjQ1gGnuIpZquMw2McVUkjzJgjWCkdZNCj" +
+            "PGIW0QikIggC44gd1fMNrDoJtTKJ4VCOdZMOdSmWTVrDcNsS44gq4ygC10GOetskZclDckGe" +
+            "tSDJgRsJ2+MInIknmwmS2lI4fOGTxLqvTwuncLomkEmIuJGQ/eifZUIQBsksTKSsZ5I+bZqQ" +
+            "BGi5jCkRFln+vwIi0MSqJu/6NNNMGdI8rG+qD7h0OqzZE4kYNXv0mxagiD6ZHmAMEmBsmcO0" +
+            "u6ELwbs0skqZHtgyQJhJi30wGbahASjQRregD01wos7cBx64irJiizGZAQp5MjfYAYlqFPhY" +
+            "kq+4iJqDCqehEZzRgn1QgSfATRnElwXsC0HbBwIrzmk7MANTo1cpHXIggCeUDT0aDaJShULK" +
+            "SHjbjejMnSrJnHHJjT9QFtNLMZBAz9soBOMQMqvKDYqEAJUcBRbaJOwwj3UBCZc4iZGKk55w" +
+            "iSawgCkaCdQMiRwoVS9xurn8C6w5ynGyjxEhLYmpEEuJGBq4yoP5xOfjysqarC7+u8pmIrOB" +
+            "ybJjPRn2Y8tPc4L7Mhk7IL5RO6xZJAX4S4qFe7K1G6xyspd9nJ5PcxrcZAsgiRo4QSeNcA6X" +
+            "mIF90QWWyIEqTaYbEIKz4oF4xCUnoIUjgY+YQAuoIAU/SACKsAL7+CfX2gEXIIUumIYnGwrr" +
+            "sQKf+QtN4JeLOCy61ASbyJEjkUuk4AHvsZdE7K9xmqACowx9GMLKSCPESxUi9AxkiEI6/RxW" +
+            "WU4QO42NrJ0+ChYwxKotqVmn+oO1eIPOW8NyuZ0vaBYOCDHU+I3TGYXm4LEn8R3jOZpNGlV6" +
+            "shm12aDnQCUreBIgwQjbw4j2ULixCyf4ENBQMM01Iwj+fwGQf/G+HXAQy5qQzPpVDokYXqKB" +
+            "PfCBq9yQZaKQ/nGmFomb+0qsFjm7EdEbAaUBWmQAeakUGtkKDBq1uxy1HjVMtmAbVmgiIdCE" +
+            "tQuounAvLZgiMNWSZrQCF+iCMfkbPqkKq0ORUCg7rxgSN3CCaYgg8hqRoNOLJwsFhpmefVmg" +
+            "54AZlumP73I1f9LHLMGSHTFYpfg0PlknhrjLE5LBxTkVyiiw4bSMTyjOgoTZWAmq0XlC2wgk" +
+            "43jUYLmqrLJI7miCUaBCDkgkqDqxZDGy3FhJDpCWYQHDQ72Nk0iWN0iWKVGWpqKW5SFVESq6" +
+            "0sWII8mvLapPmokJmcAoIGH+CJj5Cn25LxLhi7RUkREpuQMdh2E9mOlLs/5o2x1Is8wqJstK" +
+            "nwahEPXLvr0YiM9Ey6R419cqkUREiKkgBYeo169ICsCJiK+oUUlpJaH8VqX4v3sKQBDkCobQ" +
+            "Se4hBYyYjz05iLVDAAveh/NhgLoA0z0hAifIu4SYnov1l4fApTGxgyt+DqcQJwAhLLhVqT3B" +
+            "v56QJCAZEQ1c4wQAWVZ1A0CkOZxbiDZFo1GJDH1Qg2hQ5EUegyRIAkV+5GhI5Gh45FpYZEW2" +
+            "ZEmuBTVwhUt+gFro5E/uZEn+ZEmOBldQA1F+ABJYSbhiyDeIKuCwSEVS2o2sWWERlzdcyf+t" +
+            "Ein+ccnWCy7WkzSX2CCp5SARws8j4cNOCAlyDZIboZEWGDv4kGasGTVGRMqOLa3+yNWrTABU" +
+            "sCEUriUJiZCMu5hiWh9U8IM9uJBJDGEK+R99+Z+U0eG2BJF8oY/Ugo9++YuxoxfA4tKFclXn" +
+            "DVe/eIK/GIoY9Mvx8rn4UBe2sBFduIoF/B+LqOI9WQFScAGP+CYLIAIsGAeoOJI0FYBxeD9W" +
+            "4IQjcIJ8xDotQIqIkAB/UEdJehHPHacrcbrbtQM1s5cXGN6H3YnVDTp6iUc3GBXIOKNDSAIA" +
+            "cORHjuRGNmVKvuRFHgxFfoBF7pRTVmQ1yGpU3mRXqAVR3uTBeIBOqYX+T2BD3OBC8kWNy8s8" +
+            "Zxkx3zjPL1jJLdmWrqinJrFr9gxgI1Pm0lseu+pDZubDuniJjrC9m7gJmangAAWjwr3ma0IR" +
+            "gji5y0IFCdFbbaoQDTHp+IkYXVqfq6xKXlrQXG1KCWkBvYmPmmbEf07Ttf1MBmjWSVGBBaKB" +
+            "ugGLswDoWYQP+5DBvSQvnQionWEAqiCyGOWeokELFGrSrbiBcVhpkMiBgxCCWutMFxyRGWCb" +
+            "b3KaDTiCiIg/vvCOaqIIGiACTvBAEFlA5NsH9OpoV3OCCQIKjbKJ1xSioBtYHngBe5wRAQCV" +
+            "/zYjUHFkaFMVnnIVhCwdV7m218BTpYJC28j+lXhDDqsqFtxADroQl84pjTb4QlWIgtMhqjZo" +
+            "A/T98MyBlu/MVCMrCamtN5T4pHQTpeUpiZI4Ek3Qgg8CXee5EpyItU2DoOLrT3uRF3oZkcIt" +
+            "kX7RGMyemIZypoOJnwQ5n2D1JcqKnwuhkJAjnxdgRJpzAppDiLegAXn5mHsxTQEoW4W4ViS6" +
+            "aTAFUgqcGS79Czd4gotdJ5tgGxAEun+2gEbQhKQQqARYAUxBEbo8Oy+pwMW9CbR0g3GAgjE5" +
+            "u22apCa9NB6IGAbIARtCXpoD2RZ4oq+wHx6e7fgY3hyRzPi6AUoDrLb7M5gplZM9o0ZWTs+B" +
+            "FQj7BOK4U5zdSNz+IV+67kK2jjfpKMnzLINGGMm1CIJG+oME5DBhIaoPz9nO+XAION+mosgJ" +
+            "RzeSkJKSUL0yELJkGamAs0Mp0Vri+rGdAYnl6VSS2JZOTezF9gjAIgVp7ueHSETA8gsxNy3T" +
+            "KghnkpDsi5BdRZDtC/hhtT70mcSHGZAr/w+uCRHYGoeF60zyoo9wohGVu+D7cDoUwhp7rPdD" +
+            "LNG82L+bKD4LUIqk64k6R1GQaC62GBG2Qb8cKXQiGoeIuJH5qI9dGrWp7HIhmAF/CUqyYKAj" +
+            "8IO+QIrcnVI+tgNUgAKyoDI+nh6/AFkGIjtSqKW++LTg5XkvYYgpswOd6qkBtw2YxTb+abGw" +
+            "h0QNYSkE9/1T6SQ935AWBCDJLYF7n1AWUOHwZXENDRNxWUH2zMtw1aHrqIKAKIDfUTAX49kI" +
+            "HVN3FiqEEvKdGku3XuZ2BCBsoSm646qL5zD3ulibtZEZAegzuhnb+BhybCU+OVCBJufEiNmB" +
+            "xvKyyDLpXjJpiHmQ0R6QWkoQE3mRF2jWyXa6fvk0hJB4hTBz+BARermU6SnESamPxKqP1poK" +
+            "utTHI8m7ZPyRLXU6rhhemCGLTYuuG4ACItiRk4kL15oKHsgCLCDNqusLJ6IBfjLp23aKDZ5G" +
+            "+uCBI8iCftGlxU2htiOTtgMIHjvk2CEl0I4uVm7cuNDlZp/+LgECIPKwg+ziJxKfkB1CliQJ" +
+            "sk8EAjxQE63WxZAh25Aj0OYTzD/kyMWU+YcAzDaq/kD4AoHnnyhCv/wp9OdPmzZ/okX7xOHN" +
+            "0T+f1nxCmrQqzyhBo/TkwOFLoS9viIot8+VpmUJl3pRpEgRBEwRs45Ypg6BMkCBC8rptgrdT" +
+            "JyGa9jXZK2SfFSFWNOXFK0QwRMSsdOliQFnXvsmUVaggZUeFHR48JEi4cYMGjdM0nOyhsWfc" +
+            "uAQ+fMAeV6AAqiNH9vg4Qhv27SNEhMPm1MWPBOOpbzixw+qGBMpOaDBgYFqXaQasGPC4QWqG" +
+            "LlJPvId/LkCXHevVZ1huQaoFAzf+2M9jdmPBigpdFgSwypz4vBusoObCQ7p054YdK9zwHBHj" +
+            "0DCDEKeRIsAOBYQigB07aEgKRJzc4IYTUPhBynMJjMODfNYl5AQWBYhmCRbj6DKdHDfot88N" +
+            "duC3Aw3S8cgAaDfwwABiCznECg+eUUYDD8gss4ZKMK0RTRLMEJVENJjUUsuTMMGE0x+pgClV" +
+            "Gzi95CVWQu0U1RdfqLITV21odRRTbaRl1VVKkZlUG19w5WdYbbZZRBlRtFnIWD5xUEYRbzxm" +
+            "V12FpcUWW4YJgcBbVgShaRCd6PUYqJ/uk1cnmti3T2YQKQSRHW7YSBl92N3QAmpykHKDHLm6" +
+            "RkMCJpr+6AMqNOzwGm+ojHNEbMHSUEBtfoxDBBE7HMFjbKydaEcCO9zAnR0YllYQKZ7ZkaN3" +
+            "QiLphHUCIIgerNiFZ2C5KgpAii6aXHaDFZQpZsV+RO4DGoY0ECGHG/n2SOE4Ozykwg4VtbAD" +
+            "ETmG2IUuM1ghQWquopJAKBIQUQAn6pKyGmhOJGCHHRuIY4lpEvRKg7pCVuwEEdFBt0Mo2I1r" +
+            "IyusnOezkAidpq0L5JIQZUifMEMlCW1Gg8wfR++EppdSHfXSH0SdKdIn5FitldZbRXWUVkpR" +
+            "+ckbb3xyplRrt03A2FEUwgGibxgq1FhfNcqBoRz4JVcQb+QlV11iIWpXXlb+cJoXqnpZkNen" +
+            "eyH2uCYIDIbYPgVS5gZ46+qS32XuCqkaDRi7tkdrXTw7DirGxgbbEaq3Rhuv4/ixgbPR7gAF" +
+            "aqgQwYNsQgprWo2UmXZDAjd0lmRoz1nHgwo3gEdDep4pRC8D9DrxLg89WvaQG0Kgt08Odsww" +
+            "g14KWWDHagLs9+2MO3DYMoe6dCEB+1hs4IS6EjjBQ0J2sD1sZWFE80KNHSCSMBXwQDf4WxYq" +
+            "AIikgYTHQdVJwBGmASRcDekJ4UHIZ0RTmdJUxA6h6A7KWGGRmKwtaVj6RJuW0aZawLAMVINJ" +
+            "SKLiJaIghSZeI1sqopCUoIztKC6ZUzTU8Ie0vUT+KVShip7IZhRBCaoIYPlCEM8SFkSJJW1u" +
+            "eQxb8NKEN9ylEW/JixAsoBjIPSYIj0MAZFCVOQvs4zH7UKMVIOIQOUokdAhhF3pOcxqMDcsJ" +
+            "sUGNbHywB9fVpnWo4A1sfDAsZDErNsiKTc08lgAadGEHGCMCdaBDL4NsixT4Mw18sOME6OgM" +
+            "Oy1wD3pUlCTTsIJez7meG0CzjxbcaDCtyheRrCAf9OQROhiCGP7ytYcdZAh3pkmAHxLwHV2A" +
+            "Mn8bIBENoGAhhaCGXlDYwA4YQAM/QEFGtRQWZVSXpN1BgV436AINPLMPOzRHPi6z0fA+k88c" +
+            "oAdlKCNF0sYklbN9oQz+zEgFMqLRNKisaSqfUIVAyVKImvDpS0ipCp+scpS1JYUpS4SKl6C4" +
+            "tp8gpShLNFTa7FbQQhRCbmJZVF3giABPvcECmLppXebiF8ipsTCQawKqLOApvaBRU4/LIx33" +
+            "4UGHVOwJepyMc9Ajh87gSg57mI5sXANPGtCmV79x3W188CuuJgw2m3RQATQUO+ChojQJ2INp" +
+            "VhOahpHwVvB0gmdqxICC2MgJXWCfjXhpI5Tp7AYCEFK4LmOFHxDpOeARwGEY8BgEWUYI8iHR" +
+            "DXjkhvOUjgf78FhqxoGFclaGBuMIBQEjRgNLROszN2gQdLJwhO4cAQzj8MxqumCZG/iAYuP+" +
+            "LKdqEgDAzIRCSauxjBz88LuRbbIix1sQdiwzLh7AhBlV4Ro5sPQHK+JwGdd1G5qoEhWtQECI" +
+            "OszJ1jh6tTMpRSlaYQoE7lLRtWElKWERSqDuZqg2wTQKT0lbD2LqFr0M2C91eUtcMGUYTbRx" +
+            "L5zaixuPOqrDBOEhqNrsZNzwBBUGiD7gqQx8rFM6jLWGWCYzLa8WqTrbjANYYmWdaVd3BNP+" +
+            "Tlrj2AMo/SoBUiQgWMg7GQOmE52R5YiBQNpDd9zZMu6sMjXQ08WQt+OcWYXnsAlsgcUEYAUA" +
+            "zYAH/RlV5hzCvr3y4H8LQlA47UCEAUTMQAlL0nDC5YcBzNaEqxP+knBu4AcwZIGECeikjV5T" +
+            "kR1kwR8nhMIAkgcaFFJGDqFAkMA8g7yICU0C2pmnE5wggRUMjzs0sC4Lj/KFaIwBhoWohT4+" +
+            "sYwGjCIVN2TGMkgQlTPB7Q9reAlG2kvrNRSxvWTzaBOaIBUC1PpMQinKWaLwBrqBZdl241sR" +
+            "trgovsAFL2gMDAJ6UGC9wFELEG6CJtxSR75ALi+MWSN/KDODzDzhIQKYwbv1WJnORA9XTpAD" +
+            "alCzg6zSpgu8+c2NaQOs1tXmNQXQXWwksINxcOJZm1QddNLqHRrIQZxwzWzygjwkyxiEgUyS" +
+            "gxVWSU87tGBnlLGOjV5VL4Qc1nj9wcz+YSJCIqC6IQj7GBkNVCCAFrBSBbBJksBchCEidOE0" +
+            "GwDnuBJAdPQ8S0NYGAEUeLCCI0DhdwyEDZSzEAsf3GAcfKaOHDQkgRbso8zZ44EfukCKjv3O" +
+            "MmUmT3hoaVptwabtodnIQ7EiEyrZadSuWEYSaqEVGv4B1CfxbgBUEg3vPnENf1+DEPXuNqtg" +
+            "FCkQaINHEYAAIfJpTlIpb3lZ2re5KfsNLTV9FMpAt7TZRXCbCsKAMdUIT8llwFY4cGH2Ym3Y" +
+            "w0VxqGoj4xADnh8kZDIz4Jx8+lgZ9ESPNKURIGpeQ5vXjKML8Fxk9WET4xsXPDYLN2Rs5AAb" +
+            "kxVAuDxiEjz+ncMAEgoSNeaCTguS7NknbLI0lrZOQSgjHvQM8zOZMRKHpAcrOFUQTIYbCSC8" +
+            "PQcA6ULyhAbVyYFDzF3XaZNodAERJEB8kEJsjAwWDABaZUHNoEdr9IgPbMBtEQEYgEHEvNO0" +
+            "VIS+kYIc3Mb2VAgRaIdo0BJ7DElBkAa9QEsXOAHECBBe2cF1ndcnUMl2lYF3fUGfWEFCQcBE" +
+            "HUVIcMARetcyRAPkYc1G/EETMGFSHNsQZY17kU0UeFTgZA0PCYVQfIJRDEVQtJR/tVRalIWy" +
+            "nREbjVFblIFhBE5fYEpcuJFPRRjssZFhgNlbHMZ+oMpSbU5mrFvPzMBnGA8M5gr+vinSa3AS" +
+            "atTGWWHfbxwBwaGC6pjIOEiAbQiLJyFPAcgB+PnPW2HMODCHtkTEDe4WAHXBaOBVjowMA8iB" +
+            "BKjAvZGCCljHrUxG5rTKeEwGh0DiQ/RHQYjPh1gBeGzLkZSLwFBH0v2OLuwAFjQMFJjBADQH" +
+            "+zRMKBBBizDADsQCGkCBJwUhdwiHtliCGWwAk5AjKjRHNl7csRTADexBLGSBtpiMtrjbuDgH" +
+            "KeDiONkiKYRikozG8ZCCRdXEUkRD1tgQMrQJYGxJS9EXSvyBR2DCGmBCNKhNLRwCTDRAG7zB" +
+            "ISwD1CwDJmzElmCCKziJK4wknbhC6jWBeykbDxWF3Bz+henBIUt9xaLUzYGpxV1oXkxhClHp" +
+            "hR4+DoTxHhoZhh82QQ9cDlJZmIa50UN8mC48wYdpGHqUHJCgXGlQHK9wlQ8gEor9hokYi268" +
+            "ZTlBC8QQwR6UkwToRuk4iMt0QQKYjC2KX8PcCrp0D5MYSJJsT/TogrCYUq54B8nlyMg5ZkWM" +
+            "jy7kEb3gCAM8gQpogb1MhLs4hBUUBEIoXI7wQLWsSNHxQBYMgC3yABEo163sgB90DxaAwRH8" +
+            "TwJAgSV0Ab4hi2m2Axg0jGhlwXIIRGo4wREUAJPUljrSACoUQNFlT47oX8Jgh8uIBs1Mw7YE" +
+            "WbgITUV4RtVsFEyQ2kkSBdz+2M1SNAB3UQVTOAlIqMKUIEUteGRC6cMfzGQbNIEa2GRCocR8" +
+            "siQmLIPZREMUYIpWbBFLwaHctJRXLNtZyIl/fYXhiFGwBVsPwB5boJG1BVtePM6AWUAZPM4Z" +
+            "DdjuJVWF7YPFcI5C8Ee7+cxEfJhlnJwK8By+lQ7pkNUIRpLAYdBbUt0GaNOMHUsCFEDsoIYt" +
+            "Tgf0SECwCMSJOEFvldk4sIZpOEH01Eh3MId1QCApWMYruseVDpbxBNYTdEfLWda6mcY+5Aqq" +
+            "QNWHfBaHCAgP2Eot/RwPpNWQjEPVMQknfJMhDYAK8gAUBGryAA84nSMiWIJxbEAWqF13REtc" +
+            "8c7+DRyBGfCOa1pCAcDVrdhKeJSGZ4jWOIRQw1jH/yQJdogGiXSPafDAUfjQ2DAFORAKTKQC" +
+            "mZxE1uRE4DGhGhRoFNSCHl6E3BBoE7AkYyxeE5ThQ1SFFTTBJyhbE3gUXmwFg/KN3SjbU7BU" +
+            "s6lhS7HUs41F2gCOW7hepDQGuRXGUZXbYvCLiNIRNKIoK6ybBVhAu3nlPqiLU8FKmFEGQvAc" +
+            "rkgAL+abazhIWqJOjVJLbhjLFGwAFljCOFjqOGwA0QlHttQMr/CIBKjOaqzOXpUOkzQMD9xP" +
+            "d8iKCmBMMGJHznlHCS0HMPYIeXwIK6hAgHzIrUDEhxwWkxUMZZSdJ9H+iy8mgKUhTziFiDp2" +
+            "xg447DiBARQkwDSYgRlMS9dtwLTQABaYgYZkASIMAJLBU7Ywhx+gwrh8kx90HRbEyHKYGa3w" +
+            "7GkYy6wQQdWJy2n8D8nij2lSBw/4ABGsAEJAJH0dYRLAkFagSRsEHktB0Um0lESWQUI1gRus" +
+            "QS3IBYFqwqppwQwsXhAUQjQ8xCEcAmKo5OO4gk02gRYgilcEpba+VINyK1HIDd9sUUqZ3hgJ" +
+            "jhCshes1mBbIFE9tyoA5GOw5WFLlUeb43h7J0WbNQLvebEJwnGDViFVZ1Vmizv3wymnMhmy8" +
+            "Rm5kwQYMwAYUgMJi0CYdgR+gRjVxkicpHMb+KB0irZJ1bNU+bg9qxOlm6EILlMZzvYuNtNx8" +
+            "HM9w2Wxq1JLyYEZlpNwqeYamUU/ZUdw7xciO0Vg8+QEIjgPVWgK1+EHsJKQlgBMRIMIIRIsf" +
+            "jNaJTKAnYQEaxAJq1KY6dmy27AHK8MitWELsMAwW3GZoDEmSYMh0eIcFaksXHJwEiMaJ0IsO" +
+            "3URVEMAL/YEqYIRILAUm+JfVZInTnOQR4kUtRANVRsMXCAFLplE0BMA+lCGqSO4+PMAyBIEW" +
+            "MMUXqJHcNAHozs1XTKvo6WRQAErpgi4ZvYFfyPFczAVjLKWmxMVgfEqHDo4W8Evm3FHmrNsg" +
+            "Q8S6Cq98WNZkTAb+6OxMXOUb6oyga8QVsbwYkUIBKsCIblzvEWyjtDCLiVhLAXzSOPDiDvjA" +
+            "DTLJWcIT8jBJCdnBE0SHgYDGZ9ybjbzdq5CCG5gSyuCTCuCICgRBdQjIgnQGZQAPKwnAcTEA" +
+            "KiAH+0CLLCfnvq2mOg6nHzRMATjs0KqDP3pdLMQIc0DBtBCabYZI1f5ghSCLaahTC6CC/njS" +
+            "EWSBiwDhKGbmeOTiDkyDK9sOM1WstgxkLmJFrZHJR0BeFLBQVbzQMrjC4mUJSz3NG0yJE0fD" +
+            "XkRDGTghJkzU0wjAG0QDYizeFmOCYpjEH6DKfz0FWMjNgqbufyko3pzFXZhx3dDxWiz+ShwH" +
+            "QQ9gCl7YVIOJaOBsCoOZ6x1ZwEJkGO+i6ESgqBzpkWsJFrlAB6/U6Cb5VWOalr8dC9XdRgur" +
+            "rcI6LcS0IOvE1StCRynTbV9OB2qs0ljvQQLg260sSEHaQXTQijg9x5SFB2ekBpCwymHxwAz0" +
+            "3ISwD3oc1zG7H/DYCicUwAizj4MIxGihjiWAwTYyQG7uZheYQSxUHxTgARr8zrHEiDYiAhZ0" +
+            "wRGMACLsDw0QR2rswBRILNXxyAagwQCUTheUE/NY6bhECw/swRGkwysCDyjFFaONi2VkBFbk" +
+            "LVO4za01kaotwxu0AZRwJDLchXd14SFoQRAcgkgHwRe7QSH+IANEFEIT2IHhbsshtIH5kCRl" +
+            "MEUU7EVY/GTanIWfqLQaDgUVrW4QdJGztfRME0656aEmqFEQaEJiNEYaDc5SdyVmKLUizitl" +
+            "LHJETAaQ9BNnzEpBZlq+bRJqmM6umJY4D4c4YwG0xEgGM4u0ZCLPPsseqIAc3DD1uIbL/Nkq" +
+            "NYxrxOkOsPgeGIgc3Fx+dEeNZJa+5sc+qEj8mlJEJIQK2O0+UM/n8FxqPMFqlJzA8GyQEUEE" +
+            "ZVY0CUzYRsuysJZzWu9wmAHUuUygEt0NZMHS7sEIKAMiZIslZMHRFqT20cAUmAEWyIGkLq1r" +
+            "FtAPThz1ZIgtgi0WGCnuUM9piIb+c/jTuFQfdUE3fekJUxh0TnANVbSJ6eV3G8DeGpCDEHTC" +
+            "HygGAayBBWjBJwSBACDAEtGRFuhCEEQBeiyR9CiFCkQugYJRF7036HoFfl3RsbnU6qbNf5le" +
+            "fMsxXPSFT90u5CilHW1KYjDYHSWGhaHKeYTZMDnEIs5AfiBEMD7mI9covvWKrjSvWcHGh4vz" +
+            "wgaHJaTlx5yIv8Umj0CvHAwpxZmSg4Q1j/CWpZVGKpUGdkgartxKIBmP+xpPCwhAxUUPqvAc" +
+            "ekRHaRzWjgGmoWsIutgBJ/hAjWBvxPhVC2uIPxRQAsSCBTcIOWXBK6ptWh0BGiBCWm0An3mS" +
+            "IVUdD+z+KcknABjwARiYliWUk56WzvbELQxueWoPwNGGgslwApNUz7Z0XahWyNd2DVLghJR8" +
+            "BAypjXitjUv85N18weYJxVOogp8I8RdYkeCk1B3B7hd4btq8LqLcBecWggA8QempHuppq07K" +
+            "DRSqQuk9xVCUXrbad0oVwhn5IbmJyh2/kVISlWBYwGAsOOdQRr32TOj4TOjo63NV/ivlClqX" +
+            "Do4JS8J8jIkk5xE4bWpvgIkUQPdGEmpwnWjwyFtteOsPxD5S3LOgBlWBB15BIK0kpvLMgL5y" +
+            "CHcc1oJs2F9DYPYkxDEXXdtix28Y+s85Z81wPBT8VaROix+gAR6oYwGAQSz+zJhp2eaaoQGJ" +
+            "i3mOLSyXQwEY+MPujIAZREsWoIEZlLJrOCrDvGJqt4jLbIBvC8QF3tuVXilbxxNAdIEChQcp" +
+            "GkQK8PjU5s/CP20gRou25subTwvbXHzYJsrDh1FS/RH5J0pHkh2jfIlSiEOZJoXefIFZpmSZ" +
+            "NyVvcigU7UGhfbqavIH5higHnW+Mcii5kunSP4WWxlRakWjFIEGaZG2C4OpVC1q0WBEiJIgm" +
+            "TU26phWiaZ+Vn7p02dHFSpeKfQIEPNElYAaDuW50tbBzg7ATwoTl0KCRuIWcG4lp7FG8g0aB" +
+            "cQmI+Bl3BMvmDUeIgI5cIAEPGl0K0OAxTvE41jT+nOy5sce1DwkSXEuQLEf2DRqEacS9keMG" +
+            "j4ItdhRvoeuGHVYtVBDWRUrCvsF6GUSnQZeGnSc3EvigrIsHZSebaTBIcARKclI7oIyDnwXL" +
+            "jgJm2mFZTGPgjgSxYiGCCDM82WCag6AgIgGDsrDkIDMQsWSHHbIYgIgJxyFinIJoAG21WDYw" +
+            "DQowLHHCiSOOkO8G6ii7oQvQimOvANxCSwAxHm5oiCGIOvokmiQ+IWokkb7444uQIIgCApFQ" +
+            "OukjI9/4440yOAiqDARcKgIpmQqpaCqiXInmDTsEmFKoL9AshKWg1OQAKZ3chKrNopRSU6ih" +
+            "bHoDAT0R0KSMP8tyq63+toLYU5Or2hJinyD22ccCXWaAawa67ADsiRlmEEAXv54QQAW4CCPl" +
+            "sFFbaOEwBhQ7jYYd5EvAjwQ6nPAzhGJJcT1Wx+nioGn2SExX1Vy7IUXJfNtBDlRY28PG33RR" +
+            "TDoJtiNFVDnIi0va4phzQ9NIb4BLjkp1adSOT2mwcdPEjjCMhnEMG+ezLm7A7QgaJGCPMijM" +
+            "yIKI8zjbkML2/EAkAyIEMqNWHpxApT740BhBQEQQ2WDVDFN0ggZLFJwGCzPaw2IEMDbcbN7f" +
+            "nOiiC1ERmnBjB2nwI0EnTEuOBxVYIYWHjjISCaI2JJKyCY48GnKkKHh8isklgU5pJTODihP+" +
+            "qji5FGrPMN9gxQ4riSpJpqVlImqoLzgAeyo1WTIKKaKIKgOrIN5oooe0GG10Hzf2EaKJse6+" +
+            "G1FE2don0r3+ZoUBTXW5lJVIGaArsBtMNZXeFaFdzLeY110sAcrGsWwcS1wrYIAEukhAvnJ/" +
+            "9W9dPxRctwsfQp93BwdbdJZVZ1UwLDrCGHiPsE+bk5YVFVSYodt9bphBW1BvcMNUuChrsdkE" +
+            "WjiPNYRFN7be9sYZQN/LoNigPScSSHCcjcFgNQs0NmCtADCySGAaM8yY8HyHd/DD5Ql5KACK" +
+            "ywtAo1YismAGLJQMCgU4AidwNCEnwGcD/lgN/BS0gQFA4QahWNf+OCTQHNMYxwk+GEfQhsSz" +
+            "aHwCKihxipI2IpJPLAMZa2hDkR6SiiSBrQ1raGEU7EaUIshEJXRCShPK4ApXNOEJTzDTlJrm" +
+            "pjzpBCZNuUkhTlISqByxbWhhW9sQIARAdUVQWgiCF73SFQtYIW5asEBbBOCGSxEOLqT4lOL8" +
+            "ApdPMWB30opOCzJIGAlAhjU7yCBu6LUBVCRgPS1D0bpQoatfOYZdkKGXYo7QBQn4QTE+CI8P" +
+            "aOCDI9zAYhZzDCExibt4OYYBqDoMdMg0nezcwFO60MR0+hKvx6jADrBhAKvkQJ0MdUE2/klN" +
+            "9uIzDUtgIUGsskQkCxALMKQrHSMwQwH+dtAFIljCD/AZgb6wIDCJHSELWajmDeo3r3GYYQCa" +
+            "yUIG0KChgexvP9GcDRaIYJosIAIL63EmJTs0Dt8UZ4G+kQ+8MPPBkezoIRIhwJQYMrSloAmF" +
+            "tYhGLdYQhZuo5CRdQkYtaqGPKHAlKGfL05lgAsRaPOANdPOanoIAE654jQN7AluXmKImlYAt" +
+            "JnhCikuCYJOgdKUJFrjKWhQVhLeVJQhCCMsZGWUFLbAFU4CZwT5YYak47iU6zxFVdEhhh1Le" +
+            "QDt7MFW8JDAheknSYqMz4A6OgIrTsAdao2uNrlREGWetizZ+OAIm18XJ2ujTYs1qjWJQgTtS" +
+            "UEsOy+mWb6T+RYO7OIeTgQmO3FSgzyeIihSoEt0e6LgZtW6GYH7oph/Kw81IQkEcWEDFESBE" +
+            "mnFAIQvpe5EZUIQGT6RzHLHI1w7K44/28OAIYEjHDoiQAXVAoQt+EOARKMODLuDWCZaQmAQ8" +
+            "Vp9xgMEMluAEaixjGN+0ZnNQ6OARNrAvJwhoIwnFWc+0FEWTlCRJTApTG9SWUqGgDQEIOMQD" +
+            "1tAEAZCio3dC29mKEgSJvOEuFfnTf2HSxDYNJWslYeKZsPbDHrSkBzq9YlrMqIW6NaFuQrCC" +
+            "Wb5CRrmdsVHh+gtc6vKpukAnl1+94x0Jg0ccwcY0qlmVakx3kGgacF0o8kEBCmD+m3L9JlUm" +
+            "u+5sXpOqyLBGDjZ6j8VGtgeDLEY2vyHFgvpKLTtkUBcS+KpwnrAPUuylWyqATXMi54Q9SlPN" +
+            "RJDMarGQPuBi4QiEXJ8lPIcHM9iPPrU6kf+IsAF1DJcIsbhnF8bhB2Jihn2hgRgYRGfo/RGS" +
+            "CFDYw4mmMK8jfOxCWEBD/KTZGQwucLngxIKEujCAa8IGvPFEGA2ENlCJfMIlQ+qIKoSyFAh8" +
+            "QSI4FIvW0jSlTxziDfHiQduukrY8dXSnrqjFG2bwhP7axCYs6VKcdFJtocDJTds+KU3b5pIe" +
+            "7IltTdCEW6wgFqP6FFFIZZQbNOyGTLGiUYAp3E8Go9X+T7mBjhn8zQ38wrhp7cffhKGMBC4X" +
+            "L9aU9TSuwVDpeLmqHUgvAXuMZgKQxWQ/lPUx40jMqCXTz+IOGWEqcAwnbaYuCcDFDjbjqhNI" +
+            "obgZmLnLPuAqLZ2gGQbopiCrfU1o6LwqKKTID9SlJhQ+DYVXbSAWpIlFBkbgB0vgwROxyBAR" +
+            "6IxofFkiAWDQs4AgpK8FhgYKmdzYOPYwAjTUpwu2lY9diXAa8GkmMlDAWIc+ZjJDZ0GSy1XN" +
+            "ipywMwgQ9A8/ikKhktSUpYSESTypmhuCgCa0caBQHUHAY26wtgirbUrUDoJDCayL/3bUKHJ6" +
+            "moJ7uJQSCsUlbsoKFrfiEi3+biUIPh0jWNrClrjt49xgcQNb3IKXIv7kLXMJHlyg8xgGNGb5" +
+            "m5KlHvEqAeqk5z3jYEDJyuofke0BIQpCFskquapLu4aXEigu9y/zmyZzN6++SYxcF4PB5BSH" +
+            "jn+H+R6Xr2WAE+YnN/iJHPYoPZgj4SpDMVAjPjBnA6CJCAaAcwogC8BgAzDjAcFAf8BgBI7A" +
+            "DzKAECLGXQxtm7THVQQmCzYHneIDISyBnaagQaaLDyIgfWTLDCSpRn4DN14DFUjEPkZgBCxh" +
+            "D/xhAMAg7opLQXRlgWwMCtqAAJJmZ3rmKpjkKVJCJ3CiIiSCAwTALYqC2t4gCNpgGQ7hDxgl" +
+            "p7D+hE/Y5irQAoh6oBZcoQyiDSuaoCUSzE0kqigkKk6eom1igirOBmzmkChe7yy6YqgsYCyM" +
+            "ivfqRhM8rFEUZR/MKN0mhW6g6qn0Ii7aKOBUgBRKZXcc49/6aVUKQgLUjF5wRHR4IDQuI9Hi" +
+            "TnVyRa32wH4mbrnkYOJERw7OislSI2F0xTbkgDVugDRYxTQMwwcSg3EiA2EYQA7iSPrAiXH2" +
+            "QgBogGYWQxdyqcucBRX24NVcgzUQbWSggM5Wq7SuDgsGIJI2wGA8CxHwADQswWA2oJp6qzPA" +
+            "IAPMwNE8oQIZaCCcQGMsQSDQ0ZtiwRPoCa2woADU7D0QzWKGjpD+cR7+ewt9SgYh0s9FcqVD" +
+            "+mO6Ym0kJKINsMLBYqIk/gACoKIieO0BcMgCLKAMvsCK3oAskCEaloEAysACsOQqsARr6gtt" +
+            "gqgWegAuiqIQztBNvGRPgAgPq+QmiGIM84TBqGLcemBK4KYsNEHDGsUkG+WLqFJu0o0R7+IJ" +
+            "4G2qUIw5oGM5AqMgMBExFMNiSmMHZKM8aMAg+UlDWCXu7OquUGR0KCM8svEIlCUyegVWbuD7" +
+            "CuDNaKAFnMVkEiMx9kA33OxyFEMOLIZx9ghWTGlUnEAOTM7/UKxcGEcOLPMGBAS3cutCJAAh" +
+            "XCUWskBzLCEL6qxeamVEMmAgR8QM2pEGUGH+AzhnAxDhmXaAQEYgQTgjvChpmFCh0PBAX85H" +
+            "HcRhGmqrPWCFNvelZbxpD2Ih6RgwAwZguTjrNbogkW5gfMILgOhpHFAhCyDCISAgSXZihLaQ" +
+            "ScJGTaSoS2AiGtSgEMbICtImpzrvENTgD6xDF3pACKZkqI4op67I2RAAMOgrJl5iSsiGKhLs" +
+            "v5YmbYIiKLykigqlwspAEwZx9/ymLQSlboJAUJ4KK/1G3gpnOlihzPKilMqSGRtjciYO4f4t" +
+            "ARDoF8GpC1Yj/TSECADJZNYFVyLOVv6pXI5Ac8pFMqRJk+ZlNxIgNZgUAInsryJjd56AMSQH" +
+            "t1JUAoQH4JbnMmv+6d8Iw4NmLO6MaX80aZguZHw6AwqcKX3A4NNSBK3GcQc8BpsgJgt2ABVi" +
+            "YQAmKAEsgX3qBxHaQTMIBA0yJAtiAc9MpACqCa1qZV3AABEGYHw+bXtSEBUwpwDiLnuWqQs8" +
+            "DRFSpE5hhQh0pCQYQkl6jSvUpAye5g1UgaGeKBpcIQrcAkDVhixmEhlcoQ0wRRdsAgEq7L9c" +
+            "QiuwQg3foIgQAC0mj4r+awshtFmJgm0YTE/0BIjQwgLMQt38RgDkRm7KQm4WcW7c4Iw6ZS4K" +
+            "Jzv2Qi8uhQGcw/kATjFoA1okozwwaDYqDjya0zJsMJoSibsqLpMO4rTUxwdog2DVChX+HCR1" +
+            "xsHmvi8BekVZcEMy9qNXCFYz96AL3u8xxoxYHJOWbs4xmqVbyMM06hX+6tI+CoCaKEN/LONP" +
+            "4QlfMgBjVisW2sMHlMmAIEQcMjCASERAsAAMTg1iRqAANgAP8IC4SKuBWMNdHKS2wCA+0EAe" +
+            "N8MMrgl1OMOuJAO8LAkITSsWBCYW4INqsSdBUnFIVGG9JEIVrMACdk2iUiIPwwZtHO8u9gFt" +
+            "siJYDyEa+JMVBCCn1MYl9KQQ9uQmY0INXKEQ5K2+gqIpY6JZ7aRx04Yqqu2jqkgosAKLQjS+" +
+            "onIRAaNbHcVz5UYq6eIuIiVS5AKrCkcF6ChFmUMxwko1jEP+NUrmNiYEWgaJRuRPkujFjxoO" +
+            "ZpKjMC1mU7P24wDLkFJlNmwO7fZALyPjk1QlNoADNnzAZmxOMVRAALg0OA7DzBbDMLDXdSvH" +
+            "N/RHNNZjA6RpIGYWEZ6WPYCw7NYnQTYADRABfvMlPlABCsZxcyR1AzZAGZQBESptBAYgvKIJ" +
+            "NEwmgNpxANQBEU4zHp/JgIhJM5YXnpaXfVCE6p4JQAQo0VJTPt5v4sbBI1cCpv7gAaKBPvdh" +
+            "JVJB8tAGJuIkTL5AbspgLPTEJcpgGWrhD3KgLqyoUP7kQSO3CVxBDTjgqXxyT7TQJvSQWpty" +
+            "KNyGbIrCcYWiB5iSjA6l9jxMCDD+pSqTCvgY8Ys8l1v9Bi5KafmkhTlUl3eMA1qkDzYcB1oU" +
+            "RA54IDwIMzBXBZ8IaQ84oVzkeDFk1OMkABUyyFgA+fseFhV4I0VWaw9Cbl1EB4MwCVoSw9+0" +
+            "kciiwwdmbFqewMwADgBVty7Agwd0gVVWJGC7oKzSp1yULmXBAEQSoBxvi0JUkwioS1+OoB3Q" +
+            "4DS7IAXNt9DWtx0AMgvwperqDOvMIB0yBwL1xxPUoemywBPwYB+nqS59AOsKoGDMYAruY7Y+" +
+            "YwBykzUsgZo0ZF3GmTPqrABOwijedidICqqAMiVQ0ii6Jmxk9Q10QVtoEi24wgqWYVcFwA5a";
 
         private static String splashScreen_gif_base64_4 =
-            "C81GCL3ABQVIqj6QRD4oAQ8zAGLQSZPsBXQgAABLrntSFTfK00jQQEPIXHRnF2TxE5YhmqWZ" +
-            "jbVRZ8ZRjscRWjSbaOIogvK7s7IcPtnxTGEHBXLdHecCCvvQLu2iHQGgdseMFS/4rsd8H+R0" +
-            "A7mCYizgcD0wGdkMMAIiZYbRA/myJ2qASv3So4gQsov+wIppEAS8QKSc2xJLggQHoBIVsAhV" +
-            "wqAHAEIuzAtkMG44/Ib7FaDBuiQrJRElWQr3LATE0M9IIhBLEgQOTQ59UEoH0AfDLdzbiqGg" +
-            "siXChxN0IBTHN2RaLcGbAUsBs1RMoTdh4Slc4AXilJwqVh+iJCBX0RRH4RMm1gPD8xcIQhR1" +
-            "tAk+kHIegRQJkAx0AF2EAFCmwwsGFHKQkwDkACIKM3Mmph9HgSh0sGVuQQi5Isa6AlymaKOg" +
-            "sX1Eh41ERxto+sqtrD00K442Sx02O6dwbb/DUR3hox3+WwnCUMCk2E3CIAw90IL5uA+IKh5J" +
-            "yxWkqB8vdgNbNRY4+D8DqGn+spJOXuB9/SN3zBcovQPIPi1krnRkJkGkiUclpBQExNfJSNAk" +
-            "86k1G6GHBF3Ptr23NhmT/6yTS7Lb+vyGERQE/1yUtLdTQaASmVtF3dph9u0AfWChLwFliMCQ" +
-            "IAuNIAt00GgfRiFP9oHdeXSWpgI4dVRHWvYvwKgVPM6DQ9GoeoQ4aVO6qpQMPJAMkgx0NtFk" +
-            "C7NKCEQMv/gFoGIXFG0XFeMDI2YZrpIU/QR0LANdhO5HAWhchUQUYlWeQ1B05HvKzcMab4pZ" +
-            "wNQt0gQdal2zKJgd5AKoYxcd9mg+5LO/raVNwukdlQDZtEUesJUu5tcdrPBGojA69OPAcjKA" +
-            "vHX+FO2BFlKhJzlnOIGVKGhhKXrVP7IgybRzxT8xn7KgDEtUEvt0Eiqh5UoMCDEDoK8XQb+G" +
-            "RGcYX4EQlHf4encrBHEeBPt1AC7QJLdnEh4p3FxkRTQx8pR7E7IwE1RkAgMgC7XDT7uilTxB" +
-            "Ka7SaiHG0Xdz6PmRnKZSR3AkFY7U8yYWfj/9PkAnBh37GO8BA1wwBDvhCsCFF3vCMcbV3W8j" +
-            "ASfAKv2jZnOw9GvDP6fa3WcCjWvBKFDaEmfRC6mA6xjAA0CYmGfSKGg/RhIwPL0wWcKuHN64" +
-            "G9kDWt3iHNgCLc4hPooWLoAKHir+dWM3BolW+CgoHQJs+NpE47R1Pu/+ox37+B3CMC9LKxfd" +
-            "4RWgEADVLBX08VWskCsCVxQscB5AxwWOM1x0B1cYAAMsgBRBMffPHfcwUK0ycRN0QF76REUV" +
-            "ZHtBANq8gJRnqBHk8CCHu18ZwQsIn/zJf3sIRg7CKhEhpKBBEATT1SSsXaulZBMWuk+yEGEM" +
-            "9BKJyECBGfc8EXNprydpMBlAlxRnpBSJ+SaR3h6JGbtl4QWi1O5p9CYAQanXlzTJaNxgxSrN" +
-            "lwSufLia4aTHkDm95lQY5orLF1fJ5iToRSgZpQF06LjyIiZNKldfZF0AkubZHB+9Enx5thLl" +
-            "AGW9MEggRC6NmI0JJHz5MmcODx5zkJBIk2b+SBpXcyQM6TUgjaV6Xetx/RrB0tixuchaioW2" +
-            "X9pYaS2pazu27dxYYyqNiVWp0r4xfStpqKSukho16sZA0SvYL1wD6tTs00sYCuEAaqDYBbVv" +
-            "n6gAoERB0QBKDShhGpx8CVAZwxcnoALwSOMFFIY5XjCoWSgGlJM0c76A+tLLCxcnCdLMUPNF" +
-            "QpoeXOakEjPDCwyqc9LQGKCUTrJeqXwMSJYMkawDhFLRqUCOEBBC7cnxWgQoyKJFQOiTIbeI" +
-            "HBAh8IUAOmCYRXjhBQhe5jtgkSDyo48+cvBbZBgyDiADCPzKq+AARBxwwST00EPCpD6Q6GNE" +
-            "H+hIxaMBeqnKuor+vHBFOC9Y9CI24cTwwgsekOJRDKK44OJHH8UwykdXFpJoxy9g6KWXhb5I" +
-            "ZggMxIAtDS7SQDGBIWQhZAAp5yDhSESUoeM4oz56ppcK5qAkKDqOwmCIloIjwYerECFkoB7S" +
-            "cJKS0yoKjpCTvshRqYUkMHSlTST4iiyxzoLUkkffioUPutaKRZ1G1IErr7b0siswvUYdTBi9" +
-            "TAVMsEqEmauvTEeFbDJRCFPDidH+6qEHKPZhpYfWDFCDlcgC4KIH0YJMYLcjv9hIKidY4egL" +
-            "X2NL4LTYRCP0N+W+wAAD44YgVILuxPUhGUQJmaMkj9DDkw4H2s0PEDpcEBQQXvITcBH+ISqI" +
-            "cJELLiCDvguGEYKcBMlBWL8DMlwkwQGFEDiQYYY5gJwKPKQDkQqQ8AGRZEwiZEM61FuQDllk" +
-            "SbdJH/isbcaBxAUXtiG84LFGGlwxKqWNCMXgSaIkGhKDGYwjqDZmCcpxAHAkII6LI3lIRhlZ" +
-            "wBWjFx+sI0cIGG5IIBXrgPRoiATAASQZmlkeYggfCKGBIIutmxGGlHB0RQyKkNgkKjquZm2j" +
-            "IyX42AQ+P07FK7AiHYsPSDGNZS202hqjH7xanUvVMQAbVY1TNYeCU7syhazTVfGqBApTLetM" +
-            "NDUCaE2Y0XqgtVa9oFB9M1a4UEMUglgrjrpatWSt5164gDb+jWq9tU0NlYBcjTWk+eTBi4qy" +
-            "6kXcVFKkw4Q5kkGZECS4bA+J9IJCoj37IpwYQEAefK8+BgNZnxyTEAYEECD2q7hA+yZEOEQk" +
-            "yEnGibJnkgpUQFAXo0PIyIGn9pjABz5YVC/MlZU0NCUqc5BbjQhlNxh5wSiuABe3uOUELiTA" +
-            "RzPoGbOi8gXlzaxGaVjOBZkFo7zViBA++MIQaCCLZEQFXV6QACIAOLdklKApiyDEF6gUwOEk" +
-            "RStzOFAyiua1vkVFJbJAhAmdUiZCzYhmxpFKSEiAg6qkYhNzkBTiGoU4SM3lcZWiS6bychcD" +
-            "DEZVrpNM7GAFmUbURTCfgkIjIqP+F16xYjK7mQHsWFErWlUCFKAYjBOcEADaDa0HonCCB3+j" +
-            "kjmIATdzmAFwYFgslSRgVoRygii8xRqa4YgFQ1AJuGpUozlUZQArwhMiUjGeZKQngfjJjwEJ" +
-            "kZ4gAEJf+uHF+gpIDnsdAAjGvEAQQrTM/AQBQepBwiLSszFylG88XNqbyUyAg5CZBBE4EI8s" +
-            "EtgeXiLiOdZhGVV6wQI+CQclN0nDAI6UppTMyG5iUGJAvdAcMZwGR0ihQW0SqRInZScqvCnT" +
-            "HIaZCiV6wSNpIMEwCPEkq81hCMkAQpQcIos0YIALH/1IKhYoAQnQARzWAagEh9LRQEFFbF6g" +
-            "AZKiEhv+V2xiAMsxyfai4ooBeKUrZFFcpBYgF7dYoh9reWocW9WITcFFHftQhwYEOZhGDkYv" +
-            "gjSVAWJRx6qSyjJqgF0lRMEKUcAOFFzwTK0kqQYNaEANpnIkQnKnRFvdYEmkJAgGnKCSNEhk" +
-            "d48EaEGJ5Lwh3MBuX5iBkkACLql4ITuuuF6TlNILRAwgFe0x2cbo0IeFWYwQ8DEmMQCRof9p" +
-            "kxj5IgYZ5IOwoNQ2KN3sQwK7Kb72DDNj4QlPH9qDAzqEKIGISCA4Tra2G5LABBJYUY1SIRya" +
-            "sMA4NEgAGKVStYbMaCrGU6IJfSQV4+BIkkNKQPTAlR1mNYSlaQjKUaZinSH+IGIYiMDKAK52" +
-            "E3IuJz8DuAlWhPMFH5AjFV5AxAWQQLOcsIhI6VKiCdY0317AQEoz6QW4AkiDGT0HJSyoipNg" +
-            "hEbFrXEsj1JcU98YF6bGkQ+W6lRf+FJHzUymq6tyXSUEqblNNWIMwqgjYUDRiH0IGQq0qxUo" +
-            "EiIR19RKDIEZDSX3kavR1EoqQSIs66K1Gw32AKCFHexQgjOE4ojBpDyA5YyeIb2FpCI726ve" +
-            "AGDQERxsz2QISyASHFBAIPyPDBi5QIMuAAiK2YdBEQp0oPUDTF+qJ3z0UoYyDCa/dnkItAk0" +
-            "iXGxiTGUzYEOm+hOD7NSoybxwEkSgNE8PWgdnIH+0Atpy1YJN2IbH6XXbiBkFkVgqBSaOQEG" +
-            "qRiCBNRTm55lpxfKGAYOnfAMBwYbCMNYCEUQQQMfPac35LjAR7qzibqdJhVDcUUFEEGzOXgM" +
-            "1SpxxVXmIItNKMcHsshwVVC9ED6xhAYSJIuJx7LUWCyALSx+y4vhSLm5MO5TdwErYUi1jzne" +
-            "lVSVyFQjHpM5XdE1d6tTg2BX5wST2koNxFkdFHoljH1AgXWTLM5RTsMR4ghtBoncWUFfTZQd" +
-            "UWk4ceIBF6KHlNpkdzoeTlkvTqDPOTjwsyLxXgX6LL780Ydgw+BFf/QVhAMlc0DzqQ8ZJrSg" +
-            "PmyTHNI0YInopXXcmsT+AckgrjpNoM6LXWyYvRWUSOZQZwmU64JOYlFsQIxqRKVJAnIzivEa" +
-            "clCxARQpPdggxxNgm4JcRUpAjJEyNmF4CcaoPUOZUTJwNgd7UcUkAykOHXzjCmUsYjnn+baP" +
-            "NnFgMZAACEtxhSxWlgDEx8h4EmhJAkwgv9h4mr5TEXFWVoSoZLARLY9Th6UMrg65kMXfUuUD" +
-            "XkRHSL3Y1TKz09xfEBMYu2imyLmKzMX14mXRYDKVhOFBtVa3GoWzAhS62UcKJUkRae3GeLkS" +
-            "kq/S34Oj3A4psywhJ5iBqTgbcGuZn4qnN/uYTwuPA/KeP5MtQqifhFEQBYGPBwGCIEgQMjj+" +
-            "EDKgOkLQJvXgH4S5GIsxIPmpgK4jBHVCLkExCXUCmf/BsxMZACTAgV7IGM1akWRYkR60iBfp" +
-            "DSB6tRoBl+UwMx5hDTObmQ1CId44G2uzGyYxDosoLDH4mNhwM9/gDR+wMDoQACQwnjKimc+q" +
-            "jQHYj076AhbooapJhnbzAjrgBY+Kk2/JJL6BrzyZDh48kvn6iN7wGj88AVqCAeNzI7TolLYw" +
-            "uLgguDj6C7goHVBAjCP7i8zRnFhBlUY4ssnYB46zlcmQCMKQpNYAxRsQDdu4AUySq8iYAbgi" +
-            "jDghRcRDIdYhDoaQpNjgAg8SJSV6kgpaORMSwhzZtRjRwyvMJ+v+QDua2BskEJ9t8q38aB9j" +
-            "4oUKMZgLoEAOXLRFUEaE6aYHAQQyKB8845Ku6wMckB93cQC1MwE8+Z+28xAkaMP26AUsKqNa" +
-            "oh6qiJFUQJQZsb18rCcneYZz8xFK8LKAwoA1O6laUqwLeicyE4N0ORfTwxHPApdUEBwxiD2v" +
-            "SRpCYAEvIIdh8ChC2Z4aKYGVoQhBoRl5K6krQTWXAAI6mBlDOZu8wwrN44jVAyFEoZEcQRy3" +
-            "qJwVK8QWawvDkCrPSZW9yJySAwwNmAzQ2Ifd0Bw8ohWOi53dqIyVy5XBYpbRSAkqi7KkPA3c" +
-            "YYXokKQgwcrBkpJMMqFoEQOANKHFSzP+momWqOA7cUmoFamIE+AOwOHBAHIXQjCBkSGEd+GS" +
-            "/ciPirkP+JgQw7TAgLEmPCMfcnCBA1iYAkIgR3MTB2gP4ZofjOmYFWyPTRgZi+iDlDG267Gl" +
-            "AWABCWCJj0AUcXHN3hAOLSESDEi3JUEKIFmIoYEhJQKchXCFObsKLDmwkDCPNssboNiovhmX" +
-            "XjAm38gKcyESEyCEdAu0AWiKOkMJQnEFEPooYKuvZMs5grAi4GMp8WARCZKF5fgC2GiSqbAE" +
-            "xVmABUiqf0vEOqocqRoDxZiLu5A+Utk+pVSrRYoM1RmNR4IMUKyMjbsrtpqSHggApBADzpgB" +
-            "pJCk1QC50Zj+K5PzEYmQpABIG1/hAgyAlptYTym5iVJaRSUikmjzoMXLrgyjMOlhkjlwAIuY" +
-            "rjk4ge0RD3IKmdwqJ0GxmPwgg2EINBdIJmKIpiAIhCAYhm28kJFZkD4jh9waLRUcGd6iA+Ii" +
-            "BOHySzK4NPQgBBzghQbcjgGoAD2snjRgEieBzc2KimRgCXryojQognl6rMXDCRyRgJ7JkSQc" +
-            "KgnqBaLoDXIhh5V5sGQ4AR+oj7rpDetwAh5Al94wEBxSiXRUm2GogO1sjwMbrDnDp/RsiApQ" +
-            "Bt/QRxggigSwDlRFBBPYzgB6s1SrLD7BvV5QscR5nPxsHMiRqjgSK78QlVC5i1X+wZzBOFAk" +
-            "y75aMSRhSIhLMjlRtBXXgJ1aodBaEYghyJUVmqSC9KSz+sRaqQwc4YImDIDV8DJwOSkroZIQ" +
-            "hTXgYQhNCiipWM/FcxJ6fA6vyQql8AF0ekGzMyDuAVLvMSYFKab7SRBiOKb44ZcgoBf12I8F" +
-            "ubQVRC7jMqdVNQm0M6CMAQfMPCB5QS4UMadU4KF62yyrqAhEiZEYYbUjiZHYjI0Z4ZlHXY3s" +
-            "Goq1HLBGrSAYsA5CkYUVgY0EEheOkQATComghcNkwBEJGoCUCIk3oQNAAEMcodG68QKQnQo6" +
-            "eD3l2J6k1dOzSZGK2LM8EZcmGYhgmye8205EOT6nYov+W91VOdrVwIAc6ZOjTnEMs3K4SnA/" +
-            "WoECUSSMS5okVuDEBC2WSfq4mbWWkkKrjRBLJUMr67MVEiIMviIhIPECxeMWormSxAIeuHy1" +
-            "HCKUZ0AKAmQZnLSa6bIIlWkSHpK9G/rLjrWtAqqPA+C6+8mXaAoYYHKBKUWCBSHBBTIJHGhB" +
-            "ccMYSwMZFhwARHig4sqOwCyInU2XNxGX0pwnV3UAnFzZjSwCPpmZ4PyumRmCZyAKw+NDovjF" +
-            "BzqKK+GOXiCBQl2Iqb0aiSoFH6AEmjDU4NC8NOjIjYKBAUCnoUgDlAkOcuiJgugSzl0hLygB" +
-            "CbDIkamNfKoJEIqK6hEDGlj+DnrijlRjquabnF31N6jCz1DhFGGwC2AN1ru6Pj0SBgGkFcES" +
-            "jVBsDdWYq2AhIY9Dihs4r51pDRLqAQwQjc6Qq84IRcESA8TrlpM6qZvoUwtdJW9JP4CKHqIh" +
-            "FLecirDtjiYBj15wgO/QL1k4ARNYQByQBczMGA9JQeEKAvzgwARZkEXQukUwWPrIRmx8kNpK" +
-            "Dy6dl3HMUkxzwRV0gHPEoovppfAIKizqAwkSlIpAGVaVoOeYWqrwiOXgtXxKN49ysI3s3BVi" +
-            "ERKdkdhgIiWq4qklgYFIVHeyIURoEmwzm6qZriE4AUDYKPjiBUSQCYpYGVdAAkBgCaAQvdgQ" +
-            "F1f+WLOKkArCASLvcBIx+Efu4JPL2p5vY5laioqmwk83att/g1tN+apJNAD71ItY2LHsc51O" +
-            "3DgnKLkUHqxHmtwia0oe7ltJAtwdhqxF0jiJgGfdQCsEDQBfcWGOI47TWA3Do1ALzSEfgbVW" +
-            "SiwcMZ452ylhFLrNCg8J8hodTQYTSEcCutiRqYDcRZgD6AP8AEGy4xc33joFqRjZnVLZQo/+" +
-            "uVgXLB9CqJOQQYQNAQ/zkCh3ognt6RgcHQDt8WKSvdGVnZGwRQmzsZomySebaBkxYwGVwL3C" +
-            "IgixUc2aiI4BSM80QIKQkpY3rAkk4IXklB4HWzcvGYAm3U7L+g5UVQ/+JoEPzWMzf+yIDEsG" +
-            "+UG1ZEAXV9iRDtMSN2uS8Qhl4tvO7WySIyELumix5pMqg/MLYBUMVYG4TRmMObIrSAoNz0CM" +
-            "7xsN14kIWwmAXkGrbyazjTMzSTIWB3UNpZyVKittB02ywRriw+NELzO8VlKik9o5NCMaIKKE" +
-            "hcgu782RmeGTld1Oz6pXtPuYE+EeWSjHtwaRLWWQB2kYa5omOZZMaUKYJu2mBbmXC4hGE0QC" +
-            "MpiXacpiBroaOF3AAegDLx4nEziP7bCI78Ag7ggPfgxvzFIKk/WahvhrjtCSOdjIgciNxeMk" +
-            "YCshKmROREAJ6dkviXISWUAClogpZq4AQGD+tVTo46vAwVpKBgH5Nu+4GpmwmiNp2m+TayTw" +
-            "qDSgp9gglN5IAx3o1xhB71pymZZpElSLiwWIKmmulPm08fuEOF/1z7roI7xSh8mAHWEQBtoB" +
-            "BV2JpGehlYLq4d3423uG3MFyghuAnRi2jEdaJIwTBSfvFXwuKBYOgMsuqC6aCh7goForwhya" +
-            "pbTxOSKBy9igirD1Abx0AKVARuBau4/xy9/N3WwU0oCJbvyQJmUsvWyqpmKyJiHAj3vZ7iC4" +
-            "0t46EaRDmXebg00QlFvaDpoQie6YrgDSgXiEt1qiR+GI4BTJiqs5gY6YHiBK6gHzuVY/N3cz" +
-            "myHYm6qoAHBYQ8D+QYmsoahdw8dUWAQ6aBK5Ttq0MYHRTAOMICmJ4iGakYCzA4kEchKlKxPo" +
-            "UoqWoJsaCQ9ZngP1cKfedpL50grOqgkvaL73PD6jyoWuWPd6WHeuiIBciIB6EAuzCAuz4Io0" +
-            "wnd6d6o0Mr6zeLHowyRfuWdjwdCNE40jr7I8qgwo74x7xgAQvQEbViwgmdyCknKCQGKGaBpw" +
-            "0ZIWzZFvWUI2B4mjiN7twVfwSN+T4UGPEW51CpmgwA8XoLqvM/QK8NISVEaFSZiCvQ9iCIJA" +
-            "88DIxDTuCSeP4CFPc4GaCJmiy63nyHQ7Dw+lKIJbEpdUO89x700gEtsYKRqZOKmgjYr+VIAB" +
-            "JcIK3xiAlpQKLCEEoHpliTqjqciTIeCFLFgE3zAKi0AUXpABj0CCJjBlUjMXGPEYV0CEJvDI" +
-            "GVlB7ySqo+gIrUgDHwCCOn+OWzqwvD+SXsCB6XIzr3GFf0PEtph3dh+Lo8r3r0D9EzuLScH3" +
-            "1rcEfF+cfmi+pRqLqIKCS8od84vKswqW3OkMpTwrG3uktprhEB2SwRIaweqWAPjyENqgKemW" +
-            "//MgSnB+j78J0EWzHPGCjZQKv04RONUsiJbqMZZO4iIu+vk6JOomZKIQEsR5+lgQJAgEiAF6" +
-            "+K//IA0K9ug6j+iSkIC3EgAIOj6SDUg2pxciJD7o0EmWrKH+j14O59A54WWOq14He6UykSzV" +
-            "CVkae130IiEVCy9pnh30ksrVEC9fXA1Ik4Bjry9pJPgYoNIHIo7kyKUa8qUXIVlp6Ayj0wup" +
-            "CRMwKc5Jk0qIkGQSeskihIhFGh8RkQ4jJGFOBYauvLiS5UNCkVRO08wBRIhkWFk1WWR05epE" +
-            "ql5g5/hIhXGAj029+MSy5DgWnwWW6tWLBflxLMmW1cXi3OizukbqKlXiTFrNvs+VQEGp1Ii0" +
-            "KDVQGu3bB8pJbDWixIjhogaUGpsBWENRowFKADXK1QToUQkKlH3Hl1MP4ASDqB5OxGD48qW7" +
-            "GCdcxmPgIp43l95ivIT/Mv7Ldi/+XmKW/5IgjZgvQ7jwSCBf5U5pDJHGTsk4gFNgJ+iQCkHJ" +
-            "eOQgHSYgQgcS5BxAhgtkVEgOEosMRWEF5JBBRhCLLEJGH0IEQQ4gQQhhIlYkmogEEOQQotCN" +
-            "ychCwhwPnbAQHWk8NAdhFSSj0UNHzmGYR4ikkkYJvZx11hwDVDlAR72cMERgXjy1lUryEbiT" +
-            "TGms5UoqA/QyhBhD4KCRA4uIJIFVsszhxYS9uIIIL4TcyQIhhAxQxCIC4FBEMkAAQQdMrtAx" +
-            "AE+8HDCHBOQMU4FgaBqUhgNIODUHOUAcqSMOWD51wgkkDXCgF8kQsslGiblC51ObWNIYrpao" +
-            "M1k9fDz+R1ol+0ChAbGgBBDsPsyp4YQaPYjCim7NOjGtctYl9xsr3/WgBgbazcfFDTyIIRsU" +
-            "XIBSiTDJKleJbMoBB0qywEX7W3LbQgFKD83doB5v036HwbRizADfdglMy4NRCYibn07sDZFA" +
-            "m1/IdB0XMSVw31pe+KflSQNYOVKPc6TaS0EeM0QHDjj0kRYdLvTRsgsUkuNyBQcEAcgiQbjA" +
-            "yyIqlrgIMSYCIkQgOfNMh4WEVMDLkojgkIwPQDw1hwNbPcSRQMkgYkJEcqUy1hwsfISRK0eS" +
-            "3FFBB1HqQ0ZptNpLAskI+EybbruUinwDWuklIsm4MkegQUlgAh0HLSKq24D+85gM0YEhIcRd" +
-            "Q7QlKFeERMTUBXLPIQsdIiHFCx2pLNLEXVqTUzhYqRz4NyIYpQIIEGyngoiaMXkBgyswpJG2" +
-            "ZZVYdms/u9bTD7rAvgZsurcFoME+ojixrXLTbsvKtMMtC8oX3G3rxBc8cJH9wDOwx0VplbDS" +
-            "Q2uqNdKaOtCR1pyyzQI3HPSiDHdbeAATzB0XPZjnXsCe553v5aeA6PFPm2QiBh78Ryb68Y5M" +
-            "wjSrjASGZE+RCMlOoCZUecQBoQtUH1ZGjgr0YRFIIFEfkECIEZHjZ8MgRhBiuAietfACL+oZ" +
-            "EFZUgUUQgkKd6wqsGEKyCjjJBw440gBk0bpeDOT+ISg7AeBGshUJqOkjqypIKnAgkjupyUs5" +
-            "8UtGLkaSZwxBIwMQF2FcERZCPGkmYtnTi6S0EFlI4CiEMAFFsiCAuzBRIFshAzk0Qoam6IkO" +
-            "FWCjF07AkK8JIQkN6Rk5EJEGJHWJMIExZOFchQSDSEACf6vKX3CXkYZkJhakUYc6+tGYXJiy" +
-            "EZLJRS5uZZlGGOB4pBnDaIwHLGCNgTSsQJcahKGc4iwHFNBSA7qg4JhKTMt9p4SCMCqhgedA" +
-            "hzWgYE1zjHmbfBnzOtKaVrfO8y9QYKBfTphBOe2zH96kMwEQlIk7hyBPibEHYmLwzxdYIAGV" +
-            "XHAjJ9jKBbFYEAgxxAT+OGBICPtwIw5Z6AAuOAA5TPQzE5EoCGQAwgxLRLQLLGIYw6iQEOhA" +
-            "iEWpbpO9cICdemFIqOlldkcUEiIG8reBOKBrZVMTYRyQiicR5AQd9EsyiqARkySABRwZgicn" +
-            "6YVnlC0NJ+gDOarylIZcpALgYKJHgxI3chzJUg6gCzn6hDdQmUAChLChlejAC0AwCk2yeAkh" +
-            "SrEIOvShFEnghUOS0iUv2IkmSnsKIWxkAg1CTTD30chWGoIRwNEBV5YZQ2diUQ9LjAE19YgA" +
-            "H/ggy9eoo5fPcc4YpAMsU5LGAMDSAHX28ZzfLEcY0HmtMPphiUYkR5ee3eX7mHMtViQHWk7+" +
-            "kBcryHm+e5nnntlLT28I5r8e3DM/7sxe9uTpznjOxws80M+AvJMA2wHUqE8pwpJOQiSzaXCn" +
-            "rpqQjkTKkBFiiAw7pOgJMZQzMrzoADlzwQVsNjQTLUIZizjADgGctAGw1QddCYzqGoSIoHDk" +
-            "IQZmFIV0YLZkSDgwSzKIx3BgglTo5SMSONJFNIK3s0gsJiQrEKXQAjoWDIEqc0ACIMiRBhac" +
-            "4JAcwahBCCEEJAxAjRSykwkO5wNCeBQJKknFIXsUWI81YQICeJQseHE6jBBOSnSwSy9M4AKF" +
-            "zGHDis1IQWhAGMX8KFCZnEMJOGPKWIxhDJ+hTCyUUxnSxKI2bB7+TS9JC53PNA+ZtwSW+2TT" +
-            "A2FRpzincU0llqmdX51yfbtEZmuY81tqKYe39LqmbsUjnnKWE53bed5wxAPdEttHnRErIAT9" +
-            "I582JbC6ZqKUlDIiAVRxJFWpGuhBUbbCFIbQBRaKIQyBtogLkIgYxAAEIFAkohGN7kXD4IUK" +
-            "y0IIZCPtdLKo0UcIcaSvOYSrWmMjBh1iIMQAlkhEklJgPLI5jsjFKR9Zi9uwlBEdPMU7vRAQ" +
-            "kukAA8nRgQRqIsQBIDUQOmxikjZ6SBKSUAE63Wh1FUBCmioghWGoDWmpmDUg5YKVvhHCRGx0" +
-            "FCHe5AMeguQAQgCClYDiRyZ6DCQ+eNP+Q15FELEUzgcnSIZneyka0iyzWexSQ2PWRdrOusYA" +
-            "6VJDL4vTGte8xs/LeY50jsMu0hRrNZqtRA+cQxrVuGbpp2GtsYZjHe1c0wn0086kAcab7G1H" +
-            "DM+4jqgxUM78zEdidHsGPBWo6vlIICbZ05iqv6snCXiXvFA8yEdQRtdOvYwOB5CyhVg4oiDY" +
-            "rEQW/W8MHWpf+5YIo4DgxTACwZBA2CjGQwZwen3QIzrE1AR+8sGDOiKQ0G1tT+KWSNoa4qDZ" +
-            "pYrBWimIUU+garq4DSc70cgJCuSUAcDYT17iUDIAkYSsGPICSDAByYaC5Cw0ASOPu4BUenHI" +
-            "IwlhHBUYAB3+hMDRgyQECdlfRN9cgBUHoH8ohWkV5RRJFKSQQxYEqVDrVIm5acQc9E6w3JJk" +
-            "WUKwIJ0ojMGtRItqlU9n5NJqCQNwkEYEbp0tvYbXQV3XtYaiOcfx1FJpHMdruYsoAEfWQY8T" +
-            "HBMrnE/WeVoCdEf2GMwXDMz3qF16iI99ONDDNJeY0JN33JPt+EdKTNJQnYWUTI0ZSUQWDUBU" +
-            "PMSGrAg59AEZ0JULmNABKErQkIGJXICvQRQL2RcQKEMLVYAQ2MgwHADSBEHnWAgOTAgJ6IAs" +
-            "xAxD+N8AaMijpIK2YYmBSADSJEMFYJ9HBAaFbY5clA0bOYC5mdisIdEczEQy2Af+DFhQGRUE" +
-            "QqjQrFCE5XwOHTgAOSRBExAFki2CQfBCFvACIvRBEgyDqPTIBfACHybBBUyIEEjBIuyUCplU" +
-            "MmwhUjSBAOQiVGEZUBmESvkJDOCAR90RhdzRQC3YeNnJHCACIZjWLLWZNFlCBGhACybarWQd" +
-            "MmlWnjnGGEBTME2HZoXGrTDaNHGgsHjda1GTJfABtzjB0pGWNEkTa+nWtmjT/DSHdvzG82wH" +
-            "c6UHdK0Hb3BHd5QHeCDkUqnTEJBRcz3D38nHMwhIPqnRJCHhU7DAoIDZEpKMTpmAAzwc0rwM" +
-            "EgRBCoWIh2Rhi+hM0MSQFy4C6UVUIADCMLRQn1jKf13+QKBAWx1anyCSgQ6UwI04RSqQw4Yl" +
-            "iQmQAw4UBkWonFwgQqc4SFQw4gnQhJXR2yXpgAQEhT7NmEVgEFuIwSSpEeCIzMmIRBo0pUEM" +
-            "AwcMg+rRweH4X0cNxDBwX+HMQRDkJA4gAUeRwCLYQRZYjizczAF0FfwlQygKgQ88jjOcjh8a" +
-            "4zRGRAmwiA/QoRcahFzIAiOWDUNMiI0YEed4FgUmSz3kwhgAh2TFWXDxHGWhhiWopp8FS7pY" +
-            "gir5jtdxnWuYEmvsUmvci2NwC/psHQZyYADcyzXdRnCZ3W9tj3bUS9ZlT3gwzNoN4XZQZHvM" +
-            "AKtBDBfMIHTl4Hy43Q/i01b+CFVKdCQY0YlHogpIMIgOEE4FHBRDNRQgiYiIWFSJ/FrOxNCK" +
-            "rMgByAAx2EgQHJKU0cEgnQ4vkAFQeEjneIqrpEVXpEV6hQwOsJEPnA4ieMFCPIQD0J/W9IgO" +
-            "aNHNbUQZYYQO9N691YQY6AmRuAIXXITkMKaffNhBGYR9hQ4SDMNcpcEmLAJbIYEANAHErVAO" +
-            "HUlfBkoSSAPkEEIgCAAbqg4gTAodSAEHAEGQSYEUaBsdmKG2LcWjuIorQs0OkYBBUGPfaEkJ" +
-            "eISj1MhImUjfcJhpRBOg9ZwaLFOimdI+PKAwGMA82kYj8EEu8MFnOEYPBOo+BMAC5BJjNMJl" +
-            "PIb+ZingcWjAMpkHuTwHKDgaphZHAEALvixLczxPs/QAOTkPpyUkF5ARARnQcbndM9iTdfIG" +
-            "4CWkO+UNdeaTSnjkWV7QjBmVX/SIx9xcMhzUQSGBC2wZC2XeImSIiORMhVBeEAwoGSSb0fDC" +
-            "WjneUBACL7ghRh0AwI1QQmhbW7iAg5TkQ5DDQqyeDjjAYNGBl7DVJxLE12DikkDRUyAR3twb" +
-            "XSSDR26ETPSCDshHlZDEU0xImnAZHTSBENCOSvUX0jSBDIDDlV2AMviED4wpISTBBMzVMEyc" +
-            "nyQDAIKKAACCMk6AHSxCg3oI7aTQJuFARyFBjXFUYAxZmnKEW/TIy9D+jkdhaUQBgVdgCXDK" +
-            "Bmxy453GQnIYHdI5BmdEQD2oQwDEwqDiyq5YAjLpyq7k0q0okyUsQGZZBmSwC3RwLRQkgHP8" +
-            "BnQM2m8GQHJeE6cqJ6k+T3Y8Tzm9Bw1yB61CV9sxjHd0B3L5ndtdZ3X1wnoAHoGYhHeNhBeA" +
-            "172FpIU5RN84DdIgQQVQIYe0yH8NhRf+DBkETdFQHiDsUCTJQFmE1VMCQVNMmxuSACD1QYZE" +
-            "SMgRiUgNhER8hKcECtSQqQ5QCMgeEYMMHK8GRtlkRDKwxV4UQavkqw/YBMk4yJr0wtMg2QVU" +
-            "wEFkKBmAwwDwQhL0UBPYwZYSSagIyiK0Ylf+ZEEiCEBaAIGULYT6DaIQ3EETCIQMBONeVgAR" +
-            "gaIAXAAdAIEUFKaEAEEFvIWXOMhBEI5bVMClOMm0qiJQkADrFUYj3NYBemP0sMttiMehOkY0" +
-            "ecY+NEb7VIIBqAFjYIAyqe1siUGiMRdkhIcGgIIYvIu7OEa5iAF09JbZ7qMKZh2+NIfa9kC3" +
-            "mIf/iAEPG1Bv9AB3ekd0VcwX4F1vsIl+UKTEwMczPMN44B17NNAzdJJ87FPZaNDi9oJQ0Zu4" +
-            "xadBoSSFuIwLWNTKVICGDIWHbG60YgUcDwPOeOEwuIAAFKgQlAUdFGiFQFRgLUr+GolYaJsJ" +
-            "eIpT9FCVzcGbIEH+yxIOHjlE6FDE2FCEhbmCDuyEYXCKhcnHU3gJ9j1Ji2EJRWySqwBSRSCF" +
-            "qCCCEGysxA6DEABCt80VEmTBBOCvYDZBKdhF+sXOAdxBGVxh+CbB9RXyFRJOHrNeE0jBjvVB" +
-            "IFyAqDTJRiQDL2DKQ8QO660VHjbwJane11RCL0WgzmljJQxHJcQGcECLNwJH+gBdBLiGOhiA" +
-            "KBhALNijJWSdJUBBC1PtF1hGAnCBAfSAFzhBLIBC/4DC1kIBtShn2BmLbCSn2JFdcrxLvpAq" +
-            "c6lH//BLQjbXd/zt4BZQrWa0dzBxBLnNgAgGWPjFBenJBaF02UTzqshnrlWAr7XMhbj+F4lU" +
-            "FOXBMVYcgwDkcfTyghDwAjG8coXMVWAdESKYENL0ybSxVR+wYQUoUehojdYonkPIws3pVJTO" +
-            "TsoERTKkio4UhJBIhZOwxT7FIQswhJkQIPYhhZIEzkGkgituTSDwghLRFw+JRRMQKRCUQRnI" +
-            "gCw0gSgCAmIAwTjciDMoQvaGbxYQhUh5SI6RTlLbwV3RZSnkZFSoTGE8hJPURRag7OZY24RQ" +
-            "I/Ypsiwohg9RBKI1HbA4hgZoxxigljC4mTpagihAxzc2Rg9ACz7viho0giVwAQbwQbkEwD2L" +
-            "AWe83T3TMxR0CwhTLW8oxwpe0/2UnTGR6qcWBw7jy/NoR7f+lEdCTst5OJdxLSQQ0s169KB8" +
-            "QMx/uIJQEV7eGG+mrEURONU/TZKaeIxDRAXKmIBMqwxd/SddNZ6v9QGwqUgSlIIAHEP4ntyL" +
-            "AMEFRO/SiNTDKc3RaCsP0V8PeQUQXB8bogz6vRV6YfWB6cDWUJjuZVuXfXIiDS9XaIpRtbVH" +
-            "qDULGAaeHJxEIEKUygIgdYXCbtKLtSI5rHISYNQd3MGOFXIpXMDMcIAdlGEZdAIHKMQIjSkO" +
-            "vIhBCQEHCAEOBEISCMDpkGT9zkEfAMHTZOEiRAUvNAEgAMbXeEXhUKPl4IBdQA36NoQrqJZo" +
-            "/YoB5EI9gG1ohMbUATc9Vm09J9r+bJiSE1QCHyy6JXCPJRwHcDuBF9ASb9TzM/QA1crdnVLt" +
-            "d+KLs5DdQGbd8yiPeLBGpTVL9JDqRZuHPLETBkTk2tXTPeGdUVBnFFPndybQPnlBWLqNUkkJ" +
-            "Py2ud3kRWDMisYZQYFnIzKQk0rgMTeNnDGl5EnCAALgyjHBIzzDyshKOG4qUKjJySO1xyDnE" +
-            "LgL4CRBCH3gQgklEHySJ/xHGND4FDtBbRMQMVbOFl7z7j9CbVGmNuxPE5ojUvWWoLJjAAXy2" +
-            "XiACj6JrXh5OYieBMgQWVgABIgCBKHYcBJxsRA22kww5DzXBHURmKEoB6VxZjezfASDBUwoB" +
-            "myflkIb+zoUamNoEikd8rw8ogxz730hZzhxQXT62tq5EhwH0Eiq1tgGMiwYQKr60z29k3Wv0" +
-            "TyOsx2/0RsXAAGqlwRcw0xAgU5uYi2WM7TOEqnZMdKjusNmFnaBx96ivoHArZLf4j3nEOpsU" +
-            "0K1jgKoljH8YhdtpjK/Dm19wsp4sVRHUtysYlUn8hZYcCarEYVUTwpYxVIUEFsqwJInYF9C8" +
-            "iJZjxf0KAZiv+X8dACCo0AU0RYeMkAMcqEAkRccRQhA8pbemK4OolA4octqkQh/0jU9FCA4Y" +
-            "4vKu3osFLFWljVNKRGnLAhHRDmMNROn7ibbWCIOYSKhkQRmM4gEAowkhAjH+jGwFJIEiXCkg" +
-            "lMEElAIZFLIoAgEgcEAZNEUp6IEUsDxgXkAQDERYaRsxfHkPCUAWDMOCkYG3qglAFMGBKFUq" +
-            "IIvIyZK16AK5ZHQW8ULkI1mqZBc1VNK4sVIjSxEMQFGjrpKwMRk1knQCKlYlNaBYucSQQAwX" +
-            "KFDEOFHzJY0aJwm8eCniqocYV0OgJGCBoaiYHqAsWUo6RFQPq0+fqnkJSiuoq1rVBOB6lYsT" +
-            "pz24oOWy1klRtBgwiBHjhYsYmkO80AQqV64Xu3K/JEiQJmivNL16ufLSS4KXw4wNs5CQJtmc" +
-            "OakGJOs1AEevZDgIVSDXB4kL03T60MHRxwU5cmT+FjURMvuCMyGLSh3jlURIn9hA6PBahCNZ" +
-            "BV4OZNEh06fCIiCI6CBBUkE1EEI4AC1HkgyRiV4mTJxAdEIHjgGIetGpjOOyjlTbkzmQ0GuO" +
-            "BAc+ejmg0wtzmlT7T6BOs/RcUE8W4AYgZBghyFGPENd8AEKAJl5roowskHAAiFIEcK6MMgAh" +
-            "J4lREhkmOgE4kAGJJBIRAAgh7EikCToIaWIYQFwwgYwkFqHDBSGaQKLGO6QYLQgheEGihFRM" +
-            "oAOczIYBro9hmgDEBEQAGaYCE1JJLpkSLLsoFXVIqgSKRjQgKQJLzKzEgDEa6SjOODXoQYOM" +
-            "NBBGpK7U0FMDrUTiQg3+tL7AoK0ezMKgLqfMEiMAJ/jgQ41nEkC0LSdWYqWtAALogVOxQHkU" +
-            "rE7fEgOUQz29yquiFK1Jry/qoukZL774Yogh+PJiiFqDKkwCCVxJw5XGvHAFsWPnKGIOY13R" +
-            "QTMumXTAgSZRY82FCkhDgo7ooiODnEVuu6CJC45JgpcLzF2Egwt4IYdBQoBoEDYkUsHhgEUI" +
-            "MeG1Bw8YDREk+sCBHP0qSI+cOXDYj6JeCEHNARyQQDgZHQbwYgAHBgDPBFk8I0QHL07gj5BU" +
-            "epFlDv7+K/AEGk1IBolFDiDkoWGGIYicCypoToom8HUB3WEIEYKDJGhOBIILCFEGyCT7kEL+" +
-            "CiEqmGCHRGLOIosmnsOBF15CSyKMJCCyo4wL6BhGCi1loYgQmYtrEBF1xwktNpwvpgMREioa" +
-            "wIc5BjgQCAfG6CiljSypRx2RGimzIw2g4EijxqHICFCw/gwACrE4XdUrTJ0o61CxehDFEkmf" +
-            "OevQQ0E59ak9xYKCK7GqYuoqsqDA1NLO+cpdjC8o/UIuSvXCKwHh8aLVCxaOPz4VV4aajz8W" +
-            "EBsAsZMH4NuB71qGbtttmaugwG0brMDbbwGZkBchjllEgNtmI4eQrckRzQUf9HUfkAMOKI6X" +
-            "Aps8AKIeCZEaMtChSRcxDHGYVBmCTKsgTDrBCbzjABh8RzPsaVn+UJzlGQN1ZgDqoUMQGpQM" +
-            "WRAiZnuDl7aGkYRA2A03QiAEEoSQhUCQQwqdsINzAlEKDizibaWAWiASkQgGNWECWQBEdKj0" +
-            "nKDx6AB2+IMdeAGIY5QCEBXwgWsCNgeI0GEOfUiCuSAiBQGQIxWEAMTaFtgy7kAoGd8ahg80" +
-            "ogaONKIR9WCTVhynkUaAwnVmuokcXfcnOTYCcpcLFVoshQFSkcorLwnAoGJhiR4Ua1W2S53t" +
-            "BrW5UaXOKpa7CqYGdTlVpYUvjboVYIYwPFqJ4Rm1wgDv+DI8vLCgYos5FmQSo6xkGQsxD9SB" +
-            "CcoTHw+qBgctW00AS0MHcpyxAlo6wDD+yBEEAVxgEUm4ABmEIIB7EYMYr1nEEQkxQBMIDAmu" +
-            "cR8dKhAEJPgvGctBxLcaBEzNJCNfshhAKvrwkFQ4IBlFuIjeKMMxfhYBMUXwwX4cQDLEPCQI" +
-            "F2kQkw5yxv+4pjiLWMQI3XWBiCFiNlm6QyeEcBAOlMGFYRyGDMpwhzEOI0b4ooMUZRC/Ukwg" +
-            "EEO6A9eyoIgyDDA61uEiEiRCByEQrQ/KEEAWgAaEJK2NIk1SyAnnIKIZtfE2dGicmyqBEih8" +
-            "pBE9kGMeO3KTOHIqcmoQSeP2ESqwvARRnqukGkRhKq864ZE9UEcsAvCrsqTFLJ16FBcexcdV" +
-            "QaGTWeHKSrL+wgpOHkouuONCoeQClF7hJZV+8csXdBUUyR5PB9M71gl4eUuKHasiDkBEMvrQ" +
-            "nWJSCwfEaa2PpHOtfln0IFEaKkNKcYEX9aiZDeoDNgvkmvcF4QBIENhqltmglx7guPrSgXJa" +
-            "th/3pKdJvyQH/bhUEV9+JhXiaVZ40lMQOhiLENJzADn61YeS+WsRxziAvi7AIDqUABA2CpoY" +
-            "m3kHCIwRETVikDKkcEMgQGAUHIiZDGwEBBMQwhlJAOodtnEOcvCCA9VYhPhoKzN3AeJtYnxh" +
-            "E+yQBNIs6IyIGKFoBCYEK3FUACb6FoUuQojThjWrlQBFJdQRFZf0oCN8dElYuOL+x8ft449n" +
-            "jVzqfIIpuOSkLrb7JCu86hUuRAoUxpKLVQ4LKkUFQFOeEoVXFGvWUH2uU6pDixMMpbua/G4u" +
-            "LCBMUEpXl9IFRQxDmFVhjsXLAd3SM70YSsjykz1p6edhxdQPl3BQgQdVQBnqvFn8GHQkFavr" +
-            "Ni9apnMIERFtKUdIdDgAIHAQiEWUM9HkMAHM+sCLIKDTBFq8Dh100LD8zEEWrfZBd5PBGfTg" +
-            "xxXLS4/0EDEACcxBKA9LEBBy/RA64KyNMcOOAAJRgdXEd1u/IYeFsoCQ2PDIR1Y7iCISIepA" +
-            "EKkJMq5mzJoAAWnwYhh3UIQA1vbNC3AYhgzaTRkolIT+O5QhCLI43zCE1D8yXGQRQCNEEuwg" +
-            "gJxRyYXgaNi2lvcQOQKScRmJSu16cBONN86satBA4kiCZEB1JBYGqJyUSenksYTKzGh2giVi" +
-            "MZdeeA5RlwRdWk7F15VwCsuvO9Xp0IwWvnwBLaXb3VwmSxi9HH13gfHCM4pnyz67Yg4n4Jsr" +
-            "BkDQxGxGM3xzFnguErCLIII5Mk5NvPqg3Amn2jm7KbjQgkAGIIRINJ02p0UvTAgQqvN8SCDD" +
-            "MV7jWwK+jDSdgU6sTeCDaZm6M3PwwQni04sTpEICufZCMoK1dRM4wD8mcMUJyCGdPjjguTla" +
-            "bsP68ExlJAdI5EBpi4VzNaD+vZRnQMhCGaRwEGdAwEYv2xkvgHCHdZPBGYm4AyCyFAisrU1c" +
-            "7YJRGQIxjDLYIQtYOga1kxP6FwYiC0II2x2GEZswCAEHDqjAp6njg4NujwxkYNxVr+oRmIdF" +
-            "K0Tmk54qEZUFVOKRfNRKjmHOdUABLuDCCXwHUXoAygYlLZ6iLbgAA2IhFnrAMLAsLhCFVFAl" +
-            "VcoMyR6pzDzlrxBp6ITu6MzCd2ZFMmjlGeqCsngnsxJgMupsCAhKMuZjAKBHek6G60KmuyCP" +
-            "OH6pInygtcrvtdwnfCrAAd5nbVrs06CGIaBGOFyDDNIrCcGnQdynm3xjOswpCNKOGGgkfMwD" +
-            "IaT+Y/MSz24uIhly5LQgrz5OoDOSwQSKwDtYoF6wDgdkobVOYABcYGSUYRHyCRHYDUd8QO9G" +
-            "jQw4AGvAZWeAhgxKgWek72xWBALAr5xSCJpAzBkAIQuCqAmaSQrWRRn+JRBqKgjKYAKg6RxI" +
-            "JPyaoMV6JDrIQcFcwJpopAwgwMFYCvxeKEqg40qiwwF8AwiQ4F+G4QIeB5DEanRcpwf26P0y" +
-            "B48WwBIaocmwIgBigQ/UQQ1mYgEfUAxeSa5EoSw+6VGELgK5ICjcoikQxQLp6sy8gstqLpO6" +
-            "opIQcARLxXciqy96hSb+giYmK3mIxRWgx89YgJcgTwdChgUgLxWc5TP+3nAOkmFl3tB73lA/" +
-            "ZCH07KdhkCAIKgCGtGQRiOG3ZsN7AqHT0q4PfisY14YcXEBgtG0RgqBHWgMNESKayM4F6Cl+" +
-            "/OdbcIAiEIE9FC9j3tDUHiJ6HFK68EMy/KlBiqAEWiYVXON+KCIIAgGEXgSEAmGkgMYFFsEZ" +
-            "8i3EiEEIPuoCDgAImsAZxgEYYUQIgGgdEiEipOAOeAQckED5GkQIpKAUlGEYFKETxsguecR9" +
-            "HoQMGmaoFA3hssA1UioJjGMYL+whqKMCDqIJys1dOmRtAGERzCqOAGWr2KRTGIcrvkoANcAS" +
-            "1KEovMCrvEoNPEINkC4neqBVrqwmPslQEKn+Lb6gGicpDS4FU9aCAdui5TrnVHyuU3zzNdFC" +
-            "U5hCLhSlUeRMle5szlrpVvjRsvwxDeZjIH8lB7lkAJyFn+6jtd7wDbskmBKGDmQBYKCjAt4p" +
-            "Z3xANJjjAEDoNpZJCK5pa3KyXwIoZ5YJXt4JEMqJNQAh7XqkD/5GXxChAkrKIVzAuAKGEPjp" +
-            "unwEgiyDDhxAixiSZDSj8jrDAUIGNe6JOlLDboIA1F6GDMpJAJxBAGSgmWTDfezSRqqBAaCv" +
-            "mrLANvqAGBLhbJJgG0ZhXCZARkcSEIghC8SSpZwBCIYhEUZBGl6GA6Sh9u5FCIJxqMgmEMRG" +
-            "S1ikDICADAJBAKL+6DrKSVti0Rn8TgoSIQtM8gKyADjoiRAeh3HeVMc655FuggPFohEWAK++" +
-            "YCWSTDUlZS4kQC7SIjTj6hkQkAGZAi6KIgInqQjWwioS1ZIOaXZMpcxARVReMy1kpzdhcy3i" +
-            "IgHujDp1ZbOQJyiQ51SZxzEkYABOgAVYINke6GR6bZweYvM0Y1ouojwLRBYqQCHipyLDhxew" +
-            "5RXLiRhA6GWiqTX88EGuhRgWgafK6VviTlsuLPVUYzmaY/BWAwlM4CBeZns+Azy2o2EWDD08" +
-            "w0LxKRmgR3no4D8WoWUgjxBEDTnOKBkA4Tao43xs450ks+AmIMSqKREmoBSgSQCkQCz+y6AT" +
-            "SqQUGGAUjMhdkqAUoqgU8O0AEhYCFkEGYsTC1in8QgoQAizuICARkmCZ/tU/1QcIRCOcVKyc" +
-            "JPOMhCAMck9E7kDCCBRf2MZNr8pMAOniMIVnw+ImUjP/YkENgMKSeiAWFgAKeMIL0CwADCAC" +
-            "76oRfGLJ4qImerMuqnEu0sAp6oIBsSwBNUmtnsIrYKJT1CAtHtAqPBUu1FY512JW7CLq8gJX" +
-            "ioDOhCcoGgNYmAd5cClkpMeXnAURnEUW9ukhC42AlAk1RqYPCMEH+mvgOA1egCBKuwnv5PWI" +
-            "omNtBmg6PgiEBuhbKgAQQOgAejJ+lOMAmsMEUgM0SoMcBoL+C7dDP+agSRDB/PSDDiBoP0Qo" +
-            "GejHWHDgMEKUDqrH0x53nZSJHKgEISCCR9hNjBhCCiaAaIBATaVA+ezADoRgGCCAG7qBZ7Ig" +
-            "wMaIFJMAEC5AEUbBGdRnG1QKEGRgGBox9I7hHJogCMIgEphBAILADiLBDqwjS4S1O0bUBfrg" +
-            "AsRIOLI3CchgGCYgDPDl74APW3zgjHwAhorRrK4qKlhTDMTscvpPLPJvj7jxrF5CHfqBNRnD" +
-            "VPgA5oQhdf6orbjxL7jRd7b2brnRKjLwklDlUjxFG6sCASeVOBeFKRIgViLrOU01KKKOWO5W" +
-            "iaVOMbSOP6yOb84QB+plnFrmYXb+MTmAQ9HoYBMapiKtqFsbxKKgqeAuTFpdo0fIgRigSTnI" +
-            "4F/8royFADYaBiH6oI5dIAiKiQxs8pu0EjqMC3ZRIxW85zynpbMG4AjbqF1Dpgg85j9wIJh0" +
-            "4LcICCH04zLhKZoYJI85QAiCoAk8MQiEowl449og4GyyoBNAahgEwA7CgGdE5PfsYBTKYBgT" +
-            "QQHKAGYkc33gJQtKQUIYoBOyrQwioRMoJIa8UGaQ4H5Cb3u3VAoi4WyEYAJqUTRk4Fm5RkcA" +
-            "YUuHKpiJoQzECnL8KCoawVBuAlReRyQqIRbU4VECoB+iIhb6oR9Kcz5OQAwMABqHoBdgwAte" +
-            "qSy4UVH+1gJrrSICxQAxEKkomszJeFMt2DZVigLNNJUBV4Uef8fo7gwv3mwxJCA6xcBVCaOV" +
-            "egUx5kOhogcxbNVZnIU4GFI17K5X9Q5yIeSFTAAcmmON4wdcnlUtgSBepCMKvyWkyEDRRqNf" +
-            "XspbEEJ8Ro9G/ifRmAN2D8KcSgMNU2Oc7EU9+qAgEKE7CoRhcGA+HjI0woNCdUAWLhMQSOC8" +
-            "LsDgsuSZnGYYgK8UrKlBBGACZsMOGOBphGD61udbBEAA6ksRtBcQJkABIEDUYqjFArQUnCH8" +
-            "fjTbWEQBqkEGiIErD4BrtNJE8liFGIwBEk5jE6Ea2uUreUEw++BeyeDUvsj+OfSNA8ggE8dZ" +
-            "T/7IEvbvlcyKFXiOrTKuH7qKj+KkJdSBah8LWNQgAjGgF8zDLwJgJvyCAFmFLxAaehCpLlbl" +
-            "UXYYUjMQK9RWbWeHoeOMGyXLd7ygMYqABW6lV3qlMZDnvNPgzVyBeXrpO/qsCB7oIcOTgsoT" +
-            "OITEdOlAZYG1SbZGOWRAWAvujLLDNZpDNIKgwWGIGMopOH7r+siAC5H6IPLYD1VSXwpR2rRl" +
-            "Nd4JnZ7VJGm1i2RmWxJNM3pSuXU3gyr5IlDDQIpDMK+oXSpABiYEf6rJmka3weore+s3wOwg" +
-            "EFT2GKTgWUth3+BXERQBQxbBaXbm2sqgsoXA+AL+ARDKQAEUwaKcAd+ABhGGYYYIwcgZhAwm" +
-            "IEfby/iS4CCm6MJcgAzaOtOchkFYREaAwDAPQCs3wqz2Aa6gYIXT9jdB6SlE4SUqgQ/w6szM" +
-            "4rFyhTFyrBKOp2vFgHG4YFbAVlAbixznI4YjtXPIwjgVxSpqoi1kxynUMQSX7GvTG+kwCzHK" +
-            "m1joTDHM+72bGCn9bDPy0M8GgFUlADO4jngHQjqsQzTM80Hs5n1kwRdVsgKIYYBUDQh+JF7C" +
-            "yVuoA3aDgBjY5Wa8JQgI2IWCAPCy40aZ65s8bYD2MKldo7WkjYAXN+22NWFIz++aJKEMqFZd" +
-            "Bl7Nsw9WTWCeo2yQ5Gb+gGSGlNcRk2ACnIEXknwbkCo2skDhDPFg201Gh5EDUrlK1KUMIjYR" +
-            "OmECqomVsYZix0VbMlFKn/xpFgECOkFLL8AOIACpAuEYjkEUpSOHyqmBk4AYkoCVs4AM0u0O" +
-            "ELH2hGTPNU4rLo5WwAI1vQrK9oFMnEBYgsI6CcMsEoAxqhEUiK6dc8wAzKIIBPU1R90q+GAB" +
-            "JskvsBZsHzVsBxVsFxA1aQ6Hha4AyZsLcIWygqIImri876xU9fZ4foWgDgPQHkjyTIBVyaO7" +
-            "cH0AUDd+muThXOMLeculzgU4HqRhjmvCWjGO4wcHVg1Z+6WNBQi9LozaXiM63ot0fwR2H87+" +
-            "RKvog/TD7ppk4KRNMyzCZSxiJ9OjAugJPypSSJJVmRYkEATzAMTlWxoRm6RARtvaLp/mZsqg" +
-            "FGSAYRXBRpJ8Z+YufFusFDZeAJKAGbRAEc4lETBet8gy250BLqVvFJr8AspgFOzAY5Og9gDh" +
-            "KmEGRviaASLhDtCnDBKhFL7JlNslYQACSAU6vED1gALKiageaqDE4uNEjJcADNUEcOIEQ48e" +
-            "oBZUAiVBgpcvXrxI4ILQSy9XsWKJEeMESqNYjRphEJPGS48AXDZi6MnFUqweJXvcxPBTI9KN" +
-            "Tjb2eLmRCxeoPXo6vfnU6cuXXrZKLOklTRpXLLw8K2vSS9kvLFj+5Gzbq1eRuL10DBiQLK8O" +
-            "BwNS6TCBo48sOgN9DBwgixBhIOTo0CFHzgeSRUEIkVsEmRdkcoRc0EHUxzG5Cgfo4AiCSDIi" +
-            "ckj6LCLjggy5PoACCyGz6BidPgcQVQhymQwOQJ5Du8BhAnIfcoFxJPMRGgcZE8lMnNDRx4EO" +
-            "xyasn8AxMBUS5qkqABlGZncQAcPIATkmhFgTKVIE8Cplx04WXkDoN+ElxR0cLHLBHYnsx0sT" +
-            "AiSBmxR2BLLIHQp0k0UTEkoRCCAyCFDGf4s4U8YiTYyyTRnDZDHKKFmcl4QQAmA2TBIXLCJE" +
-            "fkkQM0EnEAhwwQSJTCADIMccM8wiry3+QgxnAkghBCCLfASFGgxdpIYlljgR1kaggBKAGAlZ" +
-            "pEYsBoAyhE4/ifFFmKCo1Is6LkmQyhwnrKSWK8mkwcVPTTnVgyUQ5WSQVBqJwedGL00FlUaI" +
-            "9tAUoVwYVFVVUomBwRdcfLFVmWCJhFZJQyRQ0jObmsSCK3PM1UsyJySTinV54eAAIg7M8Zhp" +
-            "dDhABxl5VdAYQYpZ5tkBjBEyLCKEIGEZIYsMRIax1SFHCA50HAdIZH0MREcy5DgTBDFCeDZb" +
-            "EMe40AcQy5F7AGbkAJceEkgkE10Qx5HRB3WylEeOCXSYIOcJiJGTzBzGOiALZi4ARgcQixxA" +
-            "SBBCHECOAHf+3HhBFmU40wQg+Dkj4h1llHLiHVJUG6MUiyibhRTDONMJA00MU00iBw4DSBPV" +
-            "NLEIIAGWsggHitxR5B2jcHxBEk0EQgaxQiRBoBSj2CGEFJFEcscxHOQnRBAiLgIEEJMNU2TU" +
-            "HNzm4ARGQhGAlBgZ5ISbYqzERUZNgUkRFB4FkGVGU1UyVBpz9NKSGKv660rhc6hUBJ9sX6SO" +
-            "JUR5MZWicTsVEVBPJTDVM1tN9WikZw7K+aRTYZqAGJqKKlJXX3nxKVhlzSUBXXP2YkIvDiDX" +
-            "XTKx0uFDXoSwSgchPiCChCzJ1DoYL4RUcC0QwC2CRBClObY8YbUikp4P/Dpn2Xj+QNCxiGnA" +
-            "9REEvUIsh5lsLmjNWhAmuOACEg+7UNq1JriLiLQDNLbXvrm+H7BUOOZ4SMCBAB8DBF4MhjUV" +
-            "WEQWLgCIitmhDEJQmDOYFIgsQKBDUmBAJKohhCZc0D6EWNoweJGFO2RMCAbKQs6akDIh3KcM" +
-            "ExiGALpxhyzIoBSKUEQgEnSBJghBBiXMAtKc8SMBHCMRkdhREu4QCRMJQQgnHEYFyDBFYuRG" +
-            "CqUggzMYwIAKCoEDWeCMRfjUFFbwASK9SANMGAVHjHCED5XAQFjEkCcMDKESBuhB7HrRiEqY" +
-            "pBeqc0gjoIClqcBRDQYJwEMwkAYJgCJykRLUUwiFR0X+nukLRkFKoIxiEEIp5Smje4moxCCq" +
-            "krAgdWUpiwSeMYS2DCEuXjjBCeYwgLgkoxcncEUqWJWMAeBggbKQBTkQ8ZkDyGIADkCWLHyg" +
-            "GV6FzzIVSMzyjqUYx6QnNZ/BgWKuhYN8OUA43OnDdIgRBPCFRosuuE2uhpm1A1SLDMKRDR2Q" +
-            "8Jj0VKACDvDBvsiHTF05YKAmEM7xeCdAb+KTgI7hBWboEIQsCKAUxODFBTgAsguUgUk1UkQW" +
-            "ppiFRHxMBitzYdTsUApApHACOGtCEsaBHhSeA2yJGAWTSpEIdJgoEEYTAiEIIYOPDkMIEOhG" +
-            "E4hRhkh04gLDkEInpNCipQn+4GVI4CmEpLBBIVzADgyYADGcYQdFlIJYiygSHTgiCjXIcSMt" +
-            "eZzaokK5MFWCC3FBCh7FoIGhsCAVXlBDHZ+BOTXMRChqoBSjmoJYJ3BhjVxQCwYo0hM8Fmon" +
-            "RqnKXX0ilYRQViuH0hylbvIMzWkuAUVgS05coRazgMULCdCUK3ohAVcU4TrXiYsOXuUYIBAi" +
-            "MclYDcB+qi9yHKC3vXoOshzTB98UN1Z5uWdgmHMr3bninrupACH6cDxyyKICOMCBFqcVBByM" +
-            "xwWLcMFlQkMGB5CDF79hjXCkMy9y6UoWvRGvtKYjQAf8khAkMI0OBAgww9BBgMO4QCAY5jCc" +
-            "kYP+DC0iA37uwLMmcIADGQsCfQQwxjIkYRjj6AYDOODQJGSBA7pNQocuIAVFmCgJimCGInBG" +
-            "xnOMgxcbetki7AABZ1QgCz8TgAzKMMGMASEQGC5v1JrAYBxjWEJhFIIzVGwknvFiGME7GR1Y" +
-            "gcgApI2RfYqFE3KSWMjCBANhggJdIWdZLvANb38Twz4K64QAVIIP6mjEM3aZAKbAMSqxWAAX" +
-            "JMACq1glk3GbJEIqyyerGCpSTomspCblFdORRCKpTEArT9k6sRSOLnP4r3NS9ZzBDJAzDkjW" +
-            "aYTnz+g6xp+F+aljBhC8OYyHENTJVmKG150+dDdbA9YBZ5BAL/H2Agf+BwgnGZBADF1pDXxB" +
-            "IF926AUa9aaHM7s5wWMONmsXaG+88XsVdY4F6+SeABHK6MNPCWHRYRgrEF0kw3yEQKAkkJFr" +
-            "QigDe5784qh1wg5gSxnOlCXvCwghERCAIRQVIUMOiIwDRRJAhRZRBkUkQQZEVQDQhlGGj4Gs" +
-            "FIG4AMhq1gSK24HgQghDJFTk5DvcQas8ZSpkjOSkqJUCCJpVg5TU6shYBCABvVikZvfUA3Wo" +
-            "gU14RIqaKyEGCQxgDhGp1EvSJgZXOKAXgY4Iow+7RjGs0ieQRTQcP8sRjQCd0ZaTylMocslD" +
-            "oYkkmiuJGEA1hEonQFRlSQML4jKXVemg06r+oo4As/uZxiDzd48pzW94NwDFBNMxhceWaX7n" +
-            "T1j3SoB2EfW7QqODAoLHNOkhCCKO54N2eqbz2L3MgoEDsHA6wJzk69XBkHkaQJigM6uCzmMI" +
-            "0YvdsIoM3+N1e70JCEAQAhALmvIxoMpUEW34AFmwgzMwroBOPJDHzh8GEJbmvCbo50Q9rFAK" +
-            "O5ShYXCgDIGokQq130MZPtlEgJiyjRchhY9CnAGJWJoeaAGBKSaiE9UosIuOSgbEUB9OMn4X" +
-            "AARJMAFmg0Y7YRALYAmgIBZoh1iEphFfkAa7pBFwRRQ6gANFUHRe8FpzQDCf1wsv0XSHxRR+" +
-            "IhEsAFcZiHaIJmj+UbEUGXgViZYVavcFpyQRWtcLZdIpZ2EWc1cSc/E3cfFaqbAqwxYaicFP" +
-            "A6Fd6MYLwcMrs0c91IZMjpEKf5cMx5Jc+tJbchJd+UIdA1ABJ7B6/hQt6ZFfqdAH1OIcwEFs" +
-            "p3c804FMyQA/oKFru9Ys93RNrGYax0UHcyBAwhM8+6I72wUZxhIZ4BM+4NMEFMULSNAETXAB" +
-            "yuIMVAR/E/Mh+3cHAsBuWeBCymAxYBNx5wciWcAzxJAEUnABGqVySfBFo7BiHjNzgTCJwzAZ" +
-            "AkBh8GdxzkAMdoAOepAEpTABUXQ0QyIEgbBgIlZWAcKKJacIUkAOMCREcJQQidVWIhH+NxOY" +
-            "ERgwA1IxSG6EEUjhBF8wBHOQBkMgKUnHAkXgA6kQF1YXN4qUFT3QZz3Qjl4yWY1mdpz1E52z" +
-            "aINiWC+BFT0xd6XDWmqROklnd29nEoAGKivBS3ExJ0VwF9riGNAiPMmRLc1kAoiBXcTCHPwy" +
-            "QIggC7hECJ8XiHwxBwPxOzpACK1CB4iRLeGVDO/CgbnXGM3EhiaQCg0jHYugL583Gn0QGhVw" +
-            "MH2ABKkAK8b0GAW0HcBnK7DyeeFEB7dlGr3QO9pCa8FDeIHAXYQgLJpxHpQ4GgTCNRtDBhmU" +
-            "CHaAM2PkliG0fUlAIjAlAG3JNIuAH0kACEIwAWVARkLDUkn+AAEM4Ay84H4zAggnAlNNkAgi" +
-            "cwGJsAXMQEFZwAAaJgTHoCClcAzwVx8xknHwEXEQ0B5XkwS8gBszolhbwUmKxQd9k2eDIjcE" +
-            "aSmTsiehNJtJwVmewjlDQBVwZBVC8TZD0BNJ8ShApxGHRlmOwhFaMSlnkkmodBOZYxahtVpm" +
-            "0Smo1EpD+Fpx8TdISB154QAVkBfIsglzAAjkCRn74pSOAQj4NBrL9Hnh2Vu9oBg+2ReIkFB5" +
-            "0SrBJC0mMBCzlxfHAaAcyAvC1BgcCRmpMBvcYQKYsU9YmHvO4QLZlAw6ED8+8EzIhAhzMDwa" +
-            "+kzak4XtaV7IcUW/Ik2lQQ4QojD+7IYZS0Nh/AFDWRB8DjIOAmAHnaAIUyU0HSIDgdAhw3AM" +
-            "ZbBB8McAiuAM42AHowABFSIE1fBwK0NBA6cI0jCJNTUxHAABIgNvSYBh7VEKoRlSicCKzqAH" +
-            "o8A0JsY0SNB+GoIELjAMTUApL3ED5UgpD/FnfXVYd4UBioUUf4omiIUVGgEpkIURXuEFNyEG" +
-            "UqJoGLAlD4EliVp0ihYTitIUW8InNNgo0wlpXoEog4KQqrVahGSdYFEERTBIdBFMrOJNiTeT" +
-            "o+Ec4IEcWxg8x5ZckCELJslr99Q7uQpqqcAXAJoMxpMqWOk/qSALtsRdWygLgMFLtHYCyjFg" +
-            "GIkbEJX+Hp6xLwCKT8ZyhSbQhqIxEP6Skatxlb90UHdhlLlFbcmxMOqhMAl0AVG4IRRWLR73" +
-            "MsrAC2EgIxzAACsHpMyQCKWwNCACMk0wASqDImgqBDxmjE2QcRTWVFAFINuwDS0CAevwYg7n" +
-            "MUdTfhzANMdnMkTVCQrAAc4wNSbzRFYafEbCGHSgUp1ZclIwm17hBG0lFpMVOVLxDJLip85p" +
-            "FIqlaJhkglMRERmBqYjmJ04gEl6nOJvFCk5wtIs2j5qjqHhUOptjnaj0dg4ZWnGXSqESEiqR" +
-            "BnGRSxQJK7C2q3ihGGhYApZRG8ZUTcuDXT/pACYgC7hSHXRgPHMgAayyCXb+O7eBOGzWtnjk" +
-            "MAfHw5/7g13kOQfUoV4ucJOMFzyzQQblg13JoS8mgCuQ93lkqAP0dR2EgEt54RvJoHTVYW20" +
-            "prnJwCvD1T2EAW/WpTBBQixBFAjohlHkcCI5Vm/dxzPjpzK8MH6UeAc4NFSJoGICew7x9x/V" +
-            "4DEWMwoeFaadIIsXIADVUAYfFQjOICBaVQYic5dbgKRSkAjM0AlTxb0gQ0VgAz0gBwjE4DF8" +
-            "yWKdYDoJ8AX3e6gt0VheULSH2ihP0RR2JXbHySh5EhVv1HSiVDl8CrWK9Egs8AyQBgWUwxGg" +
-            "YHNXIbSDFmlWS52e6pt3Var2O3cOmTp4R3Wykxf+x0OeiTGea9tbsnKTFSAZFbCUass7+vOT" +
-            "cQKPAZMqiMBLrmACPmCGuPNLA+atwHp5OHBb79Iqt1M7Q7k8vEIOqRAE2IJMvcIdA3A/OKA9" +
-            "2UpIOvB5yEQduvSRJ2C3h+sDhtGV16IY7vEZZZkeOKAwVjZUYcMkRZIEE0RF2zsBAxIIUjAB" +
-            "TkZwRxNWLiMiAuAMnohUKpZC/eqwijA0Kdch8AZ/ziCwYZVDUsMMEHYH3LAOHfK9FIQZi4Bh" +
-            "gIBFPEJkOdSKYWU2CNgNpMOaQ/AFgdNGftqnh/oFc3NIP0uQXNAQjQAKR2HBlYAQ8wgKUFAJ" +
-            "XVIpz2lZD9EDp/oTFAz+gzUISge8FaE1p5eUdlzxFVrLWpYmEqCCzV5QBG1BFnZnOA5AugGE" +
-            "K0y5L4r4eXWrt79UAQc0YL3Ahin8kXPAz6mSKj4wAKH3hX27S6HBurzkAN9xTNJyobsEa8Gl" +
-            "zr2zTwPhAuMEeCm5PEggGXSQhBwIubs1xsNTQMNqugLjPx7qeDQ8rPQTif7kUOR5fSczjUIA" +
-            "GfW2Ydf3iCEHBBazIPRnbyyjYh4HyDJCBgLQxx6XIh9zB8wwNBYjDTMGNqVwixbCUlnQCVsg" +
-            "i9IwCptcCnk8ARtGM5MYCMMQplkQIwT3Ik3gyItQDVKQMUgiBGjyDJgyA1vbEl8QF1HBOY7+" +
-            "IgYOYQlqgCmihBItMQaNoFY9MAavqQ7CEBEOQROBxAWedSaYEwvqcGaONoF5pCh3JToXYUpe" +
-            "AVhboTpX63ZzakqiUqpo0RaIIxe9UISH6zcdOgD6eQKGYTy3xSq6GsT3skv8rHR1mwyucIFZ" +
-            "mC0DEBK7JEDmasa5pM52eB0cPQcp+ZOyIMc4AGri+RjE1V3LtC7idZ/NigT6Yivv6E3PgRzc" +
-            "wYHNbd1+0bjkmQzSMnUuyzvP4QOzgQjgcG7rZYCEYEP7MXwOxyMldA4c57AdkkLbIHEOZAcY" +
-            "xQt5bNYOK1JNoNXr0ImlWA1j7QyWnEHSoEIXAAHMQCEpxgw6Fab+d3AzCeSl8GbTQlqYE7C9" +
-            "QmPWTiYjMmAkWjUeQnC/9usVCdASkNQLGTi0hFKzsYB0rlCbCRAAdTYEaWAUXwAFlgAFc4BJ" +
-            "TmAAguQKohTah4IBzyAmdFWClBRZQGHaBuyciLLB12ydqBMq1Xmd1omqoFISVAeCrv03PvA3" +
-            "u4RadLAJqZIt+wknvdMXeTG6c8LPDg3QA3ACEqCfoMZLfnMXJxAnuoPPfxM8uDJQyNELLiB7" +
-            "3SVMPklsDqBbJLCEA4Ery5EdntFdvyR4QVBAiIAY+JQKdYhL2fI7rnpL2dQ7yfJ55XErT4nf" +
-            "ZP2eCXOLgBAEUg0hFjMO+pYIw2hid2D+pR9ipY75NGMEyRA2DnegYiBkMWYdCBMgDVNVBtHL" +
-            "RXZwclnQ7CYeQhImAIuZHzzzZPyGH50AYbDIJKPsLTRtYRhyDHcgEZ9yKZljALHABUtXKX2q" +
-            "qDcxZ5XgBH+TqDlYCQsgBlMHCqLCN8M2BDsnBo0gBo6BEP4SWlcrEYEzF3kiWdFcFf94SVyQ" +
-            "Z47yp5712SCMkGVySqVDEkM4d6jKKXHuWnThBUWYKqnQtzNp0hIAAy0piMU0B3eXLa+VDJvg" +
-            "CoNDF0gIJ7kEjxJw5zhgSwNQBKxCOzgQ6LQzYEp5PIRgF0sXPO6cUNKRL7LRHcaCLEhgLKKL" +
-            "kaV2hayiLwD+rV8CNAdSZwLb0RiCTizZAsaC4QPKIHiyoAxUZm4WFYl0EEIF5rAQYrBHPR+q" +
-            "3JcesyQi5aWKgOAVgu1lcA7s9mRGtKQL7jOjoEJl4GHOUCH0cQ4v47A1VCAQoDIsFo1LkwhW" +
-            "mkH2dgHj0XHQA6Rh0CThDmEsBHe0+Y0t4QX/peOYkoOcFAtmZkfJwAJowgWNc3dpcEi9AAqV" +
-            "kAoDcP0gqBa94AQLoAb6IoSq8wzqYABiYBeeqqg+EWn0KDmKiiihdUkzv7Vm8RWa0in+DxBF" +
-            "vKTx4qpXGlcDJEiY06tXsmQHe5no1ZBOrwF0cAxwiGjOHB+yBrhKo0NWLxw+Pjr+HDkn1ZwB" +
-            "RXqdcJjMQbITc07ocGUzGQ46OiA+pEMHSRBCZC7OoZPMB5KidGAWJYejQhCqJgg17UMuVSpE" +
-            "PgYMmIPIhYmbyb6mGmDCRDITPlIlpPOUoiyNqRxsTZUMCC9liBDJWgSEHCI6gHhV4JXkwqJh" +
-            "SaQ0ESLknJQkpYYJkcJh2LAyiso0qZZIkbMmUkbdwZwlS5lq45rcUVStTCRmo6SEHjWqzGsO" +
-            "ApJ83l2qSZk70po4U7RtgpAsELaVEbKcMqBFFzYDOfBaCDEpkUYJGKZ6VBbOX8RgUK9ejJhK" +
-            "jYbMcTBEjBcx7cWoa5RGQiUvDnpPjFgq6SUVAhthQQz+UCJSo5EeBtAhDS5i4SMBHBzAz4sE" +
-            "nhnCCwPU+YKFE54ZUAwuuOjhRDF6wOC9FGNc8b0X33PiPhPFsO+ZIp7x4pkExPBRgvvuI4gF" +
-            "LyQYiAUJHOrFlYbSeAiGj+joiY6TJEiGLBbYqggRp8ZKxqAtK+oJJx/USsWhE1xxRS+YDkxG" +
-            "Sql8eqiiCkwYgBC4gMKBHBeSIQcJRHBAhBxACHGAHFkgSgWHreiooII6CXkLJxMQ0QEHpw5M" +
-            "xQQcYEpFql58aOrAOaxKRjBCQCKEHHLoIIQQJMgg56G/JMUOCCQCSSKJQBb5tZQshlmEWAEu" +
-            "yEIKZ5TtZrUmXrvjDg5KScL+jjuymI2B36S5YxQ7klCEG0XO4UCKO8qQYphS1BWgCQGwHYcD" +
-            "6UYTALlshSjFmWKHOSAJIRYB5JgyyhA2EQioQ7cTZ45hboIsiAFCPScozo9AA7xgy74BE/iC" +
-            "lVh6KEKMMRJII8j7YjFggGSGiCUWItVYU41YuHDICxVBSaAXL3pmkkMQG0mAIw7XOzHFFX8s" +
-            "EoMXX+whRhSFRDGBBHru+Qv8OvxQyB+tTpIFsJlkwaBeFjJTJy0dwMGgEyhi+QT/5ExDJ4c+" +
-            "culNHUDaMicvOCo1mTl02MmENYPqxYG2EfmUjpf6OoFTE5CQCwkkkqEjViQ4HRSxoiqYlQ4H" +
-            "EHH+K1YT+jD1pQEcSFOjoUrtwwRZcVjzza1ugn2Argx7S9JYZSGE11TIEQIIRAj5bBhCeBmm" +
-            "iSYe44VYICrILBAhOLjDjiaSQK4MfpvgwA5ts0jkDu1HYUY02pgpQ7Lxf1vEmWnj7UQRzEKb" +
-            "bhj472C+CWKb4IUXITgGCAKoRjXeZZo7BLAMibBDdczVhEVU5hjMW4QYblQjJ2DACS8TwwBO" +
-            "8J4vfKFqXgBFLNTghEqoQwxFGIIICaSOIgwAAypzhRd64BAn8AEDOLDhfX7UJp55gQVp+JA6" +
-            "+MCjD3IBRfh5DxOVOCMYsUiK7/GRz6yGJCD5EEheEEjPBCIlgyxEAnP+cwWTxmIQxQFOJAjp" +
-            "hSzmALgBCJEFETlBmQI0ALYYChEDmGMyumQC+szpJShhGeN+goNeFMVyF1HLCSSFA1lUQG2W" +
-            "u8rlCIGDlCSjD5mTVOY24QNWOaAuFxkV40oFKcBtJBV17MtDdFCXn0iyL4iJVVEilYz/zQoQ" +
-            "TRjGpIAgBAHIAAiEuIAQAPFLgJHjOMGpzrQmU5nORMY0HDgOuLLwrVEoAnyhuYMzlheGbDWh" +
-            "G7l5TW+6GZpuyOYCvPwMIC6wvuxlIQmQyYIdnikFBTAAXkngQBYCMQxAEEMAAjhWZ7Ljnhu5" +
-            "5wscNMiAQiiGBPTACXVkUBo20oMAwKcSBqH+GRR68YUemOAEleCDF0zQAyg84xkaMIDaaGK1" +
-            "DzXCAENA5I+CpLSO4WhDKuUCyqT2HqoNqGcj7JmPTOSFD6lUjkOsG1k+4gOHOMBvdBgAnd74" +
-            "KUBaDnBkkkAJANcQFuipCHqCy0PISlae9SV1FcjbCSSAllRA5QQOMEEa2rI4V30lUz4gB1wi" +
-            "FSvEgLIPiIlLBTAJlD7wCS0QwaMs1uQDTq1qjzipSV9g9xGwuAAJpZKFMppCjkXUEgnDJEQF" +
-            "jEOOrYA2EIQAxPIQ5b0mgNYZv2leKaSgreXBUxG9qcZxIpEI17yGgcS6QzcwIwVFiMYOo4gE" +
-            "w7KQ3H5mwRnnYN7+Z9g5m24eBzlCWKe6KCOZMmjml/K07m2Po4g7lOICYpgBCC9GoFiIoUlc" +
-            "QGp9rcayBDjhlUVIoYsa8Z5G8EEMdPCCgRKgjkokowJOCMAXAsCHSpigAnG0mo9ioY6h8bBD" +
-            "QRphApCUtaLulGpewAAXXvQMJVatimL48FCL8GKv9WwmbMGj31hiAoNAaU1OmVOpggJKRLJs" +
-            "TEVwSUNkgWOCfCWRTXHAmigyEamqxayaxAFaLjKAPVaZIY2yXB5XRbni9UFWfSkKUExFOFHa" +
-            "BHbk6IMDZKESl4jyJnRQHEZwIOYtrfJJEMmJBAaQJlZtZFahrUsFAFoBRFSgMKitziL+yNAE" +
-            "6spABqApRWXwh9sLVIMD65yWPHfrm+VsLwv3ut7CFDEB65nvDueYlh0E4JrlaCs1st5NFjid" +
-            "HMqcoxpCCIQAjMPOzWw6XhMgqG0ZIAXoJCIR4whEC42Wny8MwQDxxUhPIRrth3ooAGpQcBEC" +
-            "kAAd9OJpruDCF2A3srKJIRlKsU8vUrRuF/TMFUVIwIcu/AwdmAA/VdxijKsogZEJ6agJUGKR" +
-            "uCYkJlVRiEuVCQtu5hCKaKkhYxpIVRlCFhg8JCc/acgARJIKU/mABmeaCctYEirGIgIjaoGI" +
-            "6Ngyh01ExAd8Koor6ljHw2Rqxy33CA7I4AAHUIocFRhVWNL+pODDEEIWe0wFIUAJOjrLZVZg" +
-            "KmRcMnKTP89hbnVESy9eKabPOeUvB4CKoj33O0kJq1igpcwiePHP6sogWgOt56ib0BwIzLbV" +
-            "rmH1qpHbCQgsjBnpkkZyic08eEIaNsdJ1zj45a3mnaMM5zDWZwQQCOUJYRzHEJa6kjABZTdw" +
-            "tqKh53CGEUKFDuhl8/noEOwjwiqO8AtPSYMYEtmLqrEMdnP6gisQW5UkzZUOLnjdhz3cs0Y0" +
-            "QgKgUziHhhS2Fh9VSRW+KRXvM0Ieec1JDomho+wmpTW9kSVrkhJFHAlIKIHJcmByUrjp2iYp" +
-            "ceRTUp7JliwnO5bgpMpVRsSbKOL+A6JbFQlhLCSgiFH5CUOKCLx4C1Bps1IZjDnDAajAswMx" +
-            "lWRYQIhYlaYwFCmjiZ/YuJYICZqYg0gBE1mgnFkhAyFILCAgBkBAggjSFkBoreVJlAsAmEUI" +
-            "hILxp2uSglIQgNlyBmpqAmy5LdrgnjtYh9ywJwQaDXzhFymwg/XJggm4nmqYlmwZBwG4rc/Q" +
-            "DreTASTYnwBqPB1Ml+NAF+oIgulqAiAwDEAgKKupmhCqN3UwgGdgC6rBmhZyPfUYgqq5GSHq" +
-            "hQUZAilxgDnoGQkwCEyiCIcjMx5KRAlgkhG6MC/glCsSG6t5MYGAMbBRmhzJEa9hAXqzGoCT" +
-            "iQCRCZr+cIhN4Ii3IZqxQAhD7JIj45mMI4o+WJO0SSRCaBOG8IEieJQySQicKAq3+AjV6YWw" +
-            "qBK9wQiPOBCy8KA3aZO9sAlCqAmnqJwLfMY5wAtZcIEDaIq+uCRZoQM8q6MM/AkwCZ25qDIP" +
-            "coi8UYvbqYg2Yr9t/LPBUIatMB4ZqAByGIZiGgZlOIALkIHFQILPQIJdgpdiQg704J9lEQDL" +
-            "KJjUQJj1+RYGyJY7mJ/JOK8yuJfz0bt0+Y3kkkjuYR4gWB42/Ix/mrTFqx47QLV3CifmARjy" +
-            "qIwkgKDIQI0RGwIl8ZgEGAMMwxl1GEqVkakQURl1eBkDqIRKGINGGAMDSD7+oGyEoeSPWADK" +
-            "+GDK5EvK+AiRqeQPPmiEItCITvya6eMiLuLEUAySKlqQ5msxUewFmXASDwKcd4SbhiCy1kkd" +
-            "hwC5Jmm6vCkLHUgFF+grJ6sqy2ILwTiBIqArtoCIU8GymWgKiJCSiHBGjLCxZVQbwXkLVhqV" +
-            "l6ADUHEs2DFBo+CTRCOEPUICRCuKsPiKP6OrS4KIjziBRgE5TsGI0lksHWAZhjCky6EcWZGB" +
-            "YJmU1pKBWTkeYhooY9EuIXgefpmnRZgAbyJC1kg1cCkY2gjJc0gEaTiHdkmXUuiN6bim5HKN" +
-            "7bkA9WSeQAACueOld5IGzSCNgmGX3WgC6oEXXjv+SenqtSTIAs+IQmmQAi/4AiIiCKtxyiAJ" +
-            "AAMIkaRMyqUsSqocSqqkygZFsFhohKbUykookORjSq3kj+Qb0QKpBDWoxIuIMSQpAoATRCE6" +
-            "S+cbkC2SmoUTooZ7kjLSOLKoCDhykobwgjdqkj1SEriACadwuAGonDdywLIIFbaQCz8DnFGp" +
-            "sjFhik8JHbEQRoxoiruxq7loCj+bAzdRiZ+oiD6QJKCAiE14lLrYiuLxOKCQhTP9xkV6Cbgg" +
-            "xt1zCqCggxNYpR1bHUB6o7eYg7dwCB8gAZUAB+N5weIBghesgNZCigiiDHIIBGKptHuZDF5o" +
-            "ggmYgB9EF2QTgCMEyYT+4R4GisLtRI5tUATlKINRUIBqQM/RWJ5xOAd/Wg7q2iXwDIRokYZi" +
-            "4Z/ZAqjlGQZh4lUOEBjtsQPjKJiOTI2ONNARgymqBJqhirEQK9AkIYkAcRMZWwiBGBurkRIv" +
-            "QkSyeZKdQUsW0IgmuSKZKAKHY5OYgMue0aLrY4G2VJJ2LRvAqYiG2EZR4Rkx1RjCGRu/8bhk" +
-            "cFdCfSONqAhghB1T0pg+WDoxw4HuiwijsAkxfaOEWJM7KbkmOQEvGIq2YYmHwItUcYCHqBLR" +
-            "WRWIgB3DKgouk1NCiYpTwYumaBSNaIuiGItHYZMMBAtQOpDQMQimwAubIIfFoAMSQFplEB7+" +
-            "IRiGIPgM0wOCRXiXYQAC7wEmNMyt6fjPVpMCsEWOyZCGTghJRVCARJgA5OgG7mkX6kQNImyW" +
-            "JHAG5eAfaZjVQMgC2UBJyuDVLuSFdcLPqrWDcKme6+EA7Vk15nGNYYjDgdDDG4kLUAlUO7Wc" +
-            "IytG0aQUylykO4sKoIgVMthToECEPrgzJBg6pTiM2BGCIBBFUTzFeaMJjjgBFuCjTLRWm4rE" +
-            "fRPFJtm+iVMIvdjYmTDEnjFEZGyVNPhFj9CKUHEFvjIJqJiDhYgIsMiTfQUTVzABWTgBH2gy" +
-            "PZESJwkdPEqDudkzlTgQkhDEREoGCWilaayjiiAcyDIVN3Kk9dP+3EiqALVoFDGjs5bVCELo" +
-            "A7hAhBM4AY4oRk/ZkgyJiKmgzVT4JLaYlXzkFdb0leaZNO7qpQqASEDoDnjKn5tEQ2d4WmeA" +
-            "AGVdIFRDrtyYvCQUDfSsBmfgVWmAAG05h4SxVeSgLtKYrmGQNWCjLmJllybYJdvgJQFArywo" +
-            "BQ5gyF+ZjM94uyzwGv+g1jQAulmhTcZiuTc7JNe8FLjYvTKzCkgBikAxlaI4XRwgPhfAJMMq" +
-            "3QPoA3eVS7NhiSKgCVFkUUR0VxhT0XFdkpoYi5p4kpGQgGrkyVQYIrCQCERCRtCpiBP0OkqZ" +
-            "gxgS4DpyOiM9OtGEC8ZiRVYMHcaMEz7+wqS6CRDpDRyeKSsDrhsDvjK38jqmsBQ1ewuWcVPL" +
-            "SROtgAqooDPR1IgMAccxATlAu8yvEIwx6dNBYgqpQATWJIFDcbvAUIZJCwQyICbWRUhgUiYp" +
-            "gJhRSw70GAYB4AAOCCAIUFza8I0skIZRYIAJ2I0y6IZseY27fY1xzgIcTpdzcIYCqoblAeKT" +
-            "vADKkzu9HYZA0LX53MEelsj9qS6sRQ19sZ6ecbaB4AEJGCElQdCHdj4hSgMW4EkkkQATUY/p" +
-            "qyGe4b4aQsskURImmcs1AZtI/Jl1LWmHcLgA8Zk7brEXo10rclcZo8snYQsYIAstmSox9TOJ" +
-            "iIg0+BQWxSP+6pVTkcIkmhAlufiJMdFNoaiLcCORAl6VEewbAn4IKXWsKAkQQ61MgsjeNwqV" +
-            "iuAIQ1K5wxETp8hk8a2INcaI23yjz0GMXYRMciQz84PHsUiLj/gkmPCB7h0AEqADt3M6R+MF" +
-            "OlMeGYAV7uKFflRiyJgtLhyGcwgDiCyYcDHP9OINdQHQgnGGUrAD9AoNBtgGe0IObSoYiPnP" +
-            "/fkna4A0XtIu5hFQxJMG2dCuLFCekyyFf1oe4OZUalGW0DCZcL2ihiCqOOwQRKyInomjjabW" +
-            "jiZfjeaZ6ZMSgfgQ3RVrVwC4102SLorEF5PLueS+PUYSsGFMnUbESGwIhkCb8i3+1616CIZQ" +
-            "HCnRWK9moz6okszhiLKY5YvAiDQpFT2pIQkIt4o4FR6lXZ2QPzBJCSjxo5TVGCACWZiwqyoT" +
-            "nINYCV9uiJx4FM6JCtp0CZADk8EUTUCb0kLJnEliCSGbCx6TAHNUE//NFOGEHV4Ypn4cBtQC" +
-            "Akttzx4+rQM4FwhqgjCQp3ZBr2ghXF/ln2mpbeSwjeQiPCUUDW7awSY4hnPQ4eYBBCGYPObR" +
-            "tfCKlh3Mgmo4h+D+jKc9gEVognEIXACdW1GrpzLIQ6zpGfK96IHo87GRgN5DknPFGv8gIj0f" +
-            "V5k2iHHV6BdDkobAiLmMiTpW7y7axINwuDhuV4EomyT+QVcY2yKCoMWEqIjeDRD2nYgg+pSZ" +
-            "MAEdYKpk0BgHcIG8KRU7xb/KwiocCDcDdpM3+0z4nhuLsNMOr6uU7QkgmuInYYjLZAma0Is1" +
-            "eXY1MmAwgfbBkIVGERMrdYsj27/YkRTH+pRSIrNkCLeI6E3Cros/U01E3QQSAAJmfhXPQYJ/" +
-            "/IvleVplQElA8BVkgw57bheKFO7fuIB2GY3lCEne8I12nhZmLRjqGgczhDRnGIfleY0yLwNf" +
-            "HYbdTmKAZiftKAVh6XJtidXbsi30Mg7XsK+JvhmC6En5GghxpdYYGyM8Vu+iqpqfeRLuO4je" +
-            "xXQdEBzKKhuBQOkxchIW7Wj+J0lLe/UaPF44JOm9gcAIV0BZ59W6cUcSh2AIlE0SoNZkHIXH" +
-            "otB1Oa0IC9wSsfAPqsMyoSgbuvHqsUkD+HUIlAMkrzsZ8e7TQ/xuftUxKlHqxzQkuR8ATOqL" +
-            "lhP8QeWx9dsLqWKdQhHgDNxl2jxqjHgjEgwJl0iGrThswCIBt2tPQ2seH6faxwCEeXGMV9MW" +
-            "TisYx0MO1OhhtfWebIHIauiG01Z47pE8i3eNO0gEZimDG9Yu6jIX2WA2IWancRgNQGC10bAM" +
-            "DojzaOGX6ngN/Gxo3BKCCvPDTq9oix4ipLoPrBlFPufub/WPDyFpfC2bPzf/upEJlJ2JJnE4" +
-            "8gb+1yAqo3YlCfAOxHItmzGqIf9okhpaiUcHCYBIk6ZXKlde0iRLRZCOiYG9TniZk8zBgF7J" +
-            "Lg4ckExHMkTJenkpguhEL1mIUpGM+LBkKha90swpcpCgq44f57yck8bVnIMIewH18sXLABjJ" +
-            "6OgACrTgHEQVcaJMZiLZHIoDHFiURXVOqqg4TODwSAgR2It9kJg4kepjMh8mUkmsKYsjHUSE" +
-            "jhICQocQIUCLFhFCsmgYICSEyAgZtuhCE14VFpVqkqVJkyTnmlwY1kSAs8xN7JTZXCZLqUBZ" +
-            "ytwJfU7RnXNZsnC4M8FZkzt3qp1WpEja6DuJqp2rVuYy5eLDgp8z7cz+9QUBqKU1KeVs9IUs" +
-            "EyYDAnIhCYdAQkpxOCdEgJQECb58STDEC3uX7Nmnec/+Gfz4LAZK8JIfpEAvLGQW0QsLEpDk" +
-            "ikNKBehKLzoMcMIJyQT4H0gD6ieTfAPol+F6+XkBFH4f6SeBBAPEN4cEFvUiAYMSmcBCAj95" +
-            "IRVVEphgUBomYNULIogolQoOHJkwhyssDECHWj7gMIArCqYyEFcKwdVkfECNCBdBQipU00cP" +
-            "VaRUhwomY9CVSh5VUYC9zFEkVan4cNEcDyLiwwBtAlXVWG354MBFstDxFQ50JDPAADisJZEs" +
-            "OLig0I5RMUQIHY+RgwQ5vMigWAWEJEbOYE3+DCYEB6UIQQ5jWQiR2XdNAAGIZMMMI4U0r5Ui" +
-            "3DnjTFeGM6BmIY0drqFWRimoKVLGcGXwNtppk2kmRRaBBHKOM+MEUs1tkgkLXBZ3bHNHZLAO" +
-            "I0QTmgkBxDBJCCDABRxkIUUSp3khRgJieJFAiAcVkcZ68cXHnnle0JcAC/+m4RILrhQxZIcv" +
-            "CexKUiudqWCDD82xMEkg9VKEwL0YJN8J/7IQ0noD64cTmjBhfHCJA/ngig88pqFRESIWqNF7" +
-            "yZDUFH8EWVTXHAPiSGAfdESMEkhpAr3WACaut6RAO1eoUX5CDsQjT0N4GBFJRQwQYL6p0AGX" +
-            "CTrApSCaFkm0FE7+Uvko0UeupFJBMjjo6YBJfNVFR9dw7fg1XD4A6gAdsqRiAiKS2iWuY3aT" +
-            "AwQQ5Pg1DCHDbHcBEIuME9kivHgbiLhNCCEEL6UkERkQSYDGq3DVHDfdZWWwlptuy90xyh1S" +
-            "nFPKObZS5ppkr1UzzmnSAOdMardLO9w4ko0jAGUX0JaYEKQKISyswoaW7nr0eTHETgfpyyH2" +
-            "aUjwXwIiTkn+wa6MiLHISvXS5UsnFHGCDidUlIoOOKHvJUgB6vdvxRWKqF4CEZHIlpYTCSgo" +
-            "YDpJgw/mMAc6OAB9XAOKCV5ykLVtgg4pAp+SLFLBtTjABAP42VTmRBGg+IBBZKkIAhX+4pKK" +
-            "+O896wGKK/QUEwL2xCUYQxHCiBKlnJxAAqlQkaBMtL6uJEMCDTxa+3Dgg1RoJCEJcYCjKoCD" +
-            "PoCFLH1wwQet9LbAmaAue1LG5QhBDr4gIY3D4EXiWPUtXkimCUHwywUyAzlWaaYalBlPNaoh" +
-            "gEUcqzuBoF4WziGNO/DuDqCxjW6GJY1XUeZYwpnApzhQhgnYili3GYdwhnOZJEihd5QZDuec" +
-            "IQUOSEYK6lJl60apR8mkZwjjexnF0lAE+sjSFUMAWMA+JqL/nAhBAcralgT1EAadCYoVIUlF" +
-            "kkJM+BUhmgoymASi+S//dCxFL+EPiRLYoTkkIE0IYaYDROT+kRoCTkwQ6YUJKtixN3VIhOBT" +
-            "ClcYopGuESxwvfDbSIrAAzQNaE44OYGJxICejCllYAkK2MEkAM+MNVQhKRISDQdgpR0uCS4S" +
-            "oJlS6OcDNFHERzhiUZ/CWAEHXPEoduNRCHP2lYuYgBAVsFtfgOAoxaWqW01oo7eaAAhyEGMY" +
-            "yiCEMjazqW8BoQnn+FR0QEWZ1KEuEKmR3h2CNR3bCOt2U6WeHYQjG2HZphvUu4M0Vucr11xm" +
-            "MpJJzWuu+poJ2EZZZVDlBECDGVaBjjJJGIIr5GXB93QsP+qRQHz6Kh8vKM0gIqLnUibmoPbR" +
-            "LGJY04EOcMBO+clvKvJDUH44lKD+qmVPIFQiWftwIrLA8WSiVFlIBV0xFSFqxT8SkMWAHogx" +
-            "V1SkQzLqBQ7uMqQUblQWsnBg+gYitoeYoF7mMVBEcOJQeAplCDuTiJDetJOdic0LElWQDtOU" +
-            "pg0i1iJ6QlP4eDIHEaKkhA+E4AD4BFMc9NaJd5KKZtmUjLnxyW50QMJQK6A4yU2OVTKIVICV" +
-            "IYPMSOp5pdHMa5aVhM1winmovF0ZODCOcTBSWBBgK7Xu4IwklGEbwbLNVKuqCDuchqxtbcKz" +
-            "lFqGatDmNLhDTTceeUhEHnIUoElCEpzhjMlYJjLPGw1l5MWDeQoEfBnr2Hr69x6xVTN87Ouo" +
-            "MYGSNYL+UHYtD6pgknAQKApK7CAdoxB7gsmCBXqIvBHZT8A+OtskciVFXcPJE9tnpPAp5IJh" +
-            "Wkp+avKSo+BkIIAaQBglupadoGkARPrIfRB7gp2oyD9ekiWHvkTYAb1khuDjSl/5isADumSe" +
-            "E80J207Aky6lFk0yuiegcmaSPtGhD386SZsQcahZ241PfOMLIIJABnIwjlWB0dQaAVGpRYir" +
-            "W4rzVO2+pao/XqAUUhDAMATg4SyAmK1aFVYTJsCa1an4HHdgAFlRMwrWmNtWuMENZcbhSeLN" +
-            "laypsQMjUzMBadyKehO4jBBAqTwQh4YDpGPre4qwoRMVFnwh6gXV+sO9AWH+ekoseFCD5pci" +
-            "kqwoFQ5I04O8XEEdfE1+DfoI/MIn6V2OVtIWFFJqeQJn1S6JKmwLUi+QBJUK6taLyWCPytDE" +
-            "JwzBJBkTDyNbIhYfjdDvnOU9WocExSRdFrYX41vS0ILyDDHwVT8Ywzr6EP7pjGiThq4gyUC0" +
-            "HsyVBFMiD7qIRQSFA1m0EwcnvchaIEgVB6TCJIGri10M8yggyEAGNq3AAVg1GMX4ZTyBIIcM" +
-            "zNUpCK+xOZg5xlxLUR3ZoLiqqTllr5pQhk6kphq6YY0UsCXW1GC1GrxpjWTQBWPUeFgKlyw3" +
-            "scoqrAn0sQmcbPBwsM0BKWCy9Fi15IZHMxT2DIX+SC/r8/7AF9j9vAR97KGS+9xHvwbJDweY" +
-            "1dPb4Pu1i9BsIwzqEPnAtx8bmehEIiLRS5ZmIJanSUQfgQlFOm4gGgIFK2JSNaFum5LzVsSg" +
-            "4FzNUYUJ5MkGJcRSLExXgMRMCAVMsADV8I9B7UR/cEgaJEDGaE98kF2HDMEXTInY2MeSKAhJ" +
-            "hBrbjI2qhZ9UOJEIAYVa4MlEIAFDnMBbfMXc1AUZIQEQVAAS9MEw2NTkLIIMDMYFCN4iSMaC" +
-            "AcIFJIYbfct3KEt1EEv1wN7rCYszwBVrCM/oCY/s2IHs9cpk9Ar1kOG4bdVWHdJoUNhpnMPt" +
-            "cNK9jYZXYRJqvEGFdQP+VlUGJr1G+/GcmW1T1dBSNm2TyWmdgpwNSRARl3jZWkzE1/zIUaCN" +
-            "9rUPmihIH54IDAwB+QwAAhlIJZ5I/nCTQOSWj8CEl9UWVWgEDhQBJXjBVAhaQQSdLRFEgIBN" +
-            "gajdUWhfwbCTwcxfm+BLh+jAQQgJYuWZechLk0UEezDNEFwdYh3IQaCPTvDcAN2WA6UINH5J" +
-            "ETiXUmhElNwXWYAfV9QToEyFnGic4JBFYMiUYVzKDJLDARAbtTVhtwAhqIzDBQCCZtiRZnCO" +
-            "7o1GKbjbXL3GGOaGHcRGVV1SGTAA6OHGHdRhFlwVIglLIoAG7JEYA+xGFQrHj7WhtJFhQv7+" +
-            "yh1AwImVQSIogL4hUq3YSujEymmYx/Zk04noQJKlCJRRTDXpkH+UIDeuxQtORBTRjMZJBUPA" +
-            "l/iFEEFNlDUW1vshWRrAwKaBhILw1UuEU4oUynMdRJzUBB0o2kGkQhHUnQ50DEV0TE9eRUEo" +
-            "o94ASlJIRCo0nWV1RQWJwUB8pUA0UEg4V/Z8QQSuB0RQjVQOATJmYn40mYBAH0zMBNRJmUIE" +
-            "E2HtENM4lKnJCBLJyJ50kQH2CdxAESL8TXuZUQW4gOIkjl/YFDmYRhIIwV+QQ+ccgDIAQj6y" +
-            "CrkMQ7OgC2VIW+XkzmgIgfClIVaVnuxAJOsg0q+MglhZJAdAwI3+gZVuMFKwQKSMuYbsgRuJ" +
-            "dUN1UqdxVtVprIvyFMftDCT1PMOABJNBnEnFWNMnTpPFUEnbVcyCvCBH0IygrJ0zwVTcCGVC" +
-            "QBF1NRBPENYQeQEMLIk0wpM1ptpBfIH6WUST1MTRuMw2VdAcwI2JVMT9cRRcBOPASM1VLNNG" +
-            "dB2ddIRzpY+AtA+YLElhFsG+5IuJxMsXPMMQ8EC8EMVS6kvZpYFC2EfAGMgnxsenhZ1SOJQQ" +
-            "3U/FjJzIzQn4RYUIJYQsNNAUXQpn6ldeaEoF8EKvMQ4vHN5PHdvk8IIdSUbo6NSqMOG0jUvp" +
-            "Tca1lBhroF65WUboAQu52cY2KEByYtX+cJDYjxGSrWyeJtmGNGzDHTLAn96hNFgnGaJYGSQB" +
-            "JqELr0iDFCSCoN4BYXLPNtkSCSrFlpyI+yQF/aRIMAHlw2jEVLzUn4BFOwXKUTgAIhBK0Vmj" +
-            "A5WdyYyNk+DEALwISAxBQszBoYCERSFWqkEixmxJAliES/DNJmrXzg2KZWFZ/kgEC0wEV1IM" +
-            "+7yFo/1VNeXLkOxSx7Boi4KEeXTMT8jEUHDX+oHEibSHiJTZYulHJ6LZStTJTSBgKr4FGFlU" +
-            "QpgA4FxFoMyBDxCC38iCo/DFpRSGf13OMBDh5UyOubxmqbyGbW4Gs2xGEngHj2XBBZReItBG" +
-            "SaKeRSYBic3+lR1QJCYpwiicG7AEyyPdHmfMacbeYb2NZJqWWCKgmyap5BeWgR3AFfDBFYmZ" +
-            "mB2cCX6ExP/Miy4+ZqK9YPjoQIDQDC3Oz/yQKgui1NvRgTmyycrkqwMNF4rQgJKciE4EBVAc" +
-            "6DVijJPUSZf4AEm4SZr8yAm4hZA4VDLsRKBIwAyJSUJYDE7wi3b56o9En4Aoo9TkK4n4RARW" +
-            "oH7kixjMgHrA6JLMhE50IoeUlnGBFr5UIIuG2rhmiEMFKHFNmXsCBY/QXYNUREfAhalxxVkw" +
-            "RBjlhaNIyhrJVOIsgvOQwSJ4RykIQGoGQhOgEsF66YFthvJYEgcIT1X9Hhn2GKP+fqEdjEKf" +
-            "ZiHoleQokBvJoh5zVlhVdcO9oSmJjYI07EbOSsMEwNV1IOfKCuodJkI3eCwEwCzp3UGgZlIi" +
-            "lIFDDAUIwsd7hM9+ZI1LYM1q6RCKdAn4WUSggBxMrcWffMW9ct9NREwUeUnXOdBBKEm6EtA2" +
-            "GUiNYkyrsVMFoYlzERqZ/Ii9PISkBeP0xcczWMSJFLBLOJBMsI1EPUQEdggLfEGADNE0MaMY" +
-            "GNQzcMEXiMGQzJN/7CiHZJfCCFaTiRYMSMAzjA/hTlN/cIw2YszE7MQEpwnd4SeUcBRuGRPJ" +
-            "adyj1A0dABsJyFRg8BcvBMLhCUAZQw5mNEGlNAcecUr+UK3L9BhkcNYsKoGhKlFnyDLDKCRC" +
-            "VbkvWIlsaoTs6G1DINuGyLIGuk2VItwhsJAVc6JpN4hYyEYC6MEsA1DPyiIkvVmSHwcRSMBL" +
-            "mcnHNfLP2DyMKf8hzkhF+zgAZcENOQaKD8gCCeRrniACdUUR1yKE246o2HwBUKhHEsEEicAE" +
-            "p0oQ1+KqoNGIozSgm83r0ugEvNitQzHcTNQLijhJbgmjT6DP/WHMeYTEu8SvGJDwfGDdCHvB" +
-            "xoRMTyzluBIW98wv+iDaNbIHDJiWkpwJiKIIVFicA32ZyFzN0VyEfu3g38RarA3bpchuZnRK" +
-            "HeWjt8ymZgQCPx6PAPAYiqn+sXNw5OaB4eyF7LlBMp1SpLAEch/HTiSA9DrITh/rxiKlLCOb" +
-            "mCQn7zbssciiwzqI2CjscVVtWJ3SG2t4rB14rMiOwrjmC/0qbgJNjPswFvu819vE3VX8Sa7d" +
-            "xaDRXd8ADUYUhQOZyPtNFPhQBUy0RE2cSTIcGasyUXx0hdquchG8zdmMBJgkhX48CFDsXCg3" +
-            "IEEoSZc4HwJN3yZqo/QdRH7AS3ygnFB8gRNgXQJwAdbFC0IoyZAwWWIuhQUd30w02ot0SHt4" +
-            "SJL5xA7RkFrskNFUBORytVUOwCbchQPMFGcegN/5V140TqYAwu1ewONVG3fEEYhBZHHQRhME" +
-            "wqH+qhIZ4nFqOANzyhtzehsi6/G5dcNHj14jlUFPwx4hV1VOj4ICqDRR9+kga14gX2+aDrJu" +
-            "gHTyjgL6AFOTDUk0TYxSDImIAkWERIxFyI9EBHBbRG1+0RQk2tqtHk2aCJRFmRZObMJHGMWJ" +
-            "yJwQzcE/uS1iUo0OcIgDbMxGJJGWEIQPfNRDYMWJ9KRbaNBONIn2dKKqdUyHQIRL+CeMkOcH" +
-            "zlC9BJpBwUsCOAEXYEC7nIdDDQzVYeAAKVn43IuN+GyFyItP7BJhHTV7aA00MolGcO00VfbZ" +
-            "oKJ7JQRDWBGB8WBeAAEvaHmWI9uBJQbnkErtVsaDfYtmGMu6jEO1BbX+KSmCiKUGzL5YFugG" +
-            "b0A364zCOjCDInQCM3DDuVXVuf00M6CedZIYJON0NygAIp/boseO7CSyTisASoesSCZCJDBD" +
-            "nte0zp539H0iwonWaXeJfLLP+jEIFBHUAFQWqOpXBQwOIegr97HJelVFg+gJDcxWrD5FhQcK" +
-            "UbDQhMaZ9tTJa60H2FiEqzfRhtM33SkEdS2fCXTWy9CveijINS9IxhhMIe54T8gLfaCHGHQM" +
-            "BnDBi14dEscHsFZT0pCZguyHckGjLA22w0VXwYjgTgxMvpTMlVCUjc6TFwn4nMjyfe0FIZDA" +
-            "YyyO3UzOTxneYAT3gz3PHnnLulAGB6DS73H+gFCvC0L2yksXuqbneexcOpoStaOjg46JLDO4" +
-            "+TasA3MGco51AiRPOnl3A1GnfCfcNDNsd57DFVGb2OgxEmFxV/8gqJASyOayj/+8CejKSBhF" +
-            "7V6sut0chZzIAkU0UG9RRQOBTZPYTM0JiaCEl4LCIkloT57pBwutFv9hjEkQBFlgDBGdSJ88" +
-            "hPyMWcDoUMY4ZgSWzAz1BDVLANYdH7zwRGilgRjksEE1tg6bK8Jlz/gcNQx0K/o8gw6DYI6W" +
-            "ODw74Ac6Y/8cV/hAbpcsdZ3EGdfwyVTvlw/2BbIBWxAEAi9sDqswxh5xzvFER2UgD2hIfM0q" +
-            "0kCmHuyB4ZmCtMf+g55uZEtVRfqiK4JK//5Om9gjMdJKj3dzfnQhX7pO6/Q67ECe60Yf28Eg" +
-            "QwAE3KEiJMJCsoZ+jA9QwEClpsjEiYzIPMXRnn8RLC1lXUSRwBdN/U0F9KuSuoCtecSfnNdw" +
-            "EVrLAESyXqnoDEiTzIRBRHMkzHGQ5iCdXhIEeknQa06aVHNOsKBxQoerXr0E9jKBI5kELyYH" +
-            "nOB4IhnMVF68sBhAs9eAXixW9krwzEuaXl5cJUtVRKjOImIS0BQj5svQL0SHDvny5SkXJzO+" +
-            "9BiyEqLQXmmGDGHhikcaV2pp0uTZlmYaL1eDulo7EW5dvK5Y9OLRay3HVBhHulK5ck7+KqMm" +
-            "HNAxkQoRHUIVyFQAcnnYsHFCmmRe1CTQhWFNsgi54KxUqXNZzlVbnaVMGSlS7iS6Y+cO7Dt3" +
-            "yjgrwzv2HUXDh49S9Hu3IuGKmDFbPkrLqFHMuBkXbj35HWnJFXUrPn3bqPDrpivYxow8unXj" +
-            "pRuHoCjRcOGdOiloryBSJKhevn4VOWeAknQYaQ4dTNBBB50mGolAHAIcAAdETpKFjgoLcowO" +
-            "clIhh5ABEHEgGULmmIOQVAagA8BkBpBgAB8Uk6WCXnzwYY6cJpLABwJVJEmgIiTQYY6eEMEo" +
-            "GRx28iKZZPpq7ASSHAhJgoTSANAEBhVraqC+UjGBp5F0Iqv+ry/6m+srL57CQAxXEngKqGd+" +
-            "csqJoIrgb8E0GkoDKJqwqkkus8gUI6ixhJJAAp7sDOqwuuyUwBWqYKqRr74YHHEAByyVZUQf" +
-            "EEFksk4BWYScRYYpJZBhACEHiEUuaKKJCwRYVYBqqikDNtlKycK3OyCQJosJ7uAAOTuk8FW+" +
-            "3bDzTjnuljvPOEW2QIeb/JhpVhHphiuj2m7aU6ST5rhBR7rzyFtPvG3WWUc9c9vrhAH6wpWO" +
-            "GQXQ26GTRNDZoq3+IBpJAowCBMmhInvRIZUmT1BKMYRUpCOZD+mYUdMKTChosmTokOVEGi8e" +
-            "CNM56EjFFVkwTYVGxQaYwxUfmrT+uMaP5TIpyDR0SKaIAHXQskqSEhqo0pFMJnJOAtka6D+d" +
-            "CO13ThZqnDImRId4BoMvnMgKA6JokkCuZ8TgAiquxSirqbaAkmDNBPoMFOsEhhC0X8DCGikN" +
-            "ng4jlKYEVHJFwcKGMgzrfgc4eaQkTRAoyWQqkIwQclBdRAZyeJGB8cxG4+zWUppQjYPMBcii" +
-            "iQmkEKAUZ6SIrYwJgsMNvkQSMQ653SCIjVvgqo2EPupGMTZebpm7nbje22Og2W3QoWXaatUD" +
-            "z9xz4V1nB2inbc846arrJJJ4Vwc+zwS0r5sqwGycGaUEA0wSpoROOLBIFR3woVKGGZalRHJM" +
-            "8OEARFL+qSDJClK5P0k6SPCBQiZwCA4wRocmQehkRhmQwEw0GJ9h7SA1KpIDTjYHWXREKA6c" +
-            "g0D60iSezCFnG1wRSU5QBBb0JWh6w0iQ5jKVrX0hDXvywlJuMJUZOKEHUXuKE4YgFzGkxQta" +
-            "SwALetiooTAlKPzxggSK0CiIqERSO+nXmBrFHxbMaVB2YVDb9jeigiVMRS1yAAk4BIQgcKgC" +
-            "qCIDOQBBhmEIQQijSQJpWFONJpzDGc5oAmqEkIUkCCAJmbNDbJwhnNqsbjiJ0Bbr7OCdO0xA" +
-            "Gp243XWmRR9uMEM+iojEKCLBgHhZqz2rG8UfGFCt4hGnOabcwfPGowB0rYP+G7vYQfOmw41L" +
-            "fmcU9IEPfTqxgzLV5DB2WhSB5oASo5yvSCgZHEgslQwQSSZJM0oGCUoki8YQIhmAqIAsgOC+" +
-            "CngIRQPogwN6QQhspoIQApwDCWo0B0SkYQDkMApCcmI4E4hkAFUyimIGIqFJSVAWJSlKvygy" +
-            "AJEkSQIncMUJTiCXEallIL2wygyV6JS4eAFNPNkaVIbwlB4wBStiOpP2Ovo1i3DBbBaB4VyU" +
-            "yII+nY0qTIxLWcaylrqwAIZyiYv3MmiYFaZog9FMhg9MQIgIEYJTqAJCZg7ACyAIIRBJEMLm" +
-            "BLCZJFSDA6w6BweywIE+ki44pWvdbqTQDQbYQXX+zdIVcZhVHOp0olrbSkS3aNcJLWxyG+eZ" +
-            "1nWgB53n1dKWtJilLZ8nL27QAjrQWiW8Nrk7BeAnP1uYDi3sZJe47eQtOvXbBnHggM7SARE4" +
-            "mNil+oc4OkQoGfIMwgDg5wNCoKgCRC3RHOR5P2zSQX8WJCeMWpJPIpFTMYNJiE6C6hKkegkH" +
-            "NdpE+lpkpCY2KQ0124krOKIDEw7kgChDzE4gyoKm2IUmIjniEjt6FTFgIAFRMxMXgviMHnAN" +
-            "A1P76FO+gFL+cKUpgAqUYQzDUrmoTbwupW5cogsXsgFzXwZZSxEYtKCRSOgEDzMqiPJJggpM" +
-            "hg5AIERTnfqpYQhgGED+4NzlOFcKKWShGlKYlRTO0bpcwUY3vJECBBLBgLl2C3rrUI4iwjNJ" +
-            "TeYyrtORTn7oowDibSOuvDFle5jhPG4wj7BNbt46mLFKRaALHc1psvK0nEstEO+uzdkBYplx" +
-            "RUIB5sy9YLD3CDQSHyBkfU8ywZwt1hiGcaoCEXItEpKxCItVwGPk8AE5vpmhfFZgIYj4Jm0f" +
-            "U6GADmAwkNaJA6rkii05iQ7kPFgIBzcxhqUCSCX5l0j2N5TCME0gBwRMTyyykibVKZhDwAB7" +
-            "vcC1INraKRwVQw96AIqsaMVMaPrCmrjwBUp09GoS+ApEkvjEpjBkJH357xBSmq+4zcmJgHH+" +
-            "xRAa0uC/AVCCEPPBhc2JhAs7FVSOu4yqQgwazrSmVrDpRhkGWUiw7oZWvxkFvZeznMNGT8eP" +
-            "vIN0ElEG4P2VGVuo3rOMg1bybIOS4dGy7dBBjyxDmTpasOUlpUxl6UAry5ekBT3oMeYxk5wW" +
-            "kjzsXUchlLO0TYUuFy88IZ0kHDBstDd3NG4rNIBv4i+1IUJEMpAgkcO5wqi9aMz6KuCA85no" +
-            "RALxQaaT0Qc6kFogJ/oYYByAiE3LYiSNGdAG0SfaGikGivzCyJBEItq9jWSGKrpujVz6FQlc" +
-            "JW5PacvWWs21q0yNKVrhQtSw8pQZbG1qQRQDUMgyBLtUcYltUUn+maItlhY2vix36aEwdbrf" +
-            "wP0tSQ5QDPsIaE4gKI4QykgcEpR6+gqIKhB9TMI4LsCB0T3SGbopQxIC+Zsy2D4REMBNcrqx" +
-            "OvIYS8jKkU5yEsGMel3Z4wrI8rS2IUnj2KZ40LskuOD1reONojrNcZ740dU8kO+AHrSgxWFH" +
-            "Tg/pbIEWkvXW9KN7XRVucUAGe/X+bJ5PlLwWcQjBtSoEB74JCQjBAQBNFpCgMYDAUuTJB6zO" +
-            "KBBhAGCABAzItU7mzZJhg4BkfBYkoAZCRcrHfvCGYQxk63zAsxwoZ0ZQUgbAhOwEKRhFbxpq" +
-            "LK6GJsrkKrAG2VjgvPxOamat1j5qTTD+4KOmAvDWRAycwIXwjtqeol/aohfoQi4ELBUKhdnq" +
-            "5sAsQqLyRW3S4LvipiG4KDEwZX00JUMSR8MI4QB5wZwWYRGAAAmWahjmSACEwHL2SABiYzV8" +
-            "YwKEpQy2YzniQzjCY8d4TDmwpVooSa2SbxSOZ+Cao1kSThK35RHBhcoksRsk7q+2T8s4buR2" +
-            "wJYqjhagRf2ajP2aQwv+4A+q55JqiShYAGlwwoEIJIpe7WQc6AT+zwXIwUIoJERIBgd0ANAi" +
-            "I7Ukog9coJz8LBk0zILAjiAosACvMElGZCFogqEsbc5yIgEDh8IsZkjmYBPogGBMwkR6gWFq" +
-            "aijuZjBqpEnBTKgISkglpmgllGQdLYomtGY/6AtN3utMBG9ruOCjpgYrrAIqzAsD0ESnHG8K" +
-            "yyIff6kImsimbtAiACWG6kZMmI0HiOIECEwtFookluvbLgZ+JIP1HCcOM2RxeCGOLgd0hGAc" +
-            "VCMLZlI2OMB07GD4FnF2umM5iGMUkEU+RKnJMEkBmKN4OiE8kGwUmAeTjIewyIM4skwpp+PK" +
-            "4GX6qEOwviUrZ8ni0GF4aEHj0I8ZSo4evkwLmiwSFGAL4I8rmSEgAAA7";
-
+            "YCj7i1r+tS1shMgKy6QQmnKnhkIO8bAr8JDz7qQJvoBV3YRtkDgrxLArGNGMLOCpwkUrM4yM" +
+            "3EIT5O2pIqVTPAV4BKdxGOcwnAUUQwHh7MCCHkdXYsZYyuUuJ8Qx4O81PO7kvMyP5ZhVDGKS" +
+            "faOe0KODcGMKFgOTYGUXF7ZgJZbIEsMvnUU6VoWTRFZ1S8YvHlN1nGU1UlFg92ADRqAzCgAL" +
+            "lEnp2HSZPE02AQgNrjPUBpI1JzVS0SA+9Po0K61BFCQLepOWBRXs1EFfUraBLgQ+4CnPYCsW" +
+            "MHiYzGCZgAw0ciU8hvO0gNYPuoC6wADRtEal6pBq4GKgu0QlWIKHakEN3kD+U1ihqLYwLQ6h" +
+            "FqKAUsKtB/orwVxYoiSiEDBFoSmXQUNKKJ3VioAo2fwQba5oKPcEt4EovjwsKr+iUcQiRNvC" +
+            "pwalUfgCLvLiRJejcQZDj3CEjpCxdv4Ot+LlX89DyRBNdCaGjRcIAMujMnsF4KTRNxQJVvRJ" +
+            "DvRyD0hjeZdsBzwok6xxD36Xkf0AkzxOMghTNhjDB5zAcUzFRgxjOjKIOrQLOOTDsi6oHadh" +
+            "rUcARKSpm5QugE5znjzhNFnLlRkbddg0QaDgTgWEtbwp0MBAZy0hN/UlHXLTMqAgHYYudOyO" +
+            "kt4UtnLcEzLgCAZAtipwIFBns7S5ABAWaLFOm1b+q5su5wvQEya4ZIhbex9+2Civ7YiEOBqa" +
+            "AC4WxYr+NgguCgKYgwGSNU/E7Q2fyCjr+S6mdaCp1Q/LoCmb+4pc6lkX+vWuxLiJSlHOLXQd" +
+            "pW/qJvf24VKM70TjgmaYQzowT2aMxTjmD1qMA5wUA3T2eHosZjIcEwArrjJhGhT3g5HUzAkY" +
+            "YA8E+TL+UjZQwRrviuecwDIwjnUqLqpTxeaIJVQyyTHbkjO3S5QBkKsKY6ydJXP8KHtOTTPW" +
+            "OrxQq1ZQi4FRZJ44BiHoI3PMQBwwZh1hC84wpgumwTQzA5hpNpv44H+EGbkOgpimIWDSekAi" +
+            "AA80NVKrizNSME4f0Jz+/AfIIhUMFA1CmFNA2EUmlIIDtMQoDJcN92EmWgLAqM0mDJRumoAk" +
+            "RAKKVnK2/+DmlNVM4jYmqKQQLF5M8mK+gnu+jDJtcNLluwbB+OQNmhK3kW1tEEDD4oYttJgt" +
+            "lkqp1rbe0mgvzrgF9KIFrqU4MMg0CIMAYXddRMV16SgBYIYH/A1WYA5HCoI3lN44wnsG2PiR" +
+            "0gN83C+f/Mk0GHmQ/FsyqixZWCMBHKOqy8VGJme7MomrOFMFrL7qD6ML6m9mRtMPLGNC2ANT" +
+            "N0czNgAMnnaXxYFmXaOVT5OtT3Md8SB9sA4LSJA/OGZ9cpMzEAEg40N7vEdDLAGZu46BuwD+" +
+            "N4+ZluGHuF5EAePuCBJ1HKYAfrxHtpKcm9RXQzpDQ0xkXiSAA/6gCNwTJySiCOit9HASo2M7" +
+            "iKKh8i6qATBB+jFBI/v5Dyo9i/qcbVYeiVzhAZogU4iiB2bCtGmi25pV27KGpfCw5hfXudlt" +
+            "LBYl6BtdULxCQ61gUkpXL4CnOVJ0MACChwQJPG7Q2HGDBw0acsZJuMFg4I0XN+Qk3PFw4UBS" +
+            "BnUtdHIjoQo5IBeqoBGShoobKnTtWfhSDo0ZDeX4GEeDiA8Ge3Du2SMHFUqcFW/0pJGAoY8W" +
+            "pH7e6OJjoZ2TCw/aacGDwQ0nTjzSIGWHB04nEmiMI0LECY8jG7r+dNkA5ggRf1nAZClAo4AZ" +
+            "KEQsIUIDBYq4DGb8Fciyd9oOIhuy+DuCaERgM54QoR1gZkAWP4w3QDkCBk0WIlBGRNjrz8xe" +
+            "KKig+CnguoslLOM2oCEMBUwEPFiIIN57JPARPzvMEhk3zk8WS+O+vCkEAcKXL2W+RHMVxYKA" +
+            "Mm84TH8D/kshBBzKNFHj6k2TL2uQuT/k3ooQZLUguAkZRFMQ7m96qP/SRCEcgPdGNNG8ocsM" +
+            "ZRTSHYMDEggef89BSOEb3AkIXhRNRCGeemUE0UMPTeQXRIn7BCGEJvrtc2IQWlgxA4tuuPGE" +
+            "GzPoYocuOqrQglYtgMQDQk8ldFBENOz+EWRUN7RQnB12yOTEDkQlVBYpAumi0EBh6SiHTHuQ" +
+            "YhJKcuxRUVI0+ACREy3sYckONtFQVgsJ4AXVHkstFBJQOIH5lUA8JDCOTDusZNBBKpV1Ayk7" +
+            "dMHQDRJI2QUDi3XBCWnMoWJJFlkMN84RtPlm1xFm4IHIplggYsZmO7CF3AapKtdOqVAgZpcf" +
+            "XRw2QAGiIjIZIojIlQUi4hDRxXF8HTdALFCMAwZhR0yBBh8ZHGEJGnhsGpwlru1xxABtFYAF" +
+            "GP4k4OoARHzBQSEMFhIFeGpE84UuVjg3oHNllIFAEyOCV8sy+1jxryb7sBKjACEhg8kbDDAk" +
+            "RIkEchcEeOr+FuKcK+kJ8ER1TTxIIMUPR9hdhRoyqB6BEeeLgH8jlljiivtoYgGLMwTBYotB" +
+            "AKyLGzrq+IQuN+S4ElmFZomQWF0YlNRWIZWlkKMhqWAHSJJylWhITpCii5pDQhSRLi3A6QRK" +
+            "SelikVc2qRkVUj+NUxGZWzGJUkwMHSmBHIw2GjZBe9Qthy4qKPQkSiExECSeCQhZQKBOkIZF" +
+            "AQl0EVwBiy2HChGhNZ5FBnjs5Uemo+0QixlogRFZYLHYdewGA0BRABiqYRELIurchVgWUHTh" +
+            "xxHp+LMYFlhsQEQseIhmOSEZZIEFZXH5AQUWfJ31O2ehD8B8aGCMM+tnE1poYcX+tbyxz3bc" +
+            "fVEiAuAhcG+Jf3yxjxBCxOzGPtrtU1EUf1jQggQMWBDEvviaZz7ugScaanjDDGZgPg40IUJR" +
+            "4MCA8rUgBi1wgRkKGYX6B57+QfBDKbKAEHoQMy08QQgA+xf/BBYjFwlgH37TBStUwAodtcAg" +
+            "TjNI0RaiFZQQDiROANRXHFWQhDiJBjwgRVcgYgc48UAXDHCCVvSXEKNYZAdYk0DWgNIRlJyE" +
+            "CE8pgEXkYIeoKGQhaAobR0ISKDypQAL5Q0VBHhISO9wAI0ykAQN08QIrCW4gfRIKD3jQk6R0" +
+            "yjUYQQsRyGUG2ugOVXzxAxZGgAVqxYJ26kAEbdIxgkT+omIc1cICKo4Qi1hgwRKU2csGfDWa" +
+            "BPiGL7gbJRGOgAZExAKWhPCEGY4QLDB8JjBQsIQlUIEF5I1jCqE7QrcI47jkbUBKRCgAEfbz" +
+            "oQ9ZqAwGKkOMSHavN5QIX9BcIAIsYAGcCcANrBiYjtRlhReyAl9NEMLKtvcgdbkiGmVIUMkg" +
+            "RDIJOjAK7eKAyp5DMhDty3zebMI/e5AfTVhBYPLRggVU9DKY0UwLLNJCwTC2Mx2d0SgMWBgN" +
+            "7NAUlOwgASCZIxF50AWEFKdqWpGjVnQBxzuK5CEv5QhMM2IRGtRRAichhd3kiKe9vcSkJmlI" +
+            "Ul7iRJ8RaW4soUEXOMIDksj+gRVwDEkQc4TSLh2kbmZ5SVk6lYAV0MCYyPEUsSzRGObsoACz" +
+            "kV6qbFPJDVhiBLZspLdIkwU0UK9Z6hCHqzzRDttlb1njQExwfLWa26DBd6iKC1unwDofuEqX" +
+            "whMNuBDhCSx0LlXjWFSxcDJWKLwhZf8rn8XKsMLyPAx96tkX9/ZTnmzea0AkUw8CEKDBIEDQ" +
+            "XuoCjwOjUYserPB8+nqDc97QLon1dnvMjRBB+5Mvg5YIofzh38u0QNESrpB/VqAoi8oZwxsZ" +
+            "TBdn1B+cwARFSQURSAkgU9gYwhH9CURwcsRRSBIVtqexAmtU6dJKWiI4OHUEpksahw/KQt7i" +
+            "HMX+B0haiEWIpEcajjEkCZAAJ+7YNLJcjYlr7BtVDMJgIJklKWLxYTOJSJoNHGEPCfCDiiVn" +
+            "Ocw5yw+x8AQajDkr5JEmVWzFgzos4SnMKisdmMGWGcDQGzNkwJKliQCv0pGOVEHBH3jNAirg" +
+            "AgZU+OE2GRAlHjwBBkeiYS/F2uRxcuI8TIEBDBaC4H6aUIZauKIQK6SOhdSFQQsJATxw9m0G" +
+            "J6RaP6snzxr0M8esE41CHBCfyu1OAx3oseVCqGW6HREIEbrAD2miYSAKwgklqqL8AEwI4dvH" +
+            "EzDWMxfqbHBqCQscd/DHsiRxMSh51BwrXETB/ZEHclQL1tyQI5DScIb+LbkBln7WkYq0gCke" +
+            "UZMTWRESmdgR13NrL4MZ5TMs3vdLPoXIkjjaUgackYoCYOISSaLrrgpkD+/lTIVvdchFkcYP" +
+            "Tl3OWfIayWCVagM0zgxnsjCA3ZkBVbBBxPE+oynb+UZYiKnMpsDw5VwJJpHDQUwkuzWC5aDB" +
+            "yZpBgzIyEBjEAM8PVE7coqZMBD+opi3QwkMZ+NewRkDsAbVAAIsixKAgoIu1byhCACV0XJBx" +
+            "50Kjve094ZxnPr/BYggY7mhD1k918VNdDzJfdDXUv/2AqAcfWuClt9kDK+xn0OAM9UPzowUB" +
+            "qOgJ5RRADG1EKPRGmAf5tdrPcCglnWqlpFv+YYAKrqYCUgiAAeOsiI4MtkSDuNQjV/lo39Xi" +
+            "MzuuMX8q2MfXtOoEnNihC3J4iEJeAqeHyBEjCSnIsi3Pks4nyoWDwxIPVrLrrDhKwCMlyGKO" +
+            "0AW13IreEoANWg7DF2COQFnBsXgBwJWFDZzqlqKqDBRWBQXN+EHliABDtdqxl2B5wnaWwH5g" +
+            "xpEATTlvVImssSdG4CplRCDhR+Z3p7RFhD1MAcieQvIrR4CqcaRDHO0o33Q70T8G0gR2sB1F" +
+            "l0H6MkGj1T/pk2no0wTm0z8jgoAl8yEIpU0esjFc9y5NMANPQEHsEjIBhFwV4iCZRmlIVwbU" +
+            "ZWlNoFA9oAlawDL+KuJdMGMF/EMzT2AFAnBA2qVUWsE1CWElIWFEBHFGIBEWVGQQvMZEYNRR" +
+            "EIE1xkaAcgRSV2NsT8ASZIMSOuUzpBAnMtECUxFDASaEswcnCXADqDBDCEESTsAoTUNePhM2" +
+            "EVEQpBB4BsEALhVDahESAjBhcHJDXdBZA+FDCgEF08CGgQEouTEa0+BigbEoruIpmqMswiNL" +
+            "weE6m8FJA5ArWOAJdeVx25cOiJEOx2Ep/HYE7SBKsaMMnoAZnWgGvqQaQIYWwWErcDEaUOAr" +
+            "fIGLgAEqGzAOWnYE7dQ+QdAIKBIEtVALQeB2E3Iv93JbCBAFh9Ava6BaHxKN/dIG2lT+BlEQ" +
+            "ALWQjeYRje3SMOPoHykDIhbzBmz3HP4BIRREQf4hIQQSIiKSLyzDdSTSTj1gc8OIWytDMwoF" +
+            "MxT1gjLDdixECqxQbnZATjewDxzRI3M0hg/pNHIEhXIEbEURI1OBJU5Sbsb2Nx2VI1gDbXek" +
+            "EifBAE/gBHLAhWhkbHdEKEXCAGhSFjE5DoVDRCnhUylpETzyEEZUFOZ2X1eoI0lIkaSgFePg" +
+            "RFSyEFaCEWXRTCnFGLQhJc3DbzswK+kABa6yF8njK40TOlmQDjtQF44BBQO3HLFjS6GIKpui" +
+            "HMnnYqrBOpj1YwOACOqXKrGjcOPwO65BY71RlhkQZrEwArP+QxqilDjIkTs7sAdQgFss45i1" +
+            "8ABNUG7oMx4Rox6FUAbLUAvI8AnZuEBB8AeYsAxt8AnIEAUlggzA9QVaAAH0AS9Z55j+owly" +
+            "Vk+6UI4LVAgUBB5cJ4GjhZsigi/0iI8apFD/GEIJpVD841D/WEIx813fVW6s4AZ3BFKkwCK8" +
+            "xgqE01Fy8Ho4Qgoc4SQ3oDM5kmoqcJE4ogIGY55g8UI30gIqcEc+2EIC0CiCo5IewTZdQjjG" +
+            "ZhYHYYZstDBLQgNOMFR4YlUn5QMlZSWMkpPFtndMNBDwSXqJIgFcARZDcwOdpRDM4xaLYxho" +
+            "EX5H4Ex1wRexEEueIw5Hpivh4hn+iIAHunRKttQYsfIqZekYpGQGGxBllZSjlDE7mqIaA+AP" +
+            "yuEZqrRyhYUquKRkkmEJp3MEndUFnwQFgBJM1GIG7eQ+zVgGQgBcZXCHH7KAudUGtfAJO6JT" +
+            "DfMJByIH/VNOUdAvf/CFn9AemKAVCJUfQuBQliYErpCMT9ACCCiCFPKZ86geqiUi0+WPEWOn" +
+            "xggznFYiD8UiLoJdMyCQ+zAD3SUjODKduhA+d6QzViQAnXd4H3VTDMBCEKELORASNuIkOuIk" +
+            "68kAbpCeqfYkO/NCLsSdLdSDeBI28NmEP2RsQTgOepIAFmEHjxI2XPEVHjEQXFEW8CmEPcgD" +
+            "btdEFSH+OC3Bhk70d0S4KLG2GAQhAePgOERELc2UKbdjo6uDSxlHBNNwiuKHKmglO4igLbEk" +
+            "DtoyK6XiD9aSSNr3ivqGPLAzSa6Bo2+JCNRzKqWCS+0gGZsFZDghrkQwVmuGe2BgY5+BBuDE" +
+            "Mv5oMVaAH40Jpv1DAtHQBkFADlHwQu6EDGqAI20QADiyDGvAIUvSQIXwCRBxM44ZTix4jK4Q" +
+            "BB2VMvqijxZ4PufjjATyICnoTVl3qGf3Pp7WIpBaM82JqfsQPyySIDG0QiK5EjkDU4QHn24Q" +
+            "X3bACvsVQ3+kalK4kzuTI+QFnzMAbBijFX63Iz0DRV1hkVGjED4hB/tQrXT+hyc4khGOMqwy" +
+            "oTRR8xU+ZZRToRBrdF85021M4alRQ0MwFVVciEM3MIjHihywthgSSxpPSgTBNEq4JEqeYQkD" +
+            "EGY0VipEdhsPVxnZlwXisBzpQDqT5Al8sH2kE7uIEQvacnwi1xhmIA75WldYwK/UApbPQ2XE" +
+            "UlirYzmeoA69YX6alQXl8yGN2QTIqAUz5E5Zh1sIIASaGQR2EAXkwAEQ2AaYYD4P4AqmiglN" +
+            "oAvIAFIsuL5yoAL6QWolUoPuYwXIaE0tMI9Byx2WFiLqESLu6HX7EbT6+Kgi0jDYpQkIJQRl" +
+            "ADMnslA1Q1HxEyNWqyMzwqnZmQMCIEcNuSRlK27+OWNsQylE5MUKfnpHujB4dwQWH7wPdjAD" +
+            "AkBsOFzCAmBF9eUzJKxFdtQCFhGuIiUBT8IVSYMS3zk0O1AcOkVD1BkSWNG1Qwk1LVFE0FY2" +
+            "TygkYWMHDCBtahEle0IKxRI2UnI4RMoXyBMYzrQBclUAG2CYG6AONhZMqpEZWXmJZakOqQIG" +
+            "7XB+waIMB/sbqfJKAyAOkZQbqZIF7fDHUBBlr1N8vTEOXTAFciEbmcFWaIAG1hcs1xJM2HcX" +
+            "zzQi0VQGnbC9tSAEWmGD+kJCNHMIamAQQdAGAiAA4fQGn2BAyLAM+esKbRCab+AGuEUfIOFp" +
+            "DGVRAqAFJISMFhB40zX+WnY6TTk7UN70Wk+ntBYsqe0jHwv1giRSgzVDapRqtSu0M+HjduXm" +
+            "QvvpdlfBQnd0zmFMThmVA2U7Axr5nW27Dy3hM2SLNUpFNsVGCj+yJPf5MwywbHIAa6yQX2My" +
+            "oCiRUgqhEG6CJ+NWEkoTQ0gURL9G0Zcb0H/3g7x2a3vQREghYCvAoNNwSAqRcuPACWfxGc40" +
+            "umqFVtOHGa8oKo4sV6FjCcrhyYiBWagycLYUTGPGOXm1WBCHKlzZV7OSSVOWDo3BvBswLrPi" +
+            "LbaBKnQxcLqES84zHNkiFw8YTQpYBq6gBkHAEiMCgOHkPkLwCZjwM27aEg/IHhxwA0EQBdP+" +
+            "SgCsEI0atQ+H4AqJIjAPtV2a4AYOhYyaoBW6tR+aAGcIoB9a9wYPdcCQ7R8tMyKQzTIaDIMU" +
+            "ZYP/GGqfncPx43aces6qxgog5XZPI8YEuGqDhzUAM50643crVG7ipocMsF920JBVZKo/4zNL" +
+            "iK03MANkgSWk8AQrQVViIjhEwjYO5m1hA7gzSRF0p50tSXcq8DeOQodX6KvUeaxw9NxbkRRa" +
+            "MWGq9EddoFkYcSu+mBSv1AUJEBzPZ6POAwWxIlg5xhhLlnC21HCVBAahs5aWOHwxWipFDcio" +
+            "MorM80p+gD3Jl5VVqhzDB2QWa0meoTqanDsiCgWT9ErRhGm3ddb+tSC/pMBBMUgzhYAM+4GM" +
+            "BxMFhYAJ+kCaQdAVHKACTaAKSOEDM4AMg30DKuKcHXxdcqYJNNACm6YfJ+SY/dgyE7yo0uXY" +
+            "neaC3lwzApMiNONBFEXkGUXC9MwKPYLLoLqRB7l6UXOQpwptWEO298F6TtIC5AURlPfBO7Mw" +
+            "cg5tKWFFIeE1RVQRIFUQhENEQlIVH4ESTYNsOGUQIMGF4vYzVoQlctBRerh6O8IUXbHai26U" +
+            "hWMQNVmhOaERn0EpmZdyHno7pLE64ho6zsM8tKuLqVItnrB+ZQngQFp9sxJLyRc7Cd6JpfLI" +
+            "1ZdwywE8pEFlfrCWTRo6x6eIzHM6tiP+F52jcBsgDrPULIARjNEkBE7uvkGgMzlbg+BkBe3U" +
+            "Lpz6BHDSBj7zB4UgdgYhB1agC9uICqigC0LwB58govJTM5H61nwaBDMU2uHMXSzygi9iAc1s" +
+            "jxZQMk1gAfryqC4SM2JX8ALzBDPwgrQtnTAUbIIXQ0xkqgOzX8BW0DcMJlClPy41Tm+4hSvU" +
+            "zy0QqiphbDNwhUWxeqhaVTNhlLDHdj/T3T4DNQQKuIpHkRl2X0g+QwRaa/ssR3+U9CowAzmE" +
+            "qt+5kOSV8Val9EFyHAWxGAnwR4uhGDTgYrNoO4fz4b1Bco0hot2SK7bxVkO9F6SUSbYjDiOQ" +
+            "cQNXfaHjipj+ERmZoi3LERiokxsD4DzSzuA59hna4hnHMUx+OQJ+NbomKuxj1huOHV0o8r8P" +
+            "EAQ68k0sA/EbawVJRANPwAFlQR4egSTyIwC65QNHEKlv0BMwYqk088JaIDDIKAQVoR/fnMHY" +
+            "5VCbJvuRGs7U7IIWECIkIoMRX0L5vkJPYKmrhpB3KADmaQH7xalMtDM1zOfZucJyRArkxNop" +
+            "/wRaEd4xXMOEwpEghYWPK25TcZO8JoVGRNKEXhUVYYQrYaCBDkSDI4RJBEcgJTgwtWz2BRBu" +
+            "dKnQJYeBLgY8Bt6gQUPCDR4JxiXYwcMJFIc7utDgRARLFiJd/ECBQmQHESJQNqD+hJKFpCUz" +
+            "lixBQYTITJYsZnRm+bgzVk00YEbg8dTupjpEsTZAsTTgY0txLrMYtZQFppl0Lc1gQZmS5LiR" +
+            "GzYUgKITCxg0iMBAwWIGUZYuRLIsJSLECoImCIIg4KumlhAGN4JYEdJEiIUgmiwQ3mdB1419" +
+            "iZ/MSBxEl64gQvZp0rLvRosZM7QIONjYyj7U+zSjrlVLi0MLWrRYoB079QwBs1UP3qzJymxN" +
+            "CHrkFaI4SGctoVPrYnX5yfPHdi7rEtB8hi6FrEjvcyPgxnUeoVi5sSPnxnkeBwceDMx8HysG" +
+            "KuyQ4mGH1QwVN+zckPCQ+ePHzCPFDoFu0MUOJ1poQYL+y85jgAYDE2pBDhpUaIEB0iSojweG" +
+            "9EvIifM0dIIHGuQg5cQbnAjsvBbsaIEHHkiBSAUVmmvxBvluYGAf7/QjD0YaSHmMhi5IJKKA" +
+            "ihLwYyOwsDjCJCJGQmWHI7DwI8qosvBnADPEUSmnWHCCCZEBcrIpFjM8UQYPM2Jpx6abskCk" +
+            "nTCzQEMqcXRya6d0NpirqwKmQUlJLVUaYSs/9DwiCzAaPcKPj1aaZpyU/LCgsdmsCCIIC1yp" +
+            "JQhSVOC0OCFK3ZRTTlGjzYpLNdO0sczcaIw7AXQJ7Yl9ZlAtNVU12cfTfUo8bJ/OUrNCEwFm" +
+            "wFXW1C4NYp8eENBkU018LVb+i9+EEGDbzpT9TzoG7BD3MiF5JMUNVsTd50QG35vOIufOG/K/" +
+            "x+CTYz5cAbzBPAMfOwhEXeh77IZ0nWguXOkIto+VFoJMUZcn8iMRvRbI7ZCGBCQIxQ4VGpJj" +
+            "RAg9lBFHHkxsjxWIpLus4oTPs4O0lBtMiD4JaDBynHF2KOAIKJBMoCQiGnryJJWwgCLRmEaq" +
+            "Khajc5oLLTLNVGcEM8m0ZAM3eUrzLTD2xAkRdW5KByeSWCpJJH9Q8ieLWEhiNKoCdlrKkqw2" +
+            "8OPRpcZB5SkL7NKsb01rceUwDpapBZPDMVlm8dYab2BxTCJH/PFlFK/c8GUCWHxzyBW3/HJM" +
+            "oln+Zh8KdcWWWNSSw/VWXmcNognOkM1ssGJTV/a6J/5rcbrpBNJFoAu3beGGJ0g794mEDtzP" +
+            "QAkAZkBI8m4QEiED3RA4oeXTDReh/XZEiFxdclCvVjekf0whXS7ELlzzOTxPPxATohDCmkd8" +
+            "0ObzSEF4xQ7Po1GFGKXrM0JK0YsQoiAB2KE+CNqBRj4WpQQ0RElE4MRJiDARf6gEJW0Bw5Og" +
+            "EIsyjaMAYBhASg4Fhpx4IiloqkmXYiEONNzkKlhBhCfUMRe3vOUqhcpKFvxAtJKszQwrWdQA" +
+            "BjASsvlhZ3aDwqSwYDQ/MU0uO6HNrmZlhda8rg3LoFziHue5yNViGYf+YFzlLBe5xZHxjJ/j" +
+            "nOQYFwBMrIF0NHgCs3glAB7hcR+5I9ZgpnUqLcROCIOZAWdusyxvwYcB1tOPysi3j4GAxw66" +
+            "ktfAclceFJ2nOfKSTozS95kHmYhc9ZGe/r4jAFKQRpS/28d83HCvAzGHFRKwkBwaBKL8DQhB" +
+            "HGoeQ/jHEAn4wAmkqNnzUlQi6aUHIuZBnwoO8j6XBQxHjxEPaTgUCiOZhAeciMsOnICScfBg" +
+            "HEdYCZUs4aSU4ORJ/nihk7g0gCNYoiZlGgBQwBCmoHBpT3kqSkzc4ok6dW0lX1rJ2DaQjihl" +
+            "IStjiwkR0mGJF3owbSbxwwa4gsS1+EknYuH+0gZ8cylW7YNViHMDbTqTGdUUR6SdYYUmlHUa" +
+            "K0DMDULQVXNs5QZd+eoyusLVHnkkSwuw4j65wliuNoOaWq0OYgQRzaW6dapBcqp2It0jrnKH" +
+            "PHBNZ3sEg6QbyDMg7mzvMaRgRSsN1jEakAtCDGhejTyDP/cpqz08eIiBmkPW+ZBrW+Ly3T4A" +
+            "uDKILTIhCuEQwhQIIRXUVUY7gAiESNkQ/gioQRAh5vse4wQnxFJIQp1PqGAkJBWEwpasoE9h" +
+            "SUGDcTQkIuNYARF4dsEC+MMSRwgUWaBwhB1AYQBiEQoYiAATgIpFTwMIkxna8TQVmgEMNUxK" +
+            "nmxiFTOMICpQSMf+TVqSBXHQrbpY8cNDXcKzdGTwteB0rQ9VopPZeq0s1l2UlVSzqsb4pg1R" +
+            "CBiK5CMkBgRmPtuTkRMewrEbTeg8chheyN63vBRR6CH8ClELpmAJLezUqLmC2GW0M5nWPeuk" +
+            "fxQpq3x1n8vUKoEzGFD51PM7lLHiNHbljwC6o1+IKGQfDOjCfhCLm4OQlgbPE5KMUIYjGQGo" +
+            "VtQZ2GWscJ3L7CeWZbUDdz4DSQNRaD3TyY+MOCQdGgwPSBzixH9JRIMR4VJG8ztfqAYiI5XF" +
+            "cl8ESxeauacjBnBiBRZpYAQlUCWSdEG8fnBCAmYykarM5CdDXBSdfEiEWMTwI4r+iSf+MoAm" +
+            "M0QgbDgZQFS66xa37SQnZnDK2P50UChMtCVpm4YfXJJOL8kFEXfSCqsDrcQjZQGkp/kBqxCD" +
+            "gAtx6DIzZo4zFUQQU+KIRgdpgYwCEwqInMcJcqCrgjgEoixLEJoLQsUReorHWjVHBUiejC5Q" +
+            "F+HrlNVXR5WNBXK6LYhNL3wM0I593ECDJu+6lQZ6jxy0s+YGpXVfDKpVWuezY3E5aEVjjdBl" +
+            "DtKjCqe5ZEJVwU/JM0krDI/ENxAxQhg0n4PlB3840o8u+qOhFMloeF3o35ohRL+K9YtF+SPt" +
+            "ftJjcDvkeAcDIlECYPTNnDnhJAUgQgRdmwCJkCS375yL00r+0hSlZOFQA4DCCMB2k61BXU5D" +
+            "XG+YhHKTnrSJbVEpqEIn6oeZpFNLFRVHOuIpDqWoJEwkyQpJSuIns2tUVYO0gBusYHch6CYy" +
+            "kTlMYlZjutS4YVODRM3dU+dtFz8rda3L1QwYUEflFOs6uepM7rZVR9ToSle8yp2timUFPHZG" +
+            "j+RxcZp3lN8D2btAyZIPHvczg03WqLQ6Os8T4LPj55nndwPReFqfEFOClFI+bpCPxRaiHiuA" +
+            "HvY6+p1XIZl6evUoMNVB/YU6NOYIQUhcgVFBf2u2ZgbkOuQz097wbjRNlA0oXJwQEowmAqEu" +
+            "UISuXRiakpaks5ZQCidWKQmjNnD+BEj7iBaCqBYaAEsgoTipJz1Rh0ljIagThw2gG+qiG5SQ" +
+            "iSspC5fQCjNgCjTpk7IIkyMRlNkymwLYIVNzi8NgldPQO1b6Ac0Yt9Mojrp7JF2gqeTjjVmZ" +
+            "AefThdE4KuezgHEbjedgheIxKtnAo9PgkT1SFjewvavKDT3iDuVYvNDwKpu6DHSxgxyAJEhS" +
+            "ARcTgBbYlgHRQe/YpBuQFewQl5qxpesIkprhAdgTFwI6Dxd7PserD6GysPfYD4FQpkVKF0hi" +
+            "ty7Ej4ZLoMuQrPGADzcYpiBLl/kYEfNgNgPRH4OLEYWgD0aMETkwkYaoq2k6CDdbHwGQj8CQ" +
+            "EWIamQb+YiwiyRid0SY92wB/iAuegAKc8T8i2ACs2wBxsAmm0JODkqfsyiA0+ZoWagdPUCHn" +
+            "6pKYkAmeMDuEQgmu2z+qc5r9O7WuiBKc0SCS+IiZiK4hugpW2RQrqjtM4Q5yTA3FawwdvBQl" +
+            "VI2pCqSymjDUgLxkEQhlUQHogJhaIZbR6BZdSRYdRKoh7Aw7soCeoo7ZUDwh0AULkI4hE4gm" +
+            "c6UZ4KofAJAgU43HaKWGmQ7pWR7QaBBncp8kIwUn0w8LMRAXIw+h0o8TYQ5XqhfS+p1l4ZHT" +
+            "iCXneLz0CZWY3C+Vo8RHVKZSIgVk+wxoQo+JKZGAOT/9MTMqywHpaSQY0RD+XrIZHtAIb8qt" +
+            "I3gSsDgCf8Atj2iiKskCngETmYAhRBCHlICoDLQuKMgTPcGDmnihOVFGrfOSDWgHL+kT/vO0" +
+            "udAohGK7g0ooS0ibkiiJjyCbLCgTq+gaRFiKlkCMkLoUO3qvILAjPFqMwqON4xAACwg9ZmGV" +
+            "v5tHSOKpXBGAySi9XmuBJuTC0vzH0/SpXBGI9wgNQ8IVcdNBmBICWemOBvEqHnCx9GkMiJlI" +
+            "rnIMgjEfK8wfhoCYJ4CIWoGI+IiO8ZhEgQlDdMFHf9kWgSgN7+AYIZGOwIPIsiIy8BwI5cmv" +
+            "g0CQZxqXIFke9+yeWtElScyyUFIBOair7mMIBiP+EHEJODvgBBghF8wCEgCNiGk4gi44CUu4" +
+            "IIxxrR0YB7Lhmao4GigwCgjkoFPLCaZzmpmYiufakzghSw/FiQD8oC7xLoVKBz8AO4VKCaxZ" +
+            "iZwQBySaiyMYm7J7ia1IKLK5LdOwC9uoTNQoKapCjcTQlM6EQVfRjJwyqsMQMXQxzXhMlvFQ" +
+            "Fss7EAaYvPvIDR6ZPF05sibEMFxBQtS4MBHDI8RjlpmaDvIJDF0hD8GbsebYjyarlYY7s/go" +
+            "RRv5zhhpMs+4JYdspekIBZK8j6Haw4ABEekoqUUSCGyrmOZgjARCkJfhneckiOnAshZBTwPR" +
+            "kRMRl+5bERiZEPw8JoL+CZj94oH/oZ6BsIgVOA9OSACG0AgRogGNKIAp4YRxuK0oKYkHVYmr" +
+            "kS0aRQVgvRJcbBs/UahFcQuFmrpY8C7lgi68ZJsWigqdSDqecMyHQqj9IwmlGExc3ImWCJMC" +
+            "YBtrHMuu9DRyyoK/2ZQknExjST7C8KPGMDecmhUllBWaWp37yJ1/ZI7rMM3d+4wnaAEv3LZt" +
+            "CdLMmxXNqNM9upRxe4/qyAF5M0dva6U4/Z1xASvdLI3sickV+w434BAdvAwGQc/7yI8nsINQ" +
+            "yKwZcIEQc8TvlI/GWEhv+x7y2D3mkJ4hs7AmrA7TfBnHmFTryQ7Lizn/OREaIRf9Uohaya/+" +
+            "FIEmlT0PCKEQD7mXTQ0RbzvFkZkfGrigHUCtKAmanwkJSnmSlHgi3IonpusZ6kKSW9SSceU0" +
+            "hcoTLLBRMdFAFDKumDCTONEJtMOJb3QonEgbnIDFqSg7wM0SM1CHdiAJP3mUW8xKKNAZGgVA" +
+            "RgHc16E73TxYWdGUv1k8zSQV7pCVg63CnsINLhyyJxxFXSEI25sOJAuN0EgOYzFIYolHqkrC" +
+            "gKyOm5VNRj0yAbCChGCk3xke26QXikMNS40OpNKRjtEP2MuPBLKZ9QjD0TAfAPE2zRCq0ZWV" +
+            "64gPYrGPQJQlIRhCKyBCHbzS8ciVILPP4hMIoUqX9Ak4cgkFf8n+j5WsEP+pK28KGQ7JkU5N" +
+            "vZABmMTyJhg5CY2gs/eLv5yJtSNIgAIQC0lxLQT9rTx7qJnogrYIUXG4J7l4IZdwkyHSibh0" +
+            "E8YtXOzyoXSAwHTgRpzAArfEmp2QOrGQCbFoO5wgVifxAy5RqGN1CSwYgHBkR3nUu72jFV5h" +
+            "FgxDjf/oPO1A3/vIsZ3CjYHFwopRU3nztucYzSPsTCXsqZJCt4ptvpd5D69Kyel5CFnZj03y" +
+            "Nk2wR2vyNt7sDgOZgfmQF8hyJv+xFe+MEbuyAvtAMsucgXi9DhNLSaFyPucjDeowKvOUDs5y" +
+            "A3aTDunIAfJJM0nmGJXxpP0KF7ZyAvz+qZBlI1Vnis6ZGRnTasUHlYAGij8kSVB/qCiWyJsu" +
+            "6IKSKIBc7YqWmInbiooFZZuqWFE0yZI8mQu3JOGaiAo0QSHqItcOrpMY7dsQDVGGwop0SIcw" +
+            "wQJ/COKi2z/iqgmjgYqXeJZSCdKKnbDBmKnCWzwkPl488iqBcCYiu1Kb5R076Dze49f0eQ7T" +
+            "9B3FsA7NE42FrEhFpg7t2M14exkhIY0/NB/obIzmeA8OiUfmON/P8KrlPa3vvJc90qQHqePO" +
+            "nKRaQR91KZUmUELYzZWIZmI+bjgVo7CfqsPxWJiYc1JZojhU2iyDi5Dn4Z/1OLlOrBlSoJB7" +
+            "ST9WSKx9GRn+UH4InasIUN6BBBCJPAMiKKhlJUpFo7mSrCDMDditCFyKpfAHrCkUPUE7r6nW" +
+            "ujxLp6nWqdC6djAKqOOTqOiTqrjma960Y9W6TbuJWEChxIyT22KKmTin1cijlOKO2r0NckzC" +
+            "ZcG250Oezts25Am+pL2M/DA/lqkY86OOZIFNYjHNJcxdHvEdRn2455s3d4FIcAERr8KRUdSP" +
+            "IL0BLWiOzOKRRdojJQsQgplI0CgtLIQeryIyGZmpfxYpCRsXuyCM8eTY8UAXkXLuA8lDnBJj" +
+            "LOzSgyGriq2O+XiBnL3Tj5EA/rGQhgmZ/0rqSXwfqgQSWk0tGhAU3IJqlJiGWu7+AkoRFJ5r" +
+            "oEUplF3umcFm2zLRCnFguu1qk13UumrOrp+AEzjJoTlhm+jaP4Oy22UF1zwxikMxrk3zBOWy" +
+            "qEZRirp1O25eCroj3dGeOzfwDaoqpNWwws7W59e1SSLUR8C6Yk4VuemomHvEsORLluSrozOV" +
+            "wlpxAZEqz9YmEGSj43s2iAZhjgcpxIpBjf34qXOx6OnUWR6BM+g0zfwqqyE76l27FNL6Adxo" +
+            "uDP2tk2ZDHNjDnQ532R5lne2sOSTFe0Ysq7CQkjCo/HgHQvb85MkxT1mq4mZEDBjCPkYnvtk" +
+            "pqeFkQO2IFoVFJOYCNqiiNhq4JHImW3OwA0azIpqm5T+kKHqMoqPgLRYGJOtqK6kIEZlfJML" +
+            "P+tjdRtobpO4PhRIO0txKObqilGXADsDZAvr0qg4IWLFMNOSEo067NwfhM02JfEm/B718B1L" +
+            "dTPpuRAJUJA9diaSRN127ExGpQWkqsN+3kIemVQzPUPvwClW4IGV7Ljuyzx1kx6RcgGVq+1W" +
+            "oufTqpH9aLiFNBA5LR508VfHu6nfQXHQc/PuGI06bAJxHFPKgNhtcYzfOd8fh9+Xmbw7h0iI" +
+            "CXflSTZ/WZFQ6ZgrUyBJ7B7/aQFQJpGv7Y+eo5SGGKcLuqCyBTs/EBRdLYCRIIl1IolNd4pk" +
+            "nWE9wS6/TQcwCJubeOupyRP+pAiTQaNWcG2KaqSKYS5mv920qCg7P8GCc4qFbB6ARslbPbmJ" +
+            "GNrAcgbCI2NOb88j0K5Y5x5k83w8eg6s5/wMgr0QgiWwPb5fBfEePeps7ojH+HUxQIS9H5BN" +
+            "WniZ62xtN3BZuxpqu0OlPC+X0eBIFWAWbwPk6ckP4kGN54kOu1oXfEygMNxZqsIjmhUp9NWU" +
+            "ky6ru2MFdgwq02BHocK2vkHDM25ToYI9ZYnNdLGpWlEZ6aAPFhkXi3Em/5pE+4wxuqrKcdiD" +
+            "jfjaidgBR295XNaZGg61I9FVrxgnXfw/B3eJCo9ruiVhqtkaPHBAvhYHo3CJrk//nMgAtOZ5" +
+            "o/D+dTApZqlPTLfctKVrocLtEpx41y8sK/9HXYDQsm+fgH1u9una90SAG4EEWQnQNUOFCl1u" +
+            "dFVUcaPFDTt2GJCSo4tGCxUiN9JQMYPBPjsDXw5kKMRiS4YM3RR0Y8eNG1asrCAcyCBHyxus" +
+            "dN24IWDpDV0MWrAceIOUz466WHlciFRXxBZXIzZtIcGJrqt2mvK0Y5EUqYMDyxq0w2of1rkW" +
+            "9gkZqGmgGws991kRIqSJBaB0fxoMatjgjMY9uRqM+Jgg14hlSTXVKCEpqacM7GCmcYPBjc2g" +
+            "b/BgS4rHDic0aOyI7cTJjnGx/UAhQgQKFD/+iOzgvUE3kSNHdvNGbin+VpZ0G8xkgb7cjBnm" +
+            "sahnGYEIUXQz26FnQYMIzIDu4L2DyWK+HSJ1iKpTFycOvPrlWcSpn9/cTDv28D3pRx0W1qmH" +
+            "hSVYqJdFEBbcZYUAWjBUVkF0HXSVG0+4MQNDM2CIkIZPlFVWC1BhxMBnT1Fk4oib3SCHV05l" +
+            "BtFOOv3Qk01+MWTQQRBR5qBFOrGik1dH6eLXVKw4MZUbQszQwkUMSGDRDE1JJZcudlQEmC4l" +
+            "keLEiwJQ+QRoIE41Q14zSGSFG1SiOVdgTAax4FxCHGVmYRbMoEkQGhpmwRP73HXTj1z5RdcM" +
+            "pNhR0FwGlbUoQhDpghkpKrRgR6WkINXCUar+JTVaU6xJwJEEO7y2QwLTjDMOEV28dgQWWBy3" +
+            "Km+2EacbFBuMg0p0Wdy6ARgG+gNFFukdcV0715mBBnaIeGIGgt61Y8ly74Fx3XsDUOddtu9R" +
+            "tx1+CYKr3nPevaedsvy1ow514ombxQbCppMOuNBRFxNBM8yl1Qz7aIiQAE/MkGFBC/0rIYiJ" +
+            "WsZARWU9obAKJlLa0YhinXVDRp8heqVPO1kh0VEH5WCHFR5d5FNC+yy4E1Jt7cODAFipsJQF" +
+            "ThWFFlwGZXyVChA+cQO+DPDQlFNyIZQUmFAJEDDDCLWFFE+aWCDEE09YoMVeQLkEVJx64Tlh" +
+            "T25YEQRBCGHpJlD+YB8kQKEFcRUivi+3xFZjDAxNyqUgWZUURxVfSUooY/HAAw0SwGYbq10Q" +
+            "kYCqquqWgOJH0DpOAUT4s0EWlkBRAG/CIodFb8/yisW55FJrbBYIogGGfO140qx36nii7Ajt" +
+            "iNuOd/lhBx+92nbbjjjuZYBIOyNoK4516TlrxgAbbFDesv5leNdA+2p4UdIgYmWw20KXdaEK" +
+            "T5SUVIgbjSbHw0mJNtXDmKF24lk6RZgQTxZE1DFkkgnAgBBqgu0UUjfwJFIFEQBFnCIarqhF" +
+            "UT5DikjicoOWBA1g3bsQUmbwkUktKmZc6QijdGEFNe1rIIUSwkGiFqe7RC0vYEsgyoD+Ir+j" +
+            "8AUwMaxa0iAzMx3p6CohMlGj+PUwO9DAfC3qDJbOIge1bARLPJAAA5zAAyfyYAU0SEDiaIA4" +
+            "KhZnVYgzDhFU5SpL+ME5nvMDcnJTAMthoQBguJ3lhJc7M4xgXOfJViyY5QlEXMc92ZJPLKbD" +
+            "nevEgna205bw3iMObmXLP/Exw3ywNYJhrdEM1crWur6DIfkBCif7cMhLpvavt4UoKGi6pEWw" +
+            "lCmKbGRFLZCDaAIHMdLwADRyoZspl8Iotu3jB6x4giasd5GYJEQAaumJxRpmFI/c4AmsEJ/S" +
+            "NOUCuqFsJnMB08nKIgQ8kWJqQIQMVjKZsbipAGx8uUuQFoP+siAIQU97octbMOkTYEYIIQkp" +
+            "lPR4sr/EuAUm3auISx61lBCVpSkdYYVXKsIWtTAAKy2YjRPkkJQEkAo2TgAODxJAAyIU4DiQ" +
+            "S4Dm0uG5I2hOHBuYHBQs0cUznm454nCed55VrcsNi1sjgB231IEHRkLLd90iHunUs1P+EJI9" +
+            "/aHkfLI1LO1wK6nEU9Z21LXG75jBEskCw2EAJb2BLGZfGaqMRWAUoqMAsCIN84obeChLjQhU" +
+            "NIgiTWdQ41WnJFQtOuqJHfayE/rNRScrPBmmBMADBrjhfCGyw58wY4cp8UAXWuhYP8tqhb2w" +
+            "Ik9CEEALDDIVieyDSgOR65USYgX++gGKLiqIyQwE0oTTNqEMglkUDM0ElILchSdMg+01P/hP" +
+            "cb6kYx8DG4YOMszKpO1C+VurCkzmkYVl1iNO8QlpCBfEG7yGBkuMTWtuoxs/gNEPGYXCEXKD" +
+            "UUsg7lZZRBCvfCXJLMRiAPqBAhaUN8lkNTUCd/RO6rrVuvFsJ792ZA+z2sM7+AhvkG7cjiIL" +
+            "2To+vAcRaLjptpJFO2U5bzsIE0IQFnMQoPAoKEdpmMKOcpSB0S0jmJqYCgaXvv+VBimpidJn" +
+            "ZJkouYSiLRHxSQ6KFJFrhlOe+3BBQrAC2JJZlkouUMoSG6gTi+TAbmiCy11o0hLEPIpsH5vU" +
+            "vvJil57+7OvDYGvCQOIkNi9vEi9N2N/+LOCSJnvwg41hmy5+AJhraqEwP3rZhK5ZMrVYQZny" +
+            "vIjGylLAj6glRMJkWFlMJAcJsHIHQXvNbCIKm4z6A6QFCJY/tpgbP2A3WOmAgkc34DkwCAs3" +
+            "wnJXdMhzH2xhq7/51VZ0uHXIm56rdXf0hDrUlWA8UrJb39Ev7PBAa9hFIALqSFfrxIPIWBir" +
+            "XMPzjqwXdZB1OsQtfCaSRDT0MoAS8COlYUD6RvMUjkDRDrFsMdDYAkCaVQYiNlqKmKyQvZEB" +
+            "lhUMWEpZ3TzMj/A1oKlpzFkSwhFdLGQ0L6HSWfahCYcIxH/TDmHSAOORxtD+RDBuEUKNUPaS" +
+            "IJx2f0FAwJhDqwJS4OsvDDoMTz5mgQqX0C2f/eyFracjDJf8MJ3VYQE7AiRd1HhGoHmBE4A2" +
+            "uCXuwaKsAc4OEFccP9TGOAWYnOaI8K7QsRemm3MXbqKD7GyB4b2ShCrpdK1fPtyRPfftOn/c" +
+            "qGv/EFjWd7SjgW8d9l3rlNn5Xft2PDEwEcZwam5Lt2U4tBCEKHNLGSlop1DjGueWBjWdQqiJ" +
+            "EuuRIAkQJGV5AU5MhJOr0A/k8v6gvwaCKTfYrS2swIwwg3aRsyiT2jdI0qIsEoQAKgQjm7TA" +
+            "LptMigflb5oNuosWLDIzXQhGMGErA/EtoKcgRET+Ezx6mgp5cpAZnI0vB3ELQ07OTsNkCPsD" +
+            "WZRhfvbbi+DkMWWpGGlMhDfCyYE2phqcqabRxXGgyuhkNI4ljvCuV70rN5WLBRYGgIUNpEOk" +
+            "gYGyqMeqHdJ7FGBSjR0i8IEyqN0CuoexKQMl3dqqMYt7zNp91V17FJJ34IEDrl3woAEayBoi" +
+            "KAOB0RciBIkmvYSTfVigKZNlWASIEITC+E9AMYAcsI8EbIYT7UAP3kAoXMkN5MDqdQamoAYr" +
+            "5EBCYYXK/BimtERCldWOPJALtUSooMzMxEwOykHD8KAENQXGSAi+SYST5JlsfZYAvNa/0EWk" +
+            "GJzyGZyOBUZQCB+FxUn+X5RBE3xWnGjCZAkGkwVMCEWGGrKT2FyYbekICsnQ2LQgO/VEOOGL" +
+            "CsjF6WGWzlBbQKEGi7iGiSEOqdxAqsSGbqQKb5wOKfJGRlkCr6jiADhHtYwAGFjOf2nL1SHS" +
+            "fFHHfYmHJ0RAgoHg2p2gGcyafq0dMH4H67DdBgrjMSpDBCxjMCbLAuoXuUgPvjDGLy1FROwZ" +
+            "QPXQn6wERsAIRZBC+qTfa0CXEwFNRwTNVnDbZzgeaAhAEQbU+P0Y3dAeFMoV6IVWS/hZWaAJ" +
+            "M4nPWWAKmlAEQpAEXUBThfGLg0SW8VHIXGhVXmCjyyFAYNyF2NRPXjxWDyAAxzVBEJTB6z3+" +
+            "gRbgxBPMoUGM3L5ogYYURpx81ks0RGE8FlDgC+cVyksM0PJBHkYQiWQgkFyIW+GVhhS5Rhcd" +
+            "zjj4Q6rgxqTtRnfxxhHwyuYAYEmtUbUUVXW02nk9VSQJGAfmlzLclAWaQQZoINt5hwNuIE4B" +
+            "o3sgo9eVoCc44Fu65S72FxyxnbGJRwaoJQoxhFb0jUSUzCV2VaP0S0mUxP9AyWbwYNAsEXSh" +
+            "j2Jm4lm4zEcIE2CRggTsRL89QUCuyVyQBkQUV9TAUKBZlqBhCkYcEdsszGeECGYABkFtn1rs" +
+            "C+apGWCA3vdQUEJ0AkJiHAnx4d8JQSfk4WkhwEd2JA4RREGgE1b+PcSSpGRhAMZnOYTxLYjX" +
+            "yExeyNA73R2/vGajfIX8BBRmBA1nJBpsxAZEdRHm+Mbk+MZvsNcR+ENzpCKClEeCkEcsjMAI" +
+            "Eo9PUUcqMhK21NGu3ZF53JpZ1p1ZKgOBzmXZJRjp1F3r1BrsyJp8Oaiw1VowjqCx5Rce+Np9" +
+            "+RofWKfYXNMAKUxXAJyIkAbAMYC1cchWkI/FOJRz0QC3TRcQJclmcJtacMKVWOaWBNpo2MFY" +
+            "6AQRUhNPTAoxXUW5teFoXcUDjZ4E5JXdGCQTRcpArUlCNExiRQTdWJliZSnVhEjLsYIWvB5g" +
+            "lIH0xAkCNILBseTJnZAQDGdigGbAnJ7+GySnYCBkwIjNm4kN/7yTowxEXtxJoUAeXuGbo9xE" +
+            "RAwaE/noVFSmE4zKRenGpG3AcXTBFh1BKiIHdsXCfGzA1VmOT40Ac6yRepzLfXCdBeqX7ehX" +
+            "e2jggSoD2Hllgs3XsTTVWOpisMmaA1YoreXqLj4gIuABsM5d6ywjH+xiA97T1aiJhIxfpVAE" +
+            "pTARA4BIoY0P3YwGEyXJojKmaJiKLjiquHmEHCRWpCSKZfrVRlTmiVjIX+VPUjxB0MRElswp" +
+            "W+EEpRwFaagEKmnIloxfNuEJmuyLFdBNP4Lc1/zJW0DeZ/CF2OQhcTZBDxjE/kwIxnXkab0B" +
+            "xD4Wg8wAS7L+gvFZ55vkhGAUBAnJVWLcRGLQJiGuE2XUyTv9kr94RGlGzGUEDvtRVxcojtFN" +
+            "ThcVh+aIC/OAi+VAAXNYgkchi3nAV/CcJSE9ErlsC9sd6HfIWgYEqwPe4qoOqy9G7Xb0IqvK" +
+            "F7Ax44E+oDJAqFm2Dh4sGLNAzTVRGGCgnCY5hTBtREbACJc8zJZ4isUkBUjQwE8GDhA9VGiM" +
+            "yA6ARBd8RkN1Cg+UVVLYgRMkyomuzJWcaIpAis94HsBxRFOABWR445QmhFNkCEEoRUSw5qAd" +
+            "bLW9DGvJRR9WmJ58ZNhM5EFsXIV55MXGyRsgQJmpkNvu3vRZ38pFm7MtCWUAzIX+wIRyOgg7" +
+            "RcjHKE1pdtZHtBhm+JwTVOprOE4XmAr2YlRu3AqnOUdzJIi8YE6BeJp9Qsd8VCCw3ufYOe0I" +
+            "iEPr2NeBaqiu8uJ9gd3UypcdCRuxqtqtMosyOAOuei2uKgMbEAIhgKDYzp2G+hqwqkMG8AFQ" +
+            "7EU+wYSiwMhoPIxDLdT/gGP4VKYEmFtSSEBiMdEIM0DQkcI4xBKimQgNOAXhiluShCPj6uBF" +
+            "nNtmYIRSfIRooEm/DeFlQtdgFdpfVU8LhBBZjZ5KeIzIHAa+SAjUBAVg+EUfMoiecNk+NAHH" +
+            "GVwTvEEXb5xqxUkWS2cjdKTrXlM08a700AJNWieaOKL+wZGQSWJYSdZkZAHcjJHN+OktVITC" +
+            "OfJgYhKOqWyUbXBX/R3Iq4yau0Sd5Thlru0OVKGBtcAX3TFoCR7jfXkC2tqRWL7q2p0ts9Gd" +
+            "W55ggS4jAh8oAu8qIQTwKRNC/qrdCZ7tgbmlMzCJtNGEogDT0IgFRzhUpzwFiyBmeI7GDtiB" +
+            "4T7R6vUt4d4AJ3TE4OhCFySJoyKKaJRVLEkuRojbDyOFRwgTZpQFDiORB1OEHbyAUYjfQGRJ" +
+            "ZxVsZ4kJNynsQABMnCwK8nGIYJjkR7opAmgkOg2ncxZCGQxnGbxBITRBbm4cg9jhB20NHvPI" +
+            "gpQQRAZTT1jY/vSFAGAkPv3+yLImSttcBFvoQmrI8Ec4EW1IF/YanReNg3tOw7t0V+gMgH1U" +
+            "B0thRyDNS35qR7A2aAYqGCKI5XuIx6vm9NnyAR8EawPSWt2p6gOKstiaslsesIQisAkS8NiC" +
+            "oAk6g6s2oNgqQ+xFcQ0N0FssGZhAZou0AGaMCPo41BJtRtAQzidWZt+OygmvgLf2LQMo2llE" +
+            "iQA812to2wYFWqg4cWZAiVJI4gJFisIsplOAD4aARAI9HF0shYaIzz4Chsy8Xsmk7sQJQA+8" +
+            "QRMc3EdacXHuQw94WRAM9Bt8ZO1S2GktCEAjwBrvKU+05PECBUUnBIeo4RwKhCLyz1sEikFY" +
+            "wdv+EIm2JdYSBk4m0gAnsEbhTANE1cYOYFSsQEGwJLJ8mCp2dMd8IqBPydSqArDamd3Y/XQG" +
+            "vuVQzxcifO3c2ZFbsncENDUCE6syNDUzvvIy0jcAG/BVqzIbeOUsg+BfQIoE7dLnBhOBl7Vm" +
+            "tEinALLgkGOM7sFoJICMjoRIEI4ubEbPROsOdAQRfTQSBc1qANCmeEQQMcyRRO5HW8w3UkSS" +
+            "BNq8acIoZciJ0oVD5VWQEERJyOnSSI89h41Do0yZBsZwDobF1i5qC0ZHnqkXW7GdtW1uqcmb" +
+            "ucVdyIVWdWwdptOLA7eO0MKFaeeM0VL5sc9ZyKhJkydsWFGqFI5uXKr+tDglemH3rpxOdITq" +
+            "AMSCeFAHUj3jAyuL2vGHLW7HLqKBOhhrrm6tWOI0Ma63q5JtrrYyob+lVt/qVZ+yM1B6pe+3" +
+            "V6oyIRDrVbfO9VDGTcJFmzQKVXQzoigq+rSSdGWio7qwdAnOami4EyRAi4xDaBwRdNHNEr31" +
+            "Z3SEtWrQaPyJt9LNVvxPYmVWlESKlHaKEpOV/yQNK1SEbE0IouLLTgjisy1INL1MEBwcynQ2" +
+            "AmCcQH8k7uohxr2Bl6H2R25kmZ4TOgVGcobpS6TTn4bQj/RLXiAAVomsFiwWXiwWLUgfo4xk" +
+            "YQ8FaUCX4IwKRJEnqXBCKEJ3cVgC83Bamy/+B3P41ACQB3WoKrAqraqBpceb4DCGvB2ZrS56" +
+            "8qvq6n2pw9eyd8mLLbHGJczLtzO0crBR+gFL+lIfmIaa96M7hGMwBncKQDbhy4tsScNMDVpt" +
+            "YiAfd8+hxgyjRjHTACu8hhtIwDh8BqtoxGE1bmbQQFv0W+OyRIZgCPsEFLIjBa+z8MOkRMxM" +
+            "CjJhismcLld4JvVwCMOd7mjRJl607f4Qn50Kp3CiE8Zt5MZ5ceG3bsWatkc652NxBYVdE5vW" +
+            "U8D8yVXdhcSJTQpZ5xkHxWKxWxMOYWcETuBQV6mYyjisQBcsDhWRkSqy1wZEvLucx3zwVH4Z" +
+            "OiIQDzIeNaqydwkuIugdKW3Yztoydu2f7yIGBiOz4OosSzqly3cBu6rzH+hVV7r0H2iwAbB7" +
+            "X3VAAAA7";
     }
 
     /** a base64-encoded png image of the scar */
@@ -1841,5 +1786,4 @@ public class Main extends Applet {
         "xzUYrQmF5hVZPlw42D216CrdPXfbKMzMRliYv6LReqJ/CVZISsBUkSonBHGd7bgZjiqy/F6F" +
         "qsZCjR87c0w2DF++Nbn25xkNnhg1YGmBQxkD1hDFiix/7VDVxQcdcD1ERkeydphyqOrx5B3z" +
         "YSMxJzKagTvRDKWKLH/VqKqPwgHAf3HDlnr6flmoAAAAAElFTkSuQmCC";
-
 }
index af9a169..8efe59a 100644 (file)
@@ -113,7 +113,7 @@ public class Platform {
     protected Picture _createPicture(int[] b, int w, int h) { return null; }
     
     /** should return true if it is safe to supress full-surface dirties immediately after a window resize */
-    protected boolean _supressDirtyOnResize() { return true; }
+    protected boolean _supressDirtyOnResize() { return false; }
 
     /** the human-readable name of the key mapped to XWT's 'alt' key */
     protected String _altKeyName() { return "alt"; }
@@ -167,6 +167,9 @@ public class Platform {
     /** if true, org.xwt.Surface will generate a Click automatically after a press and a release */
     protected boolean _needsAutoClick() { return false; }
 
+    /** if true, org.xwt.Surface will generate a DoubleClick automatically after recieving two clicks in a short period of time */
+    protected boolean _needsAutoDoubleClick() { return false; }
+
     protected void _newBrowserWindow(String url) {
         if (Log.on) Log.log(this, "Platform " + platform.getClass().getName() + " cannot open browser windows");
         return;
@@ -175,11 +178,21 @@ public class Platform {
     /** Returns null if XWT should always use direct connection; otherwise returns a ProxyInfo object with proxy settings */
     protected synchronized HTTP.ProxyInfo _detectProxy() { return null; }
 
+    /** displays a platform-specific "open file" dialog and returns the chosen filename */
+    protected String _fileDialog(String suggestedFileName, boolean write) { return null; }
+
+    /** returns true iff the platform has a case-sensitive filesystem */
+    protected boolean _isCaseSensitive() { return true; }
+
+
     // Static methods -- thunk to the instance /////////////////////////////////////////////////////////////////////////
 
     /** if true, org.xwt.Surface should generate Click messages automatically when a Release happens after a Press and the mouse has not moved much */
     public static boolean needsAutoClick() { return platform._needsAutoClick(); }
 
+    /** if true, org.xwt.Surface should generate DoubleClick messages automatically when needed */
+    public static boolean needsAutoDoubleClick() { return platform._needsAutoDoubleClick(); }
+
     /** should return true if it is safe to supress full-surface dirties immediately after a window resize */
     public static String getDefaultFont() { return platform._getDefaultFont(); }
 
@@ -233,6 +246,31 @@ public class Platform {
     /** creates and returns a picture */
     public static Picture createPicture(ImageDecoder i) { return platform._createPicture(i.getData(), i.getWidth(), i.getHeight()); }
 
+    /** returns true iff the platform has a case-sensitive filesystem */
+    public static boolean isCaseSensitive() { return platform._isCaseSensitive(); }
+
+    /** displays a platform-specific "open file" dialog and returns the chosen filename */
+    public static String fileDialog(String suggestedFileName, boolean write) {
+        // put ourselves in the background
+        Thread thread = Thread.currentThread();
+        if (!(thread instanceof ThreadMessage)) {
+            if (Log.on) Log.log(Platform.class, "xwt.openFile may only be called from background threads");
+            return null;
+        }
+        ThreadMessage mythread = (ThreadMessage)thread;
+        mythread.setPriority(Thread.MIN_PRIORITY);
+        mythread.done.release();
+
+        try {
+            return platform._fileDialog(suggestedFileName, write);
+        } finally {
+            // okay, let ourselves be brought to the foreground
+            MessageQueue.add(mythread);
+            mythread.setPriority(Thread.NORM_PRIORITY);
+            mythread.go.block();
+        }
+    }
+
     /** opens a new browser window */
     public static void newBrowserWindow(String url) {
         if (!(url.startsWith("https://") || url.startsWith("http://") || url.startsWith("ftp://") || url.startsWith("mailto:"))) {
@@ -333,7 +371,7 @@ public class Platform {
 
         public void parse(String font) {
             int i = 0;
-            while(i < font.length() && !Character.isDigit(font.charAt(i))) i++;
+            while(i < font.length() && !Character.isDigit(font.charAt(i)) && font.charAt(i) != '*') i++;
             name = font.substring(0, i).toLowerCase().replace('_', ' ');
             size = 10;
             italic = false;
@@ -341,10 +379,15 @@ public class Platform {
             underline = false;
             dotted_underline = false;
             if (i != font.length()) {
-                int j = i;
-                while (j < font.length() && Character.isDigit(font.charAt(j))) j++;
-                if (i != j) size = stoi(font.substring(i, j));
-                i = j;
+                if (font.charAt(i) == '*') {
+                    size = 0;
+                    i++;
+                } else {
+                    int j = i;
+                    while (j < font.length() && Character.isDigit(font.charAt(j))) j++;
+                    if (i != j) size = stoi(font.substring(i, j));
+                    i = j;
+                }
                 while(i < font.length()) {
                     switch (font.charAt(i)) {
                     case 'b': bold = true; break;
index ade85e5..02f3583 100644 (file)
@@ -91,7 +91,7 @@ class SOAP extends XMLRPC {
 
             } else if (me instanceof byte[]) {
                 objects.removeElementAt(objects.size() - 1);
-                objects.addElement(new String(Base64.decode(new String(content.getBuf(), 0, content.size()))));
+                objects.addElement(new ByteStream(Base64.decode(new String(content.getBuf(), 0, content.size()))));
                 content.reset();                
                 
             } else if (me instanceof Integer) {
@@ -159,7 +159,7 @@ class SOAP extends XMLRPC {
     }
 
     /** Appends the SOAP representation of <code>o</code> to <code>sb</code> */
-    void appendObject(String name, Object o, StringBuffer sb) {
+    void appendObject(String name, Object o, StringBuffer sb) throws JavaScriptException {
         if (o instanceof Number) {
             if ((double)((Number)o).intValue() == ((Number)o).doubleValue()) {
                 sb.append("                <" + name + " xsi:type=\"xsd:int\">");
@@ -176,6 +176,31 @@ class SOAP extends XMLRPC {
             sb.append(((Boolean)o).booleanValue() ? "true" : "false");
             sb.append("</" + name + ">\n");
 
+        } else if (o instanceof ByteStream) {
+            try {
+                sb.append("                <" + name + " xsi:type=\"xsd:base64\">");
+                InputStream is = ((ByteStream)o).getInputStream();
+                byte[] buf = new byte[96];
+                while(true) {
+                    int numread = is.read(buf, 0, 96);
+                    if (numread == -1) break;
+                    byte[] writebuf = buf;
+                    if (numread < buf.length) {
+                        writebuf = new byte[numread];
+                        System.arraycopy(buf, 0, writebuf, 0, numread);
+                    }
+                    sb.append("              ");
+                    sb.append(Base64.encode(writebuf));
+                    sb.append("\n");
+                }
+                sb.append(((Boolean)o).booleanValue() ? "1" : "0");
+                sb.append("</" + name + ">\n");
+            } catch (IOException e) {
+                if (Log.on) Log.log(this, "caught IOException while attempting to send a ByteStream via SOAP");
+                if (Log.on) Log.log(this, e);
+                throw new JavaScriptException("caught IOException while attempting to send a ByteStream via SOAP");
+            }
+
         } else if (o instanceof String) {
             sb.append("                <" + name + " xsi:type=\"xsd:string\">");
             String s = (String)o;
index d8b944d..7cecd62 100644 (file)
@@ -92,6 +92,12 @@ public abstract class Surface {
     /** the y-position of the mouse the last time a Press message was enqueued */
     int last_press_y = Integer.MAX_VALUE;
 
+    /** the last button to recieve a Click message; used for simulating DoubleClick's */
+    static int lastClickButton = 0;
+
+    /** the last time a Click message was processed; used for simulating DoubleClick's */
+    static long lastClickTime = 0;
+
 
     
     // Methods to be overridden by subclasses ///////////////////////////////////////////////////////
@@ -177,6 +183,12 @@ public abstract class Surface {
         if (button == 1) new SimpleMessage("Click1", Boolean.TRUE, root.whoIs(mousex, mousey));
         else if (button == 2) new SimpleMessage("Click2", Boolean.TRUE, root.whoIs(mousex, mousey));
         else if (button == 3) new SimpleMessage("Click3", Boolean.TRUE, root.whoIs(mousex, mousey));
+        if (Platform.needsAutoDoubleClick()) {
+            long now = System.currentTimeMillis();
+            if (lastClickButton == button && now - lastClickTime < 350) DoubleClick(button);
+            lastClickButton = button;
+            lastClickTime = now;
+        }
     }
 
     protected final void DoubleClick(int button) {
@@ -551,11 +563,11 @@ public abstract class Surface {
     }
 
     // FEATURE: reinstate recycler
-    private class SimpleMessage implements Message {
+    public class SimpleMessage implements Message {
         
         private Box boxContainingMouse;
         private Object value;
-        private String name;
+        public String name;
         
         SimpleMessage(String name, Object value, Box boxContainingMouse) {
             this.boxContainingMouse = boxContainingMouse;
index 8aa3321..efe4959 100644 (file)
@@ -95,7 +95,7 @@ class XMLRPC extends XML implements Function {
             objects.setElementAt(new Double(new String(content.getBuf(), 0, content.size())), objects.size() - 1);
 
         else if (name.equals("base64"))
-            objects.setElementAt(new String(Base64.decode(new String(content.getBuf(), 0, content.size()))), objects.size() - 1);
+            objects.setElementAt(new ByteStream(Base64.decode(new String(content.getBuf(), 0, content.size()))), objects.size() - 1);
 
         else if (name.equals("name"))
             objects.addElement(new String(content.getBuf(), 0, content.size()));
@@ -182,6 +182,31 @@ class XMLRPC extends XML implements Function {
             sb.append(((Boolean)o).booleanValue() ? "1" : "0");
             sb.append("</boolean></value>\n");
 
+        } else if (o instanceof ByteStream) {
+            try {
+                sb.append("                <value><base64>");
+                InputStream is = ((ByteStream)o).getInputStream();
+                byte[] buf = new byte[96];
+                while(true) {
+                    int numread = is.read(buf, 0, 96);
+                    if (numread == -1) break;
+                    byte[] writebuf = buf;
+                    if (numread < buf.length) {
+                        writebuf = new byte[numread];
+                        System.arraycopy(buf, 0, writebuf, 0, numread);
+                    }
+                    sb.append("              ");
+                    sb.append(Base64.encode(writebuf));
+                    sb.append("\n");
+                }
+                sb.append(((Boolean)o).booleanValue() ? "1" : "0");
+                sb.append("\n              </base64></value>\n");
+            } catch (IOException e) {
+                if (Log.on) Log.log(this, "caught IOException while attempting to send a ByteStream via XML-RPC");
+                if (Log.on) Log.log(this, e);
+                throw new JavaScriptException("caught IOException while attempting to send a ByteStream via XML-RPC");
+            }
+
         } else if (o instanceof String) {
             sb.append("                <value><string>");
             String s = (String)o;
index 1789743..7c37978 100644 (file)
@@ -12,6 +12,10 @@ import org.mozilla.javascript.*;
 public final class XWT extends JSObject {
 
     public static final XWT singleton = new XWT();
+
+    /** each key is a string representing a filename which the user has already given XWT permission to write to */
+    private static Hashtable safeFiles = new Hashtable();
+
     public String getClassName() { return "XWT"; }
     private XWT() { setSeal(true); }
 
@@ -40,6 +44,10 @@ public final class XWT extends JSObject {
         else if (name.equals("screenHeight")) return new Integer(Platform.getScreenHeight());
         else if (name.equals("static")) return Static.getStatic("");
         else if (name.equals("theme")) return theme;
+        else if (name.equals("openFile")) return openFile;
+        else if (name.equals("saveFile")) return saveFile;
+        else if (name.equals("saveFileAs")) return saveFileAs;
+        else if (name.equals("utfEncode")) return utfEncode;
         else if (name.equals("button")) {
             if (Surface.button1 && !Surface.button2 && !Surface.button3) return new Integer(1);
             else if (!Surface.button1 && Surface.button2 && !Surface.button3) return new Integer(1);
@@ -209,6 +217,63 @@ public final class XWT extends JSObject {
             }
         };
 
+    private static final JSFunction openFile = new JSFunction() {
+            public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException {
+                if (args == null || args.length != 1) return null;
+                String file = Platform.fileDialog(args[0].toString(), false);
+                return file == null ? null : new ByteStream(file);
+            }
+        };
+
+    private static final JSFunction saveFile = new JSFunction() {
+            public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException {
+                if (args == null || args.length != 2) return null;
+                if (!(args[1] instanceof ByteStream)) return null;
+                String file = args[0].toString();
+                if (safeFiles.get(Platform.isCaseSensitive() ? file : file.toLowerCase()) == null) {
+                    file = Platform.fileDialog(file, true);
+                    if (file == null) return null;
+                    System.out.println(">>" + file + "<<");
+                    safeFiles.put(Platform.isCaseSensitive() ? file : file.toLowerCase(), new Object());
+                }
+                try {
+                    System.out.println("WRITING TO " + file);
+                    ((ByteStream)args[1]).writeTo(new FileOutputStream(file));
+                    return null;
+                } catch (IOException e) {
+                    if (Log.on) Log.log(ByteStream.class, "IO Exception while writing a ByteStream to a file");
+                    if (Log.on) Log.log(ByteStream.class, e);
+                    throw new JavaScriptException("error while writing a ByteStream to a file");
+                }
+            }
+        };
+
+    private static final JSFunction saveFileAs = new JSFunction() {
+            public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException {
+                if (args == null || args.length != 2) return null;
+                if (!(args[1] instanceof ByteStream)) return null;
+                String file = args[0].toString();
+                file = Platform.fileDialog(file, true);
+                if (file == null) return null;
+                safeFiles.put(Platform.isCaseSensitive() ? file : file.toLowerCase(), new Object());
+                try {
+                    ((ByteStream)args[1]).writeTo(new FileOutputStream(file));
+                    return null;
+                } catch (IOException e) {
+                    if (Log.on) Log.log(ByteStream.class, "IO Exception while writing a ByteStream to a file");
+                    if (Log.on) Log.log(ByteStream.class, e);
+                    throw new JavaScriptException("error while writing a ByteStream to a file");
+                }
+            }
+        };
+
+    private static final JSFunction utfEncode = new JSFunction() {
+            public Object call(Context cx, Scriptable thisObj, Scriptable ctorObj, Object[] args) throws JavaScriptException {
+                if (args == null || args.length != 1) return null;
+                return new ByteStream(args[0].toString().getBytes());
+            }
+        };
+
 }
 
 
index 5a0b120..43168fd 100644 (file)
@@ -25,6 +25,7 @@ public class AWT extends Platform {
     protected int _stringWidth(String font, String text) { return getFont(font).metrics.stringWidth(text); }
     protected int _getMaxAscent(String font) { return getFont(font).metrics.getMaxAscent(); }
     protected int _getMaxDescent(String font) { return getFont(font).metrics.getMaxDescent(); }
+    protected boolean _supressDirtyOnResize() { return true; }
 
     protected String _getClipBoard() {
         Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
@@ -48,6 +49,37 @@ public class AWT extends Platform {
         return 0;
     }
 
+    static class Open extends FileDialog implements WindowListener, ComponentListener {
+        Semaphore s;
+        public Open(String suggestedFileName, Semaphore s, boolean write) {
+            super(new Frame(), suggestedFileName, write ? FileDialog.SAVE : FileDialog.LOAD);
+            this.s = s;
+        }
+        public void windowActivated(WindowEvent e) { }
+        public void windowClosed(WindowEvent e) { s.release(); }
+        public void windowClosing(WindowEvent e) { }
+        public void windowDeactivated(WindowEvent e) { }
+        public void windowDeiconified(WindowEvent e) { }
+        public void windowIconified(WindowEvent e) { }
+        public void windowOpened(WindowEvent e) { }
+        public void componentHidden(ComponentEvent e) { s.release(); }
+        public void componentMoved(ComponentEvent e) { }
+        public void componentResized(ComponentEvent e) { }
+        public void componentShown(ComponentEvent e) { }
+    };
+
+    protected String _fileDialog(String suggestedFileName, boolean write) {
+        Semaphore s = new Semaphore();
+        Open fd = new Open(suggestedFileName, s, write);
+        fd.addWindowListener(fd);
+        fd.addComponentListener(fd);
+        fd.show();
+        s.block();
+        return fd.getDirectory() + File.separatorChar + fd.getFile();
+    }
+
+    protected void _saveFile(String suggestedFileName, ByteStream data) throws IOException { }
+
     // Inner Classes /////////////////////////////////////////////////////////////////////////////////////
 
     protected static class AWTPicture implements Picture {
@@ -171,6 +203,9 @@ public class AWT extends Platform {
                     componentResized(window.getWidth() - insets.left - insets.right, window.getHeight() - insets.top - insets.bottom);
 
                 Dirty(r.x - insets.left, r.y - insets.top, r.width, r.height);
+
+                // this is safe because AWT's low-level drawing functions are threadsafe
+                blitDirtyScreenRegions();
             }
         }
 
@@ -180,6 +215,9 @@ public class AWT extends Platform {
             public void paint(Graphics gr) {
                 Rectangle r = gr.getClipBounds();
                 Dirty(r.x - insets.left, r.y - insets.top, r.width, r.height);
+
+                // this is safe because AWT's low-level drawing functions are threadsafe
+                blitDirtyScreenRegions();
             }
         }
 
diff --git a/src/org/xwt/plat/Linux.xml b/src/org/xwt/plat/Linux.xml
new file mode 100644 (file)
index 0000000..21db5fc
--- /dev/null
@@ -0,0 +1,21 @@
+<!-- Copyright 2002 Adam Megacz, see the COPYING file for licensing [GPL] -->
+
+<project name="Linux" default="build">
+
+    <target name="build">
+        <property name="gcc-target" value=""/>
+        <property name="linkflags" value="-L/usr/X11R6/lib -lX11 -lXext --static"/>
+        <property name="binaryname" value="xwt.linux"/>
+        <property name="subplat" value="POSIX"/>
+        <ant target="build" antfile="src/org/xwt/plat/GCJ.xml"/>
+    </target>
+                                                                         
+    <target name="run">
+        <echo message='launching xwt.linux'/>
+        <bash> bin-Linux/xwt.linux </bash>
+    </target>
+
+    <target name="dist">
+    </target>
+
+</project>
diff --git a/src/org/xwt/plat/POSIX.cc b/src/org/xwt/plat/POSIX.cc
new file mode 100644 (file)
index 0000000..b5d4662
--- /dev/null
@@ -0,0 +1,2299 @@
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/XShm.h>
+#include <X11/keysymdef.h>
+#include <X11/keysym.h>
+#include <X11/cursorfont.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xmu/StdCmap.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <gcj/cni.h>
+
+#include <java/lang/String.h>
+#include <org/xwt/Surface.h>
+#include <org/xwt/Picture.h>
+#include <org/xwt/Box.h>
+#include <org/xwt/plat/POSIX.h>
+#include <org/xwt/plat/POSIX$X11Surface.h>
+#include <org/xwt/plat/POSIX$X11Picture.h>
+#include <org/xwt/plat/POSIX$X11DoubleBuffer.h>
+#include <org/xwt/util/Semaphore.h>
+#include <org/xwt/Platform.h>
+#include <java/lang/Long.h>
+#include <java/util/Hashtable.h>
+#include <org/xwt/util/Log.h>
+
+#include <java/lang/System.h>
+#include <java/io/PrintStream.h>
+
+// static (per-xserver) data
+static Visual* visual;
+static Colormap colormap;
+static XStandardColormap* colormap_info;
+static XShmSegmentInfo shm_info;
+static Window selectionWindow;
+static int shm_supported;
+static int screen_num;
+static int colorDepth = 0;
+static Display* display;
+
+#define min(a, b) (a < b ? a : b)
+
+// X11DoubleBuffer //////////////////////////////////////////////////////////////////////
+
+void org::xwt::plat::POSIX$X11DoubleBuffer::drawPicture(org::xwt::Picture* s,
+                                                        jint dx1, jint dy1, jint dx2, jint dy2, jint sx1, jint sy1, jint sx2, jint sy2) {
+    
+    if (pm == NULL) return;
+    org::xwt::plat::POSIX$X11Picture* source = (org::xwt::plat::POSIX$X11Picture*)s;
+    
+    int scaling = dx2 - dx1 != sx2 - sx1 || dy2 - dy1 != sy2 - sy1;
+    
+    // FIXME: this needs to be moved into the fastpath-only to prevent image wriggling
+    if (dx1 < clipx) { sx1 += ((clipx - dx1) * (sx2 - sx1)) / (dx2 - dx1); dx1 = clipx; }
+    if (dy1 < clipy) { sy1 += ((clipy - dy1) * (sy2 - sy1)) / (dy2 - dy1); dy1 = clipy; }
+    if (dx2 > clipx + clipw) { sx2 -= ((dx2 - clipx - clipw) * (sx2 - sx1)) / (dx2 - dx1); dx2 = clipx + clipw; }
+    if (dy2 > clipy + cliph) { sy2 -= ((dy2 - clipy - cliph) * (sy2 - sy1)) / (dy2 - dy1); dy2 = clipy + cliph; }
+    if (dx1 > clipx + clipw) return;
+    if (dy1 > clipy + cliph) return;
+
+    if (dx2 - dx1 <= 0 || dy2 - dy1 <= 0) return;
+
+    // fastpath: if the X11Picture has a pixmap, and no scaling, and all-or-nothing alpha
+    if (!scaling && source->doublebuf != NULL) {
+        if (source->doublebuf->stipple != NULL) {
+            XSetClipMask(display, (*((GC*)clipped_gc)), *((Pixmap*)source->doublebuf->stipple));
+            XSetClipOrigin(display, (*((GC*)clipped_gc)), dx1 - sx1, dy1 - sy1);
+        } else {
+            XSetClipMask(display, (*((GC*)clipped_gc)), None);
+        }
+        XCopyArea(display, *((Pixmap*)source->doublebuf->pm), (*((Pixmap*)pm)), (*((GC*)clipped_gc)), sx1, sy1, sx2 - sx1, sy2 - sy1, dx1, dy1);
+        return;
+    }
+
+    // slowpath: true alpha or scaling
+    
+    // the following optimizations were abandoned because they don't
+    // improve performance in the presence of XSHM extensions, and
+    // therefore aren't worth the code-bloat:
+    // - scaling clipmask bitmaps (and caching them)
+    // - caching pre-scaled XImages
+    
+    // ximage from our destination -- if true_alpha is false, we can use malloc() instead of XGetImage
+    XImage* xi; 
+    
+    if (force_slowpath && shm_supported) {
+        
+        // if the shared memory area is unsuitable, destroy it
+        
+        if (((XImage*)shm_ximage) != NULL && (dx2 - dx1 != ((XImage*)shm_ximage)->width || dy2 - dy1 != ((XImage*)shm_ximage)->height)) {
+            XShmDetach(display, &shm_info);
+            XDestroyImage(((XImage*)shm_ximage));
+        }
+        
+        // FIXME: replace 4 with something sensible
+        if (((XImage*)shm_ximage) != NULL && (dx2 - dx1) * (dy2 - dy1) * 4 < old_shmsize) {
+            shmdt(shm_info.shmaddr);
+            shmctl(shm_info.shmid, IPC_RMID, 0);
+            memset(&shm_info, 0, sizeof(XShmSegmentInfo));
+            shm_info.shmaddr = NULL;
+        }
+        
+        // if we need to recreate the shared memory area
+        if (shm_info.shmaddr == NULL) {
+            old_shmsize = xi->bytes_per_line * xi->height;
+            memset(&shm_info, 0, sizeof(XShmSegmentInfo));
+            shm_info.shmid = shmget(IPC_PRIVATE, xi->bytes_per_line * xi->height, IPC_CREAT | 0777 | IPC_EXCL);
+            shm_info.shmaddr = xi->data = (char*)shmat(shm_info.shmid, 0, 0);
+            shm_info.readOnly = False;
+            
+            XSync(display, False);
+            shmctl(shm_info.shmid, IPC_RMID, 0);
+            XShmAttach(display, &shm_info);
+            XSync(display, False);
+        }
+        
+        xi = ((XImage*)shm_ximage) = XShmCreateImage(display, visual, colorDepth, ZPixmap, shm_info.shmaddr, &shm_info, dx2 - dx1, dy2 - dy1);
+        
+    } else if (shared_pixmap && shm_supported) {
+        xi = ((XImage*)mxi);
+        
+    } else {
+        xi = XGetImage(display, (*((Pixmap*)pm)), dx1, dy1, dx2 - dx1, dy2 - dy1, AllPlanes, ZPixmap);
+        
+    }
+    
+    // FIXME: xoffset?
+    // FIXME: optimize pixels that have 0xFF or 0x00 alpha
+    // endian issues
+    
+    
+    // further assumption: the only time source->data will be null is
+    // if we're drawing from a bordercache -- but those don't get
+    // stretched.
+    if (source->data == NULL || elements(source->data) == NULL) {
+        printf("AIEEEEE %i %i %i %i\n", dx2 - dx1, dy2 - dy1, sx2 - sx1, sy2 - sy1);
+        return;
+    }
+    int* sourcedata = (int*)elements(source->data);
+    
+    for(int y=dy1; y<dy2; y++) {
+        
+        if (y < clipy || y >= clipy + cliph) continue;
+        
+        char* bitstart;
+        if (shared_pixmap && shm_supported) {
+            // FIXME: not sure if bitmap_unit is the right thing
+            bitstart = xi->data + y * xi->bytes_per_line + dx1 * (xi->bits_per_pixel / 8);
+        } else {
+            bitstart = xi->data + (y - dy1) * xi->bytes_per_line;
+        } 
+        
+        for(int x=dx1; x<dx2; x++, bitstart += xi->bits_per_pixel / 8) {
+            
+            if (x < clipx || x >= clipx + clipw) continue;
+            
+            int source_x = ((x - dx1) * (sx2 - sx1)) / (dx2 - dx1) + sx1;
+            int source_y = ((y - dy1) * (sy2 - sy1)) / (dy2 - dy1) + sy1;
+            
+            // note that we can assume that source->data exists here, since writeable PixelGrids (ie
+            // doublebuffers) never have true_alpha, and are never scaled.
+            int sourcepixel = sourcedata[source_x + source_y * source->getWidth()];
+            int alpha = (sourcepixel & 0xFF000000) >> 24;
+            int source_red = (sourcepixel & 0x00FF0000) >> 16;
+            int source_green = (sourcepixel & 0x0000FF00) >> 8;
+            int source_blue = (sourcepixel & 0x000000FF);
+            int red = 0, blue = 0, green = 0;
+            
+            if (alpha != 0xFF) {
+                int targetpixel;
+                switch (xi->bits_per_pixel) {
+                case 8: targetpixel = (int)(*bitstart); break;
+                case 16: targetpixel = (int)(*((u_int16_t*)bitstart)); break;
+                case 24: targetpixel = (((int)*bitstart) << 16) | (((int)*(bitstart + 1)) << 8) | (((int)*(bitstart + 2))); break;
+                case 32: targetpixel = *((int*)bitstart); break;
+                default: org::xwt::Platform::criticalAbort(JvNewStringLatin1("ERROR: bpp not a multiple of 8!"));
+                }
+                
+                targetpixel -= colormap_info->base_pixel;
+                
+                // if you're on some wierd display that isn't either RGB or BGR, that's your problem, not mine
+                if (colormap_info->red_mult > colormap_info->green_mult && colormap_info->green_mult > colormap_info->blue_mult) {
+                    red = targetpixel / colormap_info->red_mult;
+                    green = (targetpixel - red * colormap_info->red_mult) / colormap_info->green_mult;
+                    blue = (targetpixel - red * colormap_info->red_mult - green * colormap_info->green_mult) / colormap_info->blue_mult;
+                } else {
+                    blue = targetpixel / colormap_info->blue_mult;
+                    green = (targetpixel - blue * colormap_info->blue_mult) / colormap_info->green_mult;
+                    red = (targetpixel - blue * colormap_info->blue_mult - green * colormap_info->green_mult) / colormap_info->red_mult;
+                }
+            }
+            
+            red = ((source_red * colormap_info->red_max * alpha) + (red * 0xFF * (0xFF - alpha))) / (0xFF * 0xFF);
+            green = ((source_green * colormap_info->green_max * alpha) + (green * 0xFF * (0xFF - alpha))) / (0xFF * 0xFF);
+            blue = ((source_blue * colormap_info->blue_max * alpha) + (blue * 0xFF * (0xFF - alpha))) / (0xFF * 0xFF);
+            
+            int destpixel = red * colormap_info->red_mult + green * colormap_info->green_mult +
+                blue * colormap_info->blue_mult + colormap_info->base_pixel;
+            
+            switch (xi->bits_per_pixel) {
+            case 8: *bitstart = (char)(destpixel & 0xFF); break;
+            case 16: *((u_int16_t*)bitstart) = (u_int16_t)destpixel; break;
+            case 24: break; // FIXME, unimplemented
+            case 32: *((int*)bitstart) = destpixel; break;
+            default: org::xwt::Platform::criticalAbort(JvNewStringLatin1("ERROR: bpp not a multiple of 8!"));
+            }
+            
+        }
+    }
+    
+    if (force_slowpath && shm_supported) {
+        // watch for concurrency issues if we're going to keep the shm region around
+        XShmPutImage(display, (*((Pixmap*)pm)), (*((GC*)gc)), xi, 0, 0, dx1, dy1, dx2 - dx1, dy2 - dy1, False);
+        
+    } if (shared_pixmap && shm_supported) {
+        // do nothing, it's all taken care of
+        
+    } else {
+        XPutImage(display, (*((Pixmap*)pm)), (*((GC*)gc)), xi, 0, 0, dx1, dy1, dx2 - dx1, dy2 - dy1);
+        
+    }
+}
+
+void org::xwt::plat::POSIX$X11DoubleBuffer::natInit() {
+    
+    if (width == 0 || height == 0) return;
+
+    pm = (gnu::gcj::RawData*)malloc(sizeof(Pixmap));
+
+    if (shared_pixmap && shm_supported) {
+        
+        // FIXME: check if server pixmaps are XYPixmaps
+        printf("CREATING SHARED (*((Pixmap*)pm)) %i %i\n", width, height);
+        
+        XShmSegmentInfo *sinfo = (XShmSegmentInfo*)malloc(sizeof(XShmSegmentInfo));
+        ((XImage*)mxi) = XShmCreateImage(display, visual, colorDepth, ZPixmap, NULL, sinfo, width, height);
+        
+        memset(sinfo, 0, sizeof(XShmSegmentInfo));
+        
+        sinfo->shmid = shmget(IPC_PRIVATE, ((XImage*)mxi)->bytes_per_line * height, IPC_CREAT | 0777 | IPC_EXCL);
+        ((XImage*)mxi)->data = sinfo->shmaddr = (char*)shmat(sinfo->shmid, 0, 0);
+        sinfo->readOnly = False;
+        XShmAttach(display, sinfo);
+        
+        XSync(display, False);
+        shmctl(sinfo->shmid, IPC_RMID, 0);
+        
+        (*((Pixmap*)pm)) = XShmCreatePixmap(display, RootWindow(display, 0), sinfo->shmaddr, sinfo, width, height, colorDepth);
+        XSync(display, False);
+        
+    } else {
+        (*((Pixmap*)pm)) = XCreatePixmap(display, RootWindow(display, 0), width, height, colorDepth);
+        
+    }
+    gc = (gnu::gcj::RawData*)malloc(sizeof(GC));
+    clipped_gc = (gnu::gcj::RawData*)malloc(sizeof(GC));
+    (*((GC*)gc)) = XCreateGC(display, (*((Pixmap*)pm)), 0, 0);
+    (*((GC*)clipped_gc)) = XCreateGC(display, (*((Pixmap*)pm)), 0, 0);
+    
+    XGCValues vm;
+    vm.graphics_exposures = 0;
+    XChangeGC(display, (*((GC*)gc)), GCGraphicsExposures, &vm);
+    XChangeGC(display, (*((GC*)clipped_gc)), GCGraphicsExposures, &vm);
+}    
+
+void org::xwt::plat::POSIX$X11DoubleBuffer::createStipple(org::xwt::plat::POSIX$X11Picture* xpi) {
+
+    stipple = (gnu::gcj::RawData*)malloc(sizeof(Pixmap));
+    (*((Pixmap*)stipple)) = XCreatePixmap(display, RootWindow(display, 0), width, height, 1);
+
+    XImage xi;
+    xi.data = (char*)malloc((width + 1) * height);
+    xi.width = width;
+    xi.height = height;
+    xi.xoffset = 0;
+    xi.format = ZPixmap;
+    xi.bitmap_pad = 8;
+    xi.bitmap_unit = 8;
+    xi.byte_order = LSBFirst;
+    xi.depth = 1;
+    xi.bytes_per_line = (width / 8) + 1;
+    xi.bits_per_pixel = 1;
+    
+    jint* d = (jint*)elements(xpi->data);
+    memset(xi.data, 0xFF, (width + 1) * height);
+    for(int x=0; x<width; x++)
+        for (int y=0; y<height; y++)
+            xi.data[y * xi.bytes_per_line + (x/8)] &= ~(((d[x + y * width] & 0xFF000000) != 0 ? 0 : 1) << (x % 8));
+
+    GC stipple_gc = XCreateGC(display, (*((Pixmap*)stipple)), 0, 0);
+
+    XGCValues vm;
+    vm.graphics_exposures = 0;
+    XChangeGC(display, (*((GC*)stipple_gc)), GCGraphicsExposures, &vm);
+
+    XPutImage(display, (*((Pixmap*)stipple)), stipple_gc, &xi, 0, 0, 0, 0, width, height);
+}
+
+void org::xwt::plat::POSIX$X11Surface::blit(org::xwt::DoubleBuffer* db, jint sx, jint sy, jint dx, jint dy, jint dx2, jint dy2) {
+    org::xwt::plat::POSIX$X11DoubleBuffer *xdb = (org::xwt::plat::POSIX$X11DoubleBuffer*)db;
+    XCopyArea(display, *((Pixmap*)xdb->pm), *((Window*)window), *((GC*)gc), sx, sy, dx2 - dx, dy2 - dy, dx, dy);
+    XFlush(display);
+}
+
+void org::xwt::plat::POSIX$X11DoubleBuffer::fillRect (jint x, jint y, jint x2, jint y2, jint argb) {
+    
+    jint w = x2 - x;
+    jint h = y2 - y;
+
+    if (x < clipx) { w -= (clipx - x); x = clipx; }
+    if (y < clipy) { h -= (clipy - y); y = clipy; }
+    if (x + w > clipx + clipw) w = (clipx + clipw - x);
+    if (y + h > clipy + cliph) h = (cliph + clipy - y);
+    
+    XSetForeground(display, (*((GC*)gc)),
+                   ((((argb & 0x00FF0000) >> 16) * colormap_info->red_max) / 0xFF) * colormap_info->red_mult + 
+                   ((((argb & 0x0000FF00) >> 8) * colormap_info->green_max) / 0xFF) * colormap_info->green_mult + 
+                   ((((argb & 0x000000FF)) * colormap_info->blue_max) / 0xFF) * colormap_info->blue_mult +
+                   colormap_info->base_pixel
+                   );
+    
+    XFillRectangle(display, (*((Pixmap*)pm)), (*((GC*)gc)), x, y, w, h);
+    
+}
+
+void org::xwt::plat::POSIX$X11DoubleBuffer::drawString(::java::lang::String* font, ::java::lang::String* text, jint x, jint y, jint argb) {
+    
+    XRectangle rect;
+    rect.x = clipx, rect.y = clipy; rect.width = clipw; rect.height = cliph;
+    XSetClipMask(display, (*((GC*)clipped_gc)), None);
+    XSetClipRectangles(display, (*((GC*)clipped_gc)), 0, 0, &rect, 1, YSorted);
+    XSetForeground(display, (*((GC*)clipped_gc)),
+                   ((((argb & 0x00FF0000) >> 16) * colormap_info->red_max) / 0xFF) * colormap_info->red_mult + 
+                   ((((argb & 0x0000FF00) >> 8) * colormap_info->green_max) / 0xFF) * colormap_info->green_mult + 
+                   ((((argb & 0x000000FF)) * colormap_info->blue_max) / 0xFF) * colormap_info->blue_mult +
+                   colormap_info->base_pixel
+                   );
+    
+    // Grab the string
+    char buf[text->length() + 1];
+    JvGetStringUTFRegion(text, 0, text->length(), buf);
+    buf[text->length()] = '\0';
+    
+    // Build the XTextItem structure
+    XTextItem textitem;
+    textitem.chars = buf;
+    textitem.nchars = text->length();
+    textitem.delta = 0;
+    textitem.font = ((XFontStruct*)org::xwt::plat::POSIX::fontToXFont(font))->fid;
+    
+    // Draw the text
+    XDrawText(display, (*((Pixmap*)pm)), (*((GC*)clipped_gc)), x, y, &textitem, 1);
+}
+
+
+// X11Surface //////////////////////////////////////////////////////////////////////
+
+void org::xwt::plat::POSIX$X11Surface::setTitleBarText(java::lang::String* s) {
+    int len = min(JvGetStringUTFLength(s), 1024);
+    char buf[len + 1];
+    JvGetStringUTFRegion(s, 0, len, buf);
+    buf[len] = '\0';
+    
+    XTextProperty tp;
+    tp.value = (unsigned char*)buf;
+    tp.nitems = len;
+    tp.encoding = XA_STRING;
+    tp.format = 8;
+    XSetTextProperty(display, (*((Window*)window)), &tp, XA_WM_NAME);
+    XSetTextProperty(display, (*((Window*)window)), &tp, XA_WM_ICON_NAME);
+}
+
+void org::xwt::plat::POSIX$X11Surface::setLimits(jint minw, jint minh, jint maxw, jint maxh) {
+    XSizeHints hints;
+    hints.min_width = minw;
+    hints.min_height = minh;
+    hints.max_width = maxw;
+    hints.max_height = maxh;
+    hints.flags = PMinSize | PMaxSize;
+    XSetWMNormalHints(display, (*((Window*)window)), &hints);
+}
+
+void org::xwt::plat::POSIX$X11Surface::setSize (jint width, jint height) {
+    if (width <= 0 || height <= 0) return;
+    XResizeWindow(display, (*((Window*)window)), width, height);
+    XFlush(display);
+}
+
+void org::xwt::plat::POSIX$X11Surface::_dispose() { XDestroyWindow(display, (*((Window*)window))); }
+void org::xwt::plat::POSIX$X11Surface::setLocation (jint x, jint y) { XMoveWindow(display, (*((Window*)window)), x, y); }
+void org::xwt::plat::POSIX$X11Surface::toFront() { XRaiseWindow(display, (*((Window*)window))); }
+void org::xwt::plat::POSIX$X11Surface::toBack() { XLowerWindow(display, (*((Window*)window))); }
+
+void org::xwt::plat::POSIX$X11Surface::_setMinimized(jboolean b) {
+    if (b) XIconifyWindow(display, (*((Window*)window)), screen_num);
+    else XMapRaised(display, (*((Window*)window)));
+}
+
+void org::xwt::plat::POSIX$X11Surface::natInit() {
+    XSetWindowAttributes xswa;
+    window = (gnu::gcj::RawData*)malloc(sizeof(Window));
+    xswa.bit_gravity = NorthWestGravity;
+    xswa.colormap = colormap;
+    xswa.event_mask = ExposureMask | ButtonPressMask | StructureNotifyMask |
+        KeyPressMask | KeyReleaseMask | ButtonPressMask |
+        ButtonReleaseMask | EnterWindowMask | LeaveWindowMask |
+        PointerMotionMask | ButtonMotionMask | ConfigureNotify | FocusChangeMask;
+    *((Window*)window) = XCreateWindow(display, DefaultRootWindow(display), 10, 10, 500, 300, 0,
+                                       colorDepth, InputOutput, CopyFromParent,
+                                       CWColormap | CWBitGravity | CWEventMask, &xswa);
+    
+    if (!framed) {
+        // FIXME: figure out why this works and make it elegant
+        int dat[5] = { 0x2, 0xbffff804, 0x0, 0x817f560, 0x8110694 };
+        XChangeProperty(display, (*((Window*)window)),
+                        XInternAtom(display, "_MOTIF_WM_HINTS", False),
+                        XInternAtom(display, "_MOTIF_WM_HINTS", False),
+                        32, 
+                        PropModeReplace,
+                        (unsigned char*)dat,
+                        5);
+    }
+    
+    XTextProperty tp;
+    tp.value = (unsigned char*)"XWT";
+    tp.nitems = 3;
+    tp.encoding = XA_STRING;
+    tp.format = 8;
+    XSetTextProperty(display, (*((Window*)window)), &tp, XA_WM_CLASS);
+    
+    Atom proto = XInternAtom(display, "WM_DELETE_WINDOW", False);
+    XSetWMProtocols(display, (*((Window*)window)), &proto, 1);
+    
+    XSelectInput(display, (*((Window*)window)), StructureNotifyMask);
+    org::xwt::plat::POSIX::windowToSurfaceMap->put(new java::lang::Long(*((Window*)window)), this);
+
+    XEvent e;
+    XMapRaised(display, (*((Window*)window)));
+    XFlush(display);
+
+    waitForCreation->block();
+    XSelectInput(display, (*((Window*)window)), xswa.event_mask);
+    XFlush(display);
+
+    gc = (gnu::gcj::RawData*)malloc(sizeof(GC));
+    *((GC*)gc) = XCreateGC(display, (*((Window*)window)), 0, 0);
+    
+    XGCValues vm;
+    vm.graphics_exposures = 0;
+    XChangeGC(display, *((GC*)gc), GCGraphicsExposures, &vm);
+}
+
+
+void org::xwt::plat::POSIX$X11Surface::dispatchEvent(gnu::gcj::RawData* ev) {
+
+    XEvent* e = (XEvent*)ev;
+    if (e->type == Expose) {
+        XExposeEvent *expose = (XExposeEvent*)(e);
+        Dirty(expose->x, expose->y, expose->width, expose->height);
+        
+    } else if (e->type == ClientMessage) { if (((XClientMessageEvent*)(e))->data.l[0] == XInternAtom(display, "WM_DELETE_WINDOW", False)) Close();
+    } else if (e->type == MapNotify) { Minimized(0); waitForCreation->release();
+    } else if (e->type == UnmapNotify) { Minimized(1);
+    } else if (e->type == FocusIn) { Focused(1);
+    } else if (e->type == FocusOut) { Focused(0);
+    
+    } else if (e->type == SelectionNotify) {
+        XSelectionEvent* xsn = (XSelectionEvent*)(e);
+        if (xsn->property == None) org::xwt::plat::POSIX::clipboard = JvNewStringLatin1("", 0);
+        else {
+            Atom returntype;
+            int returnformat;
+            unsigned long numitems;
+            unsigned char* ret;
+            unsigned long bytes_after;
+            XGetWindowProperty(display, xsn->requestor, xsn->property, 0, 4096,
+                               True, AnyPropertyType, &returntype, &returnformat,
+                               &numitems, &bytes_after, &ret);
+            org::xwt::plat::POSIX::clipboard =
+                (returntype == None ? JvNewStringLatin1("", 0) : JvNewStringLatin1((char*)ret, strlen((char*)ret)));
+        }
+        org::xwt::plat::POSIX::waiting_for_selection_event->release();
+        
+    } else if (e->type == SelectionRequest) {
+        XSelectionRequestEvent* xsr = (XSelectionRequestEvent*)(e);
+        XSelectionEvent xsn;
+        xsn.type = SelectionNotify;
+        xsn.serial = xsr->serial;
+        xsn.send_event = True;
+        xsn.display = display;
+        xsn.requestor = xsr->requestor;
+        xsn.selection = xsr->selection;
+        xsn.target = xsr->target;
+        xsn.property = xsr->property;
+        xsn.time = xsr->time;
+        
+        int len = min(1024, JvGetStringUTFLength(org::xwt::plat::POSIX::clipboard));
+        char buf[len + 1];
+        JvGetStringUTFRegion(org::xwt::plat::POSIX::clipboard, 0, len, buf);
+        buf[len] = '\0';
+        
+        XChangeProperty(display, xsr->requestor, xsr->property, xsr->target, 8, PropModeReplace, (unsigned char*)buf, len + 1);
+        XSendEvent(display, xsr->requestor, True, 0, (XEvent*)(&xsn));
+        
+    } else if (e->type == KeyPress || e->type == KeyRelease) {
+        XKeyEvent *xbe = (XKeyEvent*)(e);
+        
+        // drop faked KeyRelease events generated by the X server's autorepeat
+        if (e->type == KeyRelease) {
+            char depressed[32];
+            XQueryKeymap(display, depressed);
+            if ((depressed[(xbe->keycode & 0xff) / 8] & (0x1 << (xbe->keycode % 8))) >> (xbe->keycode % 8)) return;
+        }
+        
+        char ss[20];
+        char* s = ss;
+        
+        unsigned int savestate = xbe->state;
+        xbe->state = xbe->state & ShiftMask;      // ignore everything except shiftmask
+        XLookupString(xbe, s, 20, NULL, NULL);
+        xbe->state = savestate;
+        
+        if (s != NULL && s[0] != '\0' && s[1] == '\0' && s[0] >= 0x20 && s[0] <= 0x7E) {
+            int i = s[0];
+            
+        } else {
+            KeySym ks = XKeycodeToKeysym(display, xbe->keycode, 0);
+            switch (ks) {
+            case XK_BackSpace: s = "back_space"; break;
+            case XK_Tab: s = "tab"; break;
+            case XK_Linefeed: s = "enter"; break;
+            case XK_Return: s = "enter"; break;
+            case XK_Scroll_Lock: s = "scroll_lock"; break;
+            case XK_Escape: s = "escape"; break;
+            case XK_Insert: s = "insert"; break;
+            case XK_Delete: s = "delete"; break;
+            case XK_Home: s = "home"; break;
+            case XK_Left: s = "left"; break;
+            case XK_Up: s = "up"; break;
+            case XK_Right: s = "right"; break;
+            case XK_Down: s = "down"; break;
+            case XK_Page_Up: s = "page_up"; break;
+            case XK_Page_Down: s = "page_down"; break;
+            case XK_End: s = "end"; break;
+            case XK_Num_Lock: s = "num_lock"; break;
+            case XK_KP_Tab: s = "tab"; break;
+            case XK_KP_Enter: s = "enter"; break;
+            case XK_KP_F1: s = "f1"; break;
+            case XK_KP_F2: s = "f2"; break;
+            case XK_KP_F3: s = "f3"; break;
+            case XK_KP_F4: s = "f4"; break;
+            case XK_KP_Home: s = "home"; break;
+            case XK_KP_Left: s = "left"; break;
+            case XK_KP_Up: s = "up"; break;
+            case XK_KP_Right: s = "right"; break;
+            case XK_KP_Down: s = "down"; break;
+            case XK_KP_Page_Up: s = "page_up"; break;
+            case XK_KP_Page_Down: s = "page_down"; break;
+            case XK_KP_End: s = "end"; break;
+            case XK_KP_Insert: s = "insert"; break;
+            case XK_KP_Delete: s = "delete"; break;
+            case XK_F1: s = "f1"; break;
+            case XK_F2: s = "f2"; break;
+            case XK_F3: s = "f3"; break;
+            case XK_F4: s = "f4"; break;
+            case XK_F5: s = "f5"; break;
+            case XK_F6: s = "f6"; break;
+            case XK_F7: s = "f7"; break;
+            case XK_F8: s = "f8"; break;
+            case XK_F9: s = "f9"; break;
+            case XK_F10: s = "f10"; break;
+            case XK_F11: s = "f11"; break;
+            case XK_F12: s = "f12"; break;
+            case XK_Shift_L: s = "shift"; break;
+            case XK_Shift_R: s = "shift"; break;
+            case XK_Control_L: s = "control"; break;
+            case XK_Control_R: s = "control"; break;
+            case XK_Caps_Lock: s = "caps_lock"; break;
+            case XK_Meta_L: s = "alt"; break;
+            case XK_Meta_R: s = "alt"; break;
+            case XK_Alt_L: s = "alt"; break;
+            case XK_Alt_R: s = "alt"; break;
+            default: return;
+            }
+        }
+        
+        if (e->type == KeyPress) KeyPressed(JvNewStringLatin1(s));
+        if (e->type == KeyRelease) KeyReleased(JvNewStringLatin1(s));
+        
+    } else if (e->type == ButtonPress) {
+        XButtonEvent* xbe = (XButtonEvent*)(e);
+        if (xbe->button == 2) xbe->button = 3;
+        else if (xbe->button == 3) xbe->button = 2;
+        Press(xbe->button);
+        
+    } else if (e->type == ButtonRelease) {
+        XButtonEvent* xbe = (XButtonEvent*)(e);
+        if (xbe->button == 2) xbe->button = 3;
+        else if (xbe->button == 3) xbe->button = 2;
+        Release(xbe->button);
+        
+    } else if (e->type == MotionNotify) {
+        XMotionEvent* xme = (XMotionEvent*)(e);
+        Move(xme->x, xme->y);
+        
+    } else if (e->type == EnterNotify || e->type == LeaveNotify) {
+        XCrossingEvent* xce = (XCrossingEvent*)(e);
+        Move(xce->x, xce->y);
+        
+    } else if (e->type == ConfigureNotify) {
+        Window child;
+        int x_out, y_out;
+        XConfigureEvent* xce = (XConfigureEvent*)(e);
+        XTranslateCoordinates(display, (*((Window*)window)), DefaultRootWindow(display), 0, 0, &x_out, &y_out, &child);
+        if (xce->width != width || xce->height != height) SizeChange(xce->width, xce->height);
+        if (x_out != root->abs(0) || y_out != root->abs(1)) PosChange(x_out, y_out);
+        
+    }
+}
+
+static jstring crosshair, east, hand, move, north, northeast, northwest,
+    south, southeast, southwest, text, west, wait_string;
+static Cursor crosshair_cursor, east_cursor, hand_cursor, move_cursor, north_cursor,
+    northeast_cursor, northwest_cursor, south_cursor, southeast_cursor,
+    southwest_cursor, text_cursor, west_cursor, wait_cursor, default_cursor;
+
+void org::xwt::plat::POSIX$X11Surface::syncCursor() {
+    
+    Cursor curs;
+    if (cursor->equals(crosshair)) curs = crosshair_cursor;
+    else if (cursor->equals(east)) curs = east_cursor;
+    else if (cursor->equals(hand)) curs = hand_cursor;
+    else if (cursor->equals(move)) curs = move_cursor;
+    else if (cursor->equals(north)) curs = north_cursor;
+    else if (cursor->equals(northeast)) curs = northeast_cursor;
+    else if (cursor->equals(northwest)) curs = northwest_cursor;
+    else if (cursor->equals(south)) curs = south_cursor;
+    else if (cursor->equals(southeast)) curs = southeast_cursor;
+    else if (cursor->equals(southwest)) curs = southwest_cursor;
+    else if (cursor->equals(text)) curs = text_cursor;
+    else if (cursor->equals(west)) curs = west_cursor;
+    else if (cursor->equals(wait_string)) curs = wait_cursor;
+    else curs = default_cursor;
+    
+    XDefineCursor(display, (*((Window*)window)), curs);
+}
+
+
+
+// POSIX ///////////////////////////////////////////////////////////////////
+
+jint org::xwt::plat::POSIX::_getScreenWidth() { return WidthOfScreen(DefaultScreenOfDisplay(display)); }
+jint org::xwt::plat::POSIX::_getScreenHeight() { return HeightOfScreen(DefaultScreenOfDisplay(display)); }
+
+void org::xwt::plat::POSIX::eventThread() {
+    XEvent e;
+    while(true) {
+        XNextEvent(display, &e);
+        org::xwt::plat::POSIX$X11Surface* surface =
+            (org::xwt::plat::POSIX$X11Surface*)windowToSurfaceMap->get(new java::lang::Long(((XAnyEvent*)&e)->window));
+        if (surface != NULL) surface->dispatchEvent((gnu::gcj::RawData*)&e);
+    }
+}
+
+jstring org::xwt::plat::POSIX::_getClipBoard() {
+    XConvertSelection(display, XA_PRIMARY, XA_STRING, XInternAtom(display, "VT_SELECTION", False), selectionWindow, CurrentTime);
+    XFlush(display);
+    org::xwt::plat::POSIX::waiting_for_selection_event->block();
+    return clipboard;
+}
+
+void org::xwt::plat::POSIX::_setClipBoard(jstring s) {
+    clipboard = s;
+    int len = JvGetStringUTFLength(clipboard);
+    char buf[len + 1];
+    JvGetStringUTFRegion(clipboard, 0, len, buf);
+    buf[len] = '\0';
+    XSetSelectionOwner(display, XInternAtom(display, "PRIMARY", 0), selectionWindow, CurrentTime);
+}
+
+void org::xwt::plat::POSIX::natInit() {
+
+    if (!XInitThreads())
+        org::xwt::Platform::criticalAbort(JvNewStringLatin1("Your X11 libraries do not support multithreaded programs"));
+
+    display = XOpenDisplay(NULL);
+    screen_num = XDefaultScreen(display);
+    colorDepth = (jint)(DefaultDepth(((Display*)display), 0));
+    shm_info.shmaddr = NULL;
+    shm_supported = (XShmQueryExtension(display) == True);
+    //shm_supported = 0;
+    
+    crosshair = JvNewStringLatin1("crosshair");
+    east = JvNewStringLatin1("east");
+    hand = JvNewStringLatin1("hand");
+    move = JvNewStringLatin1("move");
+    north = JvNewStringLatin1("north");
+    northeast = JvNewStringLatin1("northeast");
+    northwest = JvNewStringLatin1("northwest");
+    south = JvNewStringLatin1("south");
+    southeast = JvNewStringLatin1("southeast");
+    southwest = JvNewStringLatin1("southwest");
+    text = JvNewStringLatin1("text");
+    west = JvNewStringLatin1("west");
+    wait_string = JvNewStringLatin1("wait");
+    crosshair_cursor = XCreateFontCursor(display, XC_tcross);
+    east_cursor = XCreateFontCursor(display, XC_right_side);
+    hand_cursor = XCreateFontCursor(display, XC_hand2);
+    move_cursor = XCreateFontCursor(display, XC_fleur);
+    north_cursor = XCreateFontCursor(display, XC_top_side);
+    northeast_cursor = XCreateFontCursor(display, XC_top_right_corner);
+    northwest_cursor = XCreateFontCursor(display, XC_left_side);
+    south_cursor = XCreateFontCursor(display, XC_bottom_side);
+    southeast_cursor = XCreateFontCursor(display, XC_bottom_right_corner);
+    southwest_cursor = XCreateFontCursor(display, XC_bottom_left_corner);
+    text_cursor = XCreateFontCursor(display, XC_xterm);
+    west_cursor = XCreateFontCursor(display, XC_right_side);
+    wait_cursor = XCreateFontCursor(display, XC_watch);
+    default_cursor = XCreateFontCursor(display, XC_left_ptr);
+
+    selectionWindow = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 1, 1, 0, colorDepth, InputOutput, CopyFromParent, 0, NULL);
+    visual = DefaultVisual(display, screen_num);
+    char buf[255];
+    sprintf(buf, "X11 SHM:    %s", shm_supported ? "enabled" : "disabled");
+    org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
+    sprintf(buf, "X11 Visual: %x %x %x bits: %i visualid: %i depth: %i",
+            visual->red_mask, visual->green_mask, visual->blue_mask, visual->bits_per_rgb, visual->visualid, colorDepth);
+    org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
+
+    if(XmuLookupStandardColormap(display, screen_num, visual->visualid, colorDepth, XA_RGB_BEST_MAP, False, True) == 0)
+        org::xwt::Platform::criticalAbort(JvNewStringLatin1("ERROR: XmuLookupStandardColormap failed"));
+    
+    XStandardColormap* best_map_info = NULL;
+    int count;
+    if (XGetRGBColormaps(display, RootWindow(display, screen_num), &best_map_info, &count, XA_RGB_BEST_MAP) == 0)
+        org::xwt::Platform::criticalAbort(JvNewStringLatin1("ERROR: couldn't allocate a standard colormap"));
+    if (!best_map_info->colormap)
+        org::xwt::Platform::criticalAbort(JvNewStringLatin1("ERROR: XmuLookupStandardColomap succeded, but no colormap was found on the root window"));
+    if (best_map_info->red_max == 0)
+        org::xwt::Platform::criticalAbort(JvNewStringLatin1("ERROR: standard colormap exists, but was improperly allocated"));
+    colormap = best_map_info->colormap;
+    colormap_info = best_map_info;
+
+    sprintf(buf, "            red_max / red_mult: %x %x", colormap_info->red_max, colormap_info->red_mult);
+    org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
+    sprintf(buf, "            green_max / green_mult: %x %x", colormap_info->green_max, colormap_info->green_mult);
+    org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
+    sprintf(buf, "            blue_max / blue_mult: %x %x", colormap_info->blue_max, colormap_info->blue_mult);
+    org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
+    sprintf(buf, "            base_pixel: %x", colormap_info->base_pixel);
+    org::xwt::util::Log::log(this->getClass(), JvNewStringLatin1(buf));
+}
+
+JArray<java::lang::String*>* org::xwt::plat::POSIX::listNativeFonts() {
+    int numfonts;
+    char** xfonts = XListFonts(display, "-*-*-*-*-*-*-*-*-*-*-*-*-*-*", 0xFFFFFFFF, &numfonts);
+    JArray<java::lang::String*>* fonts = (JArray<java::lang::String*>*)JvNewObjectArray(numfonts, &(::java::lang::String::class$), NULL);
+    java::lang::String** jfonts = (java::lang::String**)(elements(fonts));
+    for(int i=0; i<numfonts; i++)
+        jfonts[i] = JvNewStringLatin1(xfonts[i], strlen(xfonts[i]));
+    return fonts;
+}
+
+gnu::gcj::RawData* org::xwt::plat::POSIX::fontStringToStruct(jstring s) {
+    int len = min(1024, JvGetStringUTFLength(s));
+    char buf[len + 1];
+    JvGetStringUTFRegion(s, 0, len, buf);
+    buf[len] = '\0';
+    return (gnu::gcj::RawData*)XLoadQueryFont(display, buf);
+}
+
+jint org::xwt::plat::POSIX::_getMaxAscent(::java::lang::String* font) { return ((XFontStruct*)fontToXFont(font))->max_bounds.ascent; }
+jint org::xwt::plat::POSIX::_getMaxDescent(::java::lang::String* font) { return ((XFontStruct*)fontToXFont(font))->max_bounds.descent; }
+jint org::xwt::plat::POSIX::_stringWidth(::java::lang::String* font, ::java::lang::String* text) {
+    if (text == NULL) return 0;
+    int len = JvGetStringUTFLength(text);
+    char buf[len + 1];
+    JvGetStringUTFRegion(text, 0, len, buf);
+    buf[len] = '\0';
+    return XTextWidth((XFontStruct*)fontToXFont(font), buf, len);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+
+/* $Xorg: LookupCmap.c,v 1.4 2001/02/09 02:03:53 xorgcvs Exp $ */
+
+/* 
+Copyright 1989, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+/* $XFree86: xc/lib/Xmu/LookupCmap.c,v 1.8 2001/12/14 19:55:47 dawes Exp $ */
+
+/*
+ * Author:  Donna Converse, MIT X Consortium
+ */
+
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xmu/StdCmap.h>
+#include <stdlib.h>
+
+/*
+ * Prototypes
+ */
+static Status lookup(Display*, int, VisualID, Atom, XStandardColormap*, Bool);
+
+/*
+ * To create a standard colormap if one does not currently exist, or
+ * replace the currently existing standard colormap, use 
+ * XmuLookupStandardColormap().
+ *
+ * Given a screen, a visual, and a property, XmuLookupStandardColormap()
+ * will determine the best allocation for the property under the specified
+ * visual, and determine the whether to create a new colormap or to use
+ * the default colormap of the screen.  It will call XmuStandardColormap()
+ * to create the standard colormap.
+ *
+ * If replace is true, any previous definition of the property will be 
+ * replaced.  If retain is true, the property and the colormap will be
+ * made permanent for the duration of the server session.  However,
+ * pre-existing property definitions which are not replaced cannot be made
+ * permanent by a call to XmuLookupStandardColormap(); a request to retain 
+ * resources pertains to newly created resources.
+ *
+ * Returns 0 on failure, non-zero on success.  A request to create a 
+ * standard colormap upon a visual which cannot support such a map is
+ * considered a failure.  An example of this would be requesting any
+ * standard colormap property on a monochrome visual, or, requesting an
+ * RGB_BEST_MAP on a display whose colormap size is 16.
+ */
+
+Status
+XmuLookupStandardColormap(Display *dpy, int screen, VisualID visualid,
+                         unsigned int depth, Atom property,
+                         Bool replace, Bool retain)
+     /*
+      * dpy            - specifies X server connection
+      * screen                 - specifies screen of display
+      * visualid       - specifies the visual type
+      * depth          - specifies  the visual type
+      * property       - a standard colormap property
+      * replace                - specifies whether to replace
+      * retain         - specifies whether to retain
+      */
+{
+    Display            *odpy;          /* original display connection */
+    XStandardColormap  *colormap;      
+    XVisualInfo                vinfo_template, *vinfo; /* visual */
+    long               vinfo_mask;
+    unsigned long      r_max, g_max, b_max;    /* allocation */
+    int                        count;  
+    Colormap           cmap;                   /* colormap ID */
+    Status             status = 0;
+
+
+    /* Match the requested visual */
+
+    vinfo_template.visualid = visualid;        
+    vinfo_template.screen = screen;
+    vinfo_template.depth = depth;
+    vinfo_mask = VisualIDMask | VisualScreenMask | VisualDepthMask;
+    if ((vinfo = XGetVisualInfo(dpy, vinfo_mask, &vinfo_template, &count)) ==
+       NULL)
+       return 0;
+
+    /* Monochrome visuals have no standard maps */
+
+    if (vinfo->colormap_size <= 2) {
+       XFree((char *) vinfo);
+       return 0;       
+    }
+
+    /* If the requested property already exists on this screen, and, 
+     * if the replace flag has not been set to true, return success.
+     * lookup() will remove a pre-existing map if replace is true.
+     */
+
+    if (lookup(dpy, screen, visualid, property, (XStandardColormap *) NULL,
+              replace) && !replace) {
+       XFree((char *) vinfo);
+       return 1;
+    }
+
+    /* Determine the best allocation for this property under the requested
+     * visualid and depth, and determine whether or not to use the default
+     * colormap of the screen.
+     */
+
+    if (!XmuGetColormapAllocation(vinfo, property, &r_max, &g_max, &b_max)) {
+       XFree((char *) vinfo);
+       return 0;
+    }
+
+    cmap = (property == XA_RGB_DEFAULT_MAP &&
+           visualid == XVisualIDFromVisual(DefaultVisual(dpy, screen)))
+       ? DefaultColormap(dpy, screen) : None;
+
+    /* If retaining resources, open a new connection to the same server */
+
+    if (retain) {
+       odpy = dpy;
+       if ((dpy = XOpenDisplay(XDisplayString(odpy))) == NULL) {
+           XFree((char *) vinfo);
+           return 0;
+       }
+    }
+
+    /* Create the standard colormap */
+
+    colormap = XmuStandardColormap(dpy, screen, visualid, depth, property,
+                                  cmap, r_max, g_max, b_max);
+
+    /* Set the standard colormap property */
+
+    if (colormap) {
+       XGrabServer(dpy);
+
+       if (lookup(dpy, screen, visualid, property, colormap, replace) &&
+           !replace) {
+           /* Someone has defined the property since we last looked.
+            * Since we will not replace it, release our own resources.
+            * If this is the default map, our allocations will be freed 
+            * when this connection closes.
+            */
+           if (colormap->killid == ReleaseByFreeingColormap)
+               XFreeColormap(dpy, colormap->colormap);
+       }
+       else if (retain) {
+               XSetCloseDownMode(dpy, RetainPermanent);
+       }
+       XUngrabServer(dpy);
+       XFree((char *) colormap);
+       status = 1;
+    }
+
+    if (retain)
+       XCloseDisplay(dpy);
+    XFree((char *) vinfo);
+    return status;
+}
+
+/***************************************************************************/
+
+/* Lookup a standard colormap property.  If the property is RGB_DEFAULT_MAP,
+ * the visualid is used to determine whether the indicated standard colormap
+ * exists.  If the map exists and replace is true, delete the resources used
+ * by the map and remove the property.  Return true if the map exists,
+ * or did exist and was deleted; return false if the map was not found.
+ *
+ * Note that this is not the way that a Status return is normally used.
+ *
+ * If new is not NULL, new points to an XStandardColormap structure which
+ * describes a standard colormap of the specified property.  It will be made
+ * a standard colormap of the screen if none already exists, or if replace 
+ * is true.
+ */
+
+static Status
+lookup(Display *dpy, int screen, VisualID visualid, Atom property,
+       XStandardColormap *cnew, Bool replace)
+     /*
+      * dpy            - specifies display connection
+      * screen         - specifies screen number
+      * visualid       - specifies visualid for std map
+      * property       - specifies colormap property name
+      * cnew           - specifies a standard colormap
+      * replace                - specifies whether to replace
+      */
+{
+    register int       i;
+    int                        count;
+    XStandardColormap  *stdcmaps, *s;
+    Window             win = RootWindow(dpy, screen);
+
+    /* The property does not already exist */
+
+    if (! XGetRGBColormaps(dpy, win, &stdcmaps, &count, property)) {
+       if (cnew)
+           XSetRGBColormaps(dpy, win, cnew, 1, property);
+       return 0;
+    }
+
+    /* The property exists and is not describing the RGB_DEFAULT_MAP */
+
+    if (property != XA_RGB_DEFAULT_MAP) {
+       if (replace) {
+           XmuDeleteStandardColormap(dpy, screen, property);
+           if (cnew)
+               XSetRGBColormaps(dpy, win, cnew, 1, property);
+       }
+       XFree((char *)stdcmaps);
+       return 1;
+    }
+
+    /* The property exists and is RGB_DEFAULT_MAP */
+    
+    for (i=0, s=stdcmaps; (i < count) && (s->visualid != visualid); i++, s++)
+       ;
+
+    /* No RGB_DEFAULT_MAP property matches the given visualid */
+
+    if (i == count) {
+       if (cnew) {
+           XStandardColormap   *m, *maps;
+
+           s = (XStandardColormap *) malloc((unsigned) ((count+1) * sizeof
+                                             (XStandardColormap)));
+
+           for (i = 0, m = s, maps = stdcmaps; i < count; i++, m++, maps++) {
+               m->colormap   = maps->colormap;
+               m->red_max    = maps->red_max;
+               m->red_mult   = maps->red_mult;
+               m->green_max  = maps->green_max;
+               m->green_mult = maps->green_mult;
+               m->blue_max   = maps->blue_max;
+               m->blue_mult  = maps->blue_mult;
+               m->base_pixel = maps->base_pixel;
+               m->visualid   = maps->visualid;
+               m->killid     = maps->killid;
+           }
+           m->colormap   = cnew->colormap;
+           m->red_max    = cnew->red_max;
+           m->red_mult   = cnew->red_mult;
+           m->green_max  = cnew->green_max;
+           m->green_mult = cnew->green_mult;
+           m->blue_max   = cnew->blue_max;
+           m->blue_mult  = cnew->blue_mult;
+           m->base_pixel = cnew->base_pixel;
+           m->visualid   = cnew->visualid;
+           m->killid     = cnew->killid;
+
+           XSetRGBColormaps(dpy, win, s, ++count, property);
+           free((char *) s);
+       }
+       XFree((char *) stdcmaps);
+       return 0;
+    }
+
+    /* Found an RGB_DEFAULT_MAP property with a matching visualid */
+
+    if (replace) {
+       /* Free old resources first - we may need them, particularly in 
+        * the default colormap of the screen.  However, because of this,
+        * it is possible that we will destroy the old resource and fail 
+        * to create a new one if XmuStandardColormap() fails.
+        */
+
+       if (count == 1) {
+           XmuDeleteStandardColormap(dpy, screen, property);
+           if (cnew)
+               XSetRGBColormaps(dpy, win, cnew, 1, property);
+       }
+       else {
+           XStandardColormap   *map;
+
+           /* s still points to the matching standard colormap */
+
+           if (s->killid == ReleaseByFreeingColormap) {
+               if ((s->colormap != None) &&
+                   (s->colormap != DefaultColormap(dpy, screen)))
+                   XFreeColormap(dpy, s->colormap);
+           }
+           else if (s->killid != None)
+               XKillClient(dpy, s->killid);
+
+           map = (cnew) ? cnew : stdcmaps + --count;
+
+           s->colormap   = map->colormap;
+           s->red_max    = map->red_max;
+           s->red_mult   = map->red_mult;
+           s->green_max  = map->green_max;
+           s->green_mult = map->green_mult;
+           s->blue_max   = map->blue_max;
+           s->blue_mult  = map->blue_mult;
+           s->visualid   = map->visualid;
+           s->killid     = map->killid;
+
+           XSetRGBColormaps(dpy, win, stdcmaps, count, property);
+       }
+    }
+    XFree((char *) stdcmaps);
+    return 1;
+}
+
+/* $Xorg: CmapAlloc.c,v 1.4 2001/02/09 02:03:51 xorgcvs Exp $ */
+
+/* 
+
+Copyright 1989, 1994, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+/* $XFree86: xc/lib/Xmu/CmapAlloc.c,v 1.7 2001/12/14 19:55:35 dawes Exp $ */
+
+/*
+ * Author:  Donna Converse, MIT X Consortium
+ */
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xmu/StdCmap.h>
+#include <stdio.h>
+
+#define lowbit(x) ((x) & (~(x) + 1))
+
+/*
+ * Prototypes
+ */
+static void best_allocation(XVisualInfo*, unsigned long*, unsigned long*,
+                           unsigned long*);
+static int default_allocation(XVisualInfo*, unsigned long*,
+                             unsigned long*, unsigned long*);
+static void gray_allocation(int, unsigned long*, unsigned long*,
+                           unsigned long*);
+static int icbrt(int);
+static int icbrt_with_bits(int, int);
+static int icbrt_with_guess(int, int);
+
+/* To determine the best allocation of reds, greens, and blues in a 
+ * standard colormap, use XmuGetColormapAllocation.
+ *     vinfo           specifies visual information for a chosen visual
+ *     property        specifies one of the standard colormap property names
+ *     red_max         returns maximum red value 
+ *      green_max      returns maximum green value
+ *     blue_max        returns maximum blue value
+ *
+ * XmuGetColormapAllocation returns 0 on failure, non-zero on success.
+ * It is assumed that the visual is appropriate for the colormap property.
+ */
+
+Status
+XmuGetColormapAllocation(XVisualInfo *vinfo, Atom property,
+                        unsigned long *red_max,
+                        unsigned long *green_max,
+                        unsigned long *blue_max)
+{
+    Status     status = 1;
+
+    if (vinfo->colormap_size <= 2)
+       return 0;
+
+    switch (property)
+    {
+      case XA_RGB_DEFAULT_MAP:
+       status = default_allocation(vinfo, red_max, green_max, blue_max);
+       break;
+      case XA_RGB_BEST_MAP:
+       best_allocation(vinfo, red_max, green_max, blue_max);
+       break;
+      case XA_RGB_GRAY_MAP:
+       gray_allocation(vinfo->colormap_size, red_max, green_max, blue_max);
+       break;
+      case XA_RGB_RED_MAP:
+       *red_max = vinfo->colormap_size - 1;
+       *green_max = *blue_max = 0;
+       break;
+      case XA_RGB_GREEN_MAP:
+       *green_max = vinfo->colormap_size - 1;
+       *red_max = *blue_max = 0;
+       break;
+      case XA_RGB_BLUE_MAP:
+       *blue_max = vinfo->colormap_size - 1;
+       *red_max = *green_max = 0;
+       break;
+      default:
+       status = 0;
+    }
+    return status;
+}
+
+/****************************************************************************/
+/* Determine the appropriate color allocations of a gray scale.
+ *
+ * Keith Packard, MIT X Consortium
+ */
+
+static void
+gray_allocation(int n, unsigned long *red_max, unsigned long *green_max,
+               unsigned long *blue_max)
+{
+    *red_max = (n * 30) / 100;
+    *green_max = (n * 59) / 100; 
+    *blue_max = (n * 11) / 100; 
+    *green_max += ((n - 1) - (*red_max + *green_max + *blue_max));
+}
+
+/****************************************************************************/
+/* Determine an appropriate color allocation for the RGB_DEFAULT_MAP.
+ * If a map has less than a minimum number of definable entries, we do not
+ * produce an allocation for an RGB_DEFAULT_MAP.  
+ *
+ * For 16 planes, the default colormap will have 27 each RGB; for 12 planes,
+ * 12 each.  For 8 planes, let n = the number of colormap entries, which may
+ * be 256 or 254.  Then, maximum red value = floor(cube_root(n - 125)) - 1.
+ * Maximum green and maximum blue values are identical to maximum red.
+ * This leaves at least 125 cells which clients can allocate.
+ *
+ * Return 0 if an allocation has been determined, non-zero otherwise.
+ */
+
+static int
+default_allocation(XVisualInfo *vinfo, unsigned long *red,
+                  unsigned long *green, unsigned long *blue)
+{
+    int                        ngrays;         /* number of gray cells */
+
+    switch (vinfo->c_class)
+      {
+      case PseudoColor:
+        
+        if (vinfo->colormap_size > 65000)
+          /* intended for displays with 16 planes */
+          *red = *green = *blue = (unsigned long) 27;
+        else if (vinfo->colormap_size > 4000)
+          /* intended for displays with 12 planes */
+           *red = *green = *blue = (unsigned long) 12;
+      else if (vinfo->colormap_size < 250)
+           return 0;
+      else
+           /* intended for displays with 8 planes */
+           *red = *green = *blue = (unsigned long)
+          (icbrt(vinfo->colormap_size - 125) - 1);
+      break;
+      
+    case DirectColor:
+      
+       if (vinfo->colormap_size < 10)
+           return 0;
+       *red = *green = *blue = vinfo->colormap_size / 2 - 1;
+       break;
+
+      case TrueColor:
+
+       *red = vinfo->red_mask / lowbit(vinfo->red_mask);
+       *green = vinfo->green_mask / lowbit(vinfo->green_mask);
+       *blue = vinfo->blue_mask / lowbit(vinfo->blue_mask);
+       break;
+
+      case GrayScale:
+
+       if (vinfo->colormap_size > 65000)
+           ngrays = 4096;
+       else if (vinfo->colormap_size > 4000)
+           ngrays = 512;
+       else if (vinfo->colormap_size < 250)
+           return 0;
+       else
+           ngrays = 12;
+       gray_allocation(ngrays, red, green, blue);
+       break;
+       
+      default:
+       return 0;
+    }
+    return 1;
+}
+
+/****************************************************************************/
+/* Determine an appropriate color allocation for the RGB_BEST_MAP.
+ *
+ * For a DirectColor or TrueColor visual, the allocation is determined
+ * by the red_mask, green_mask, and blue_mask members of the visual info.
+ *
+ * Otherwise, if the colormap size is an integral power of 2, determine
+ * the allocation according to the number of bits given to each color,
+ * with green getting more than red, and red more than blue, if there
+ * are to be inequities in the distribution.  If the colormap size is
+ * not an integral power of 2, let n = the number of colormap entries.
+ * Then maximum red value = floor(cube_root(n)) - 1;
+ *     maximum blue value = floor(cube_root(n)) - 1;
+ *     maximum green value = n / ((# red values) * (# blue values)) - 1;
+ * Which, on a GPX, allows for 252 entries in the best map, out of 254
+ * defineable colormap entries.
+ */
+static void
+best_allocation(XVisualInfo *vinfo, unsigned long *red, unsigned long *green,
+               unsigned long *blue)
+{
+
+    if (vinfo->c_class == DirectColor ||       vinfo->c_class == TrueColor)
+    {
+       *red = vinfo->red_mask;
+       while ((*red & 01) == 0)
+           *red >>= 1;
+       *green = vinfo->green_mask;
+       while ((*green & 01) == 0)
+           *green >>=1;
+       *blue = vinfo->blue_mask;
+       while ((*blue & 01) == 0)
+           *blue >>= 1;
+    }
+    else
+    {
+       register int bits, n;
+       
+       /* Determine n such that n is the least integral power of 2 which is
+        * greater than or equal to the number of entries in the colormap.
+         */
+       n = 1;
+       bits = 0;
+       while (vinfo->colormap_size > n)
+       {
+           n = n << 1;
+           bits++;
+       }
+       
+       /* If the number of entries in the colormap is a power of 2, determine
+        * the allocation by "dealing" the bits, first to green, then red, then
+        * blue.  If not, find the maximum integral red, green, and blue values
+        * which, when multiplied together, do not exceed the number of 
+
+        * colormap entries.
+        */
+       if (n == vinfo->colormap_size)
+       {
+           register int r, g, b;
+           b = bits / 3;
+           g = b + ((bits % 3) ? 1 : 0);
+           r = b + (((bits % 3) == 2) ? 1 : 0);
+           *red = 1 << r;
+           *green = 1 << g;
+           *blue = 1 << b;
+       }
+       else
+       {
+           *red = icbrt_with_bits(vinfo->colormap_size, bits);
+           *blue = *red;       
+           *green = (vinfo->colormap_size / ((*red) * (*blue)));
+       }
+       (*red)--;
+       (*green)--;
+       (*blue)--;
+    }
+    return;
+}
+
+/*
+ * integer cube roots by Newton's method
+ *
+ * Stephen Gildea, MIT X Consortium, July 1991
+ */
+
+static int
+icbrt(int a)
+{
+    register int bits = 0;
+    register unsigned n = a;
+
+    while (n)
+    {
+       bits++;
+       n >>= 1;
+    }
+    return icbrt_with_bits(a, bits);
+}
+
+
+static int
+icbrt_with_bits(int a, int bits)
+     /* bits - log 2 of a */
+{
+    return icbrt_with_guess(a, a>>2*bits/3);
+}
+
+#ifdef _X_ROOT_STATS
+int icbrt_loopcount;
+#endif
+
+/* Newton's Method:  x_n+1 = x_n - ( f(x_n) / f'(x_n) ) */
+
+/* for cube roots, x^3 - a = 0,  x_new = x - 1/3 (x - a/x^2) */
+
+/*
+ * Quick and dirty cube roots.  Nothing fancy here, just Newton's method.
+ * Only works for positive integers (since that's all we need).
+ * We actually return floor(cbrt(a)) because that's what we need here, too.
+ */
+
+static int
+icbrt_with_guess(int a, int guess)
+{
+    register int delta;
+
+#ifdef _X_ROOT_STATS
+    icbrt_loopcount = 0;
+#endif
+    if (a <= 0)
+       return 0;
+    if (guess < 1)
+       guess = 1;
+
+    do {
+#ifdef _X_ROOT_STATS
+       icbrt_loopcount++;
+#endif
+       delta = (guess - a/(guess*guess))/3;
+#ifdef DEBUG
+       printf("pass %d: guess=%d, delta=%d\n", icbrt_loopcount, guess, delta);
+#endif
+       guess -= delta;
+    } while (delta != 0);
+
+    if (guess*guess*guess > a)
+       guess--;
+
+    return guess;
+}
+
+
+/* $Xorg: StdCmap.c,v 1.4 2001/02/09 02:03:53 xorgcvs Exp $ */
+
+/* 
+
+Copyright 1989, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+/* $XFree86: xc/lib/Xmu/StdCmap.c,v 1.6 2001/12/14 19:55:48 dawes Exp $ */
+
+/*
+ * Author:  Donna Converse, MIT X Consortium
+ */
+
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xmu/StdCmap.h>
+
+#define lowbit(x) ((x) & (~(x) + 1))
+
+/*
+ * Prototypes
+ */
+/* argument restrictions */
+static Status valid_args(XVisualInfo*, unsigned long, unsigned long,
+                        unsigned long, Atom);
+
+/*
+ * To create any one standard colormap, use XmuStandardColormap().
+ *
+ * Create a standard colormap for the given screen, visualid, and visual
+ * depth, with the given red, green, and blue maximum values, with the
+ * given standard property name.  Return a pointer to an XStandardColormap
+ * structure which describes the newly created colormap, upon success.
+ * Upon failure, return NULL.
+ * 
+ * XmuStandardColormap() calls XmuCreateColormap() to create the map.
+ *
+ * Resources created by this function are not made permanent; that is the
+ * caller's responsibility.
+ */
+
+XStandardColormap *
+XmuStandardColormap(Display *dpy, int screen, VisualID visualid,
+                   unsigned int depth, Atom property, Colormap cmap,
+                   unsigned long red_max, unsigned long green_max,
+                   unsigned long blue_max)
+     /*
+      * dpy                            - specifies X server connection
+      * screen                         - specifies display screen
+      * visualid                       - identifies the visual type
+      * depth                          - identifies the visual type
+      * property                       - a standard colormap property
+      * cmap                           - specifies colormap ID or None
+      * red_max, green_max, blue_max   - allocations
+      */
+{
+    XStandardColormap  *stdcmap;
+    Status             status;
+    XVisualInfo                vinfo_template, *vinfo;
+    long               vinfo_mask;
+    int                        n;
+
+    /* Match the required visual information to an actual visual */
+    vinfo_template.visualid = visualid;        
+    vinfo_template.screen = screen;
+    vinfo_template.depth = depth;
+    vinfo_mask = VisualIDMask | VisualScreenMask | VisualDepthMask;
+    if ((vinfo = XGetVisualInfo(dpy, vinfo_mask, &vinfo_template, &n)) == NULL)
+       return 0;
+
+    /* Check the validity of the combination of visual characteristics,
+     * allocation, and colormap property.  Create an XStandardColormap
+     * structure.
+     */
+
+    if (! valid_args(vinfo, red_max, green_max, blue_max, property)
+       || ((stdcmap = XAllocStandardColormap()) == NULL)) {
+       XFree((char *) vinfo);
+       return 0;
+    }
+
+    /* Fill in the XStandardColormap structure */
+
+    if (cmap == DefaultColormap(dpy, screen)) {
+       /* Allocating out of the default map, cannot use XFreeColormap() */
+       Window win = XCreateWindow(dpy, RootWindow(dpy, screen), 1, 1, 1, 1,
+                                  0, 0, InputOnly, vinfo->visual,
+                                  (unsigned long) 0,
+                                  (XSetWindowAttributes *)NULL);
+       stdcmap->killid  = (XID) XCreatePixmap(dpy, win, 1, 1, depth);
+       XDestroyWindow(dpy, win);
+       stdcmap->colormap = cmap;
+    } else {
+       stdcmap->killid = ReleaseByFreeingColormap;
+       stdcmap->colormap = XCreateColormap(dpy, RootWindow(dpy, screen),
+                                           vinfo->visual, AllocNone);
+    }
+    stdcmap->red_max = red_max;
+    stdcmap->green_max = green_max;
+    stdcmap->blue_max = blue_max;
+    if (property == XA_RGB_GRAY_MAP) 
+       stdcmap->red_mult = stdcmap->green_mult = stdcmap->blue_mult = 1;
+    else if (vinfo->c_class == TrueColor || vinfo->c_class == DirectColor) {
+       stdcmap->red_mult = lowbit(vinfo->red_mask);
+       stdcmap->green_mult = lowbit(vinfo->green_mask);
+       stdcmap->blue_mult = lowbit(vinfo->blue_mask);
+    } else {
+       stdcmap->red_mult = (red_max > 0)
+           ? (green_max + 1) * (blue_max + 1) : 0;
+       stdcmap->green_mult = (green_max > 0) ? blue_max + 1 : 0;
+       stdcmap->blue_mult = (blue_max > 0) ? 1 : 0;
+    }
+    stdcmap->base_pixel = 0;                   /* base pixel may change */
+    stdcmap->visualid = vinfo->visualid;
+
+    /* Make the colormap */
+
+    status = XmuCreateColormap(dpy, stdcmap);
+
+    /* Clean up */
+
+    XFree((char *) vinfo);
+    if (!status) {
+
+       /* Free the colormap or the pixmap, if we created one */
+       if (stdcmap->killid == ReleaseByFreeingColormap)
+           XFreeColormap(dpy, stdcmap->colormap);
+       else if (stdcmap->killid != None)
+           XFreePixmap(dpy, stdcmap->killid);
+       
+       XFree((char *) stdcmap);
+       return (XStandardColormap *) NULL;
+    }
+    return stdcmap;
+}
+
+/****************************************************************************/
+static Status
+valid_args(XVisualInfo *vinfo, unsigned long red_max, unsigned long green_max,
+          unsigned long blue_max, Atom property)
+     /*
+      * vinfo                          - specifies visual
+      * red_max, green_max, blue_max   - specifies alloc
+      * property                       - specifies property name
+      */
+{
+    unsigned long      ncolors;        /* number of colors requested */
+
+    /* Determine that the number of colors requested is <= map size */
+
+    if ((vinfo->c_class == DirectColor) || (vinfo->c_class == TrueColor)) {
+       unsigned long mask;
+
+       mask = vinfo->red_mask;
+       while (!(mask & 1))
+           mask >>= 1;
+       if (red_max > mask)
+           return 0;
+       mask = vinfo->green_mask;
+       while (!(mask & 1))
+           mask >>= 1;
+       if (green_max > mask)
+           return 0;
+       mask = vinfo->blue_mask;
+       while (!(mask & 1))
+           mask >>= 1;
+       if (blue_max > mask)
+           return 0;
+    } else if (property == XA_RGB_GRAY_MAP) {
+       ncolors = red_max + green_max + blue_max + 1;
+       if (ncolors > vinfo->colormap_size)
+           return 0;
+    } else {
+       ncolors = (red_max + 1) * (green_max + 1) * (blue_max + 1);
+       if (ncolors > vinfo->colormap_size)
+           return 0;
+    }
+    
+    /* Determine that the allocation and visual make sense for the property */
+
+    switch (property)
+    {
+      case XA_RGB_DEFAULT_MAP:
+       if (red_max == 0 || green_max == 0 || blue_max == 0)
+           return 0;
+       break;
+      case XA_RGB_RED_MAP:
+       if (red_max == 0)
+           return 0;
+       break;
+      case XA_RGB_GREEN_MAP:
+       if (green_max == 0)
+           return 0;
+       break;
+      case XA_RGB_BLUE_MAP:    
+       if (blue_max == 0)
+           return 0;
+       break;
+      case XA_RGB_BEST_MAP:
+       if (red_max == 0 || green_max == 0 || blue_max == 0)
+           return 0;
+       break;
+      case XA_RGB_GRAY_MAP:
+       if (red_max == 0 || blue_max == 0 || green_max == 0)
+           return 0;
+       break;
+      default:
+       return 0;
+    }
+    return 1;
+}
+
+
+/* $Xorg: CrCmap.c,v 1.4 2001/02/09 02:03:51 xorgcvs Exp $ */
+
+/* 
+
+Copyright 1989, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+/* $XFree86: xc/lib/Xmu/CrCmap.c,v 3.7 2001/12/14 19:55:36 dawes Exp $ */
+
+/*
+ * Author:  Donna Converse, MIT X Consortium
+ */
+
+/*
+ * CreateCmap.c - given a standard colormap description, make the map.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xmu/StdCmap.h>
+
+/*
+ * Prototypes
+ */
+/* allocate entire map Read Only */
+static int ROmap(Display*, Colormap, unsigned long[], int, int);
+
+/* allocate a cell, prefer Read Only */
+static Status ROorRWcell(Display*, Colormap, unsigned long[], int,
+                        XColor*, unsigned long);
+
+/* allocate a cell Read Write */
+static Status RWcell(Display*, Colormap, XColor*, XColor*, unsigned long*);
+
+/* for quicksort */
+static int compare(_Xconst void*, _Xconst void*);
+
+/* find contiguous sequence of cells */
+static Status contiguous(unsigned long[], int, int, unsigned long, int*, int*);
+
+/* frees resources before quitting */
+static void free_cells(Display*, Colormap, unsigned long[], int, int);
+
+/* create a map in a RO visual type */
+static Status readonly_map(Display*, XVisualInfo*, XStandardColormap*);
+
+/* create a map in a RW visual type */
+static Status readwrite_map(Display*, XVisualInfo*, XStandardColormap*);
+
+#define lowbit(x) ((x) & (~(x) + 1))
+#define TRUEMATCH(mult,max,mask) \
+    (colormap->max * colormap->mult <= vinfo->mask && \
+     lowbit(vinfo->mask) == colormap->mult)
+
+/*
+ * To create any one colormap which is described by an XStandardColormap
+ * structure, use XmuCreateColormap().
+ *
+ * Return 0 on failure, non-zero on success.
+ * Resources created by this function are not made permanent.
+ * No argument error checking is provided.  Use at your own risk.
+ *
+ * All colormaps are created with read only allocations, with the exception
+ * of read only allocations of colors in the default map or otherwise
+ * which fail to return the expected pixel value, and these are individually 
+ * defined as read/write allocations.  This is done so that all the cells
+ * defined in the default map are contiguous, for use in image processing.
+ * This typically happens with White and Black in the default map.
+ *
+ * Colormaps of static visuals are considered to be successfully created if
+ * the map of the static visual matches the definition given in the
+ * standard colormap structure.
+ */
+   
+Status
+XmuCreateColormap(Display *dpy, XStandardColormap *colormap)
+     /* dpy     - specifies the connection under which the map is created
+      * colormap - specifies the map to be created, and returns, particularly
+      *                   if the map is created as a subset of the default colormap
+      *                   of the screen, the base_pixel of the map.
+                                        */
+{
+    XVisualInfo                vinfo_template; /* template visual information */
+    XVisualInfo                *vinfo;         /* matching visual information */
+    XVisualInfo                *vpointer;      /* for freeing the entire list */
+    long               vinfo_mask;     /* specifies the visual mask value */
+    int                n;              /* number of matching visuals */
+    int                        status;         
+
+    vinfo_template.visualid = colormap->visualid;
+    vinfo_mask = VisualIDMask;
+    if ((vinfo = XGetVisualInfo(dpy, vinfo_mask, &vinfo_template, &n)) == NULL)
+       return 0;
+
+    /* A visual id may be valid on multiple screens.  Also, there may 
+     * be multiple visuals with identical visual ids at different depths.  
+     * If the colormap is the Default Colormap, use the Default Visual.
+     * Otherwise, arbitrarily, use the deepest visual.
+     */
+    vpointer = vinfo;
+    if (n > 1)
+    {
+       register int    i;
+       register int    screen_number;
+       Bool            def_cmap;
+
+       def_cmap = False;
+       for (screen_number = ScreenCount(dpy); --screen_number >= 0; )
+           if (colormap->colormap == DefaultColormap(dpy, screen_number)) {
+               def_cmap = True;
+               break;
+           }
+
+       if (def_cmap) {
+           for (i=0; i < n; i++, vinfo++) {
+               if (vinfo->visual == DefaultVisual(dpy, screen_number))
+                       break;
+           }
+       } else {
+           int                 maxdepth = 0;
+           XVisualInfo         *v = NULL;
+
+           for (i=0; i < n; i++, vinfo++)
+               if (vinfo->depth > maxdepth) {
+                   maxdepth = vinfo->depth;
+                   v = vinfo;
+               }
+           vinfo = v;
+       }
+    }
+
+    if (vinfo->c_class == PseudoColor || vinfo->c_class == DirectColor ||
+       vinfo->c_class == GrayScale)
+       status = readwrite_map(dpy, vinfo, colormap);
+    else if (vinfo->c_class == TrueColor)
+       status = TRUEMATCH(red_mult, red_max, red_mask) &&
+                TRUEMATCH(green_mult, green_max, green_mask) &&
+                TRUEMATCH(blue_mult, blue_max, blue_mask);
+    else 
+       status = readonly_map(dpy, vinfo, colormap);
+    
+    XFree((char *) vpointer);
+    return status;
+}
+
+/****************************************************************************/
+static Status
+readwrite_map(Display *dpy, XVisualInfo *vinfo, XStandardColormap *colormap)
+{
+    register unsigned long i, n;       /* index counters */
+    unsigned long      ncolors;        /* number of colors to be defined */
+    int                        npixels;        /* number of pixels allocated R/W */
+    int                        first_index;    /* first index of pixels to use */
+    int                        remainder;      /* first index of remainder */
+    XColor             color;          /* the definition of a color */
+    unsigned long      *pixels;        /* array of colormap pixels */
+    unsigned long      delta;
+
+    
+    /* Determine ncolors, the number of colors to be defined.
+     * Insure that 1 < ncolors <= the colormap size.
+     */
+    if (vinfo->c_class == DirectColor) {
+       ncolors = colormap->red_max;
+       if (colormap->green_max > ncolors)
+           ncolors = colormap->green_max;
+       if (colormap->blue_max > ncolors)
+           ncolors = colormap->blue_max;
+       ncolors++;
+       delta = lowbit(vinfo->red_mask) +
+               lowbit(vinfo->green_mask) +
+               lowbit(vinfo->blue_mask);
+    } else {
+       ncolors = colormap->red_max * colormap->red_mult +
+                 colormap->green_max * colormap->green_mult +
+                 colormap->blue_max * colormap->blue_mult + 1;
+       delta = 1;
+    }
+    if (ncolors <= 1 || (int) ncolors > vinfo->colormap_size)  return 0;
+
+    /* Allocate Read/Write as much of the colormap as we can possibly get.
+     * Then insure that the pixels we were allocated are given in 
+     * monotonically increasing order, using a quicksort.  Next, insure
+     * that our allocation includes a subset of contiguous pixels at least
+     * as long as the number of colors to be defined.  Now we know that 
+     * these conditions are met:
+     * 1) There are no free cells in the colormap.
+     *  2) We have a contiguous sequence of pixels, monotonically 
+     *     increasing, of length >= the number of colors requested.
+     *
+     * One cell at a time, we will free, compute the next color value, 
+     * then allocate read only.  This takes a long time.
+     * This is done to insure that cells are allocated read only in the
+     * contiguous order which we prefer.  If the server has a choice of
+     * cells to grant to an allocation request, the server may give us any
+     * cell, so that is why we do these slow gymnastics.
+     */
+
+    if ((pixels = (unsigned long *) calloc((unsigned) vinfo->colormap_size,
+                                     sizeof(unsigned long))) == NULL)
+       return 0;
+
+    if ((npixels = ROmap(dpy, colormap->colormap, pixels,
+                          vinfo->colormap_size, ncolors)) == 0) {
+       free((char *) pixels);
+       return 0;
+    }
+
+    qsort((char *) pixels, npixels, sizeof(unsigned long), compare);
+
+    if (!contiguous(pixels, npixels, ncolors, delta, &first_index, &remainder))
+    {
+       /* can't find enough contiguous cells, give up */
+       XFreeColors(dpy, colormap->colormap, pixels, npixels,
+                   (unsigned long) 0);
+       free((char *) pixels);
+       return 0;
+    }
+    colormap->base_pixel = pixels[first_index];
+
+    /* construct a gray map */
+    if (colormap->red_mult == 1 && colormap->green_mult == 1 &&
+       colormap->blue_mult == 1)
+       for (n=colormap->base_pixel, i=0; i < ncolors; i++, n += delta)
+       {
+           color.pixel = n;
+           color.blue = color.green = color.red =
+               (unsigned short) ((i * 65535) / (colormap->red_max +
+                                                colormap->green_max +
+                                                colormap->blue_max));
+
+           if (! ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color,
+                            first_index + i))
+               return 0;
+       }
+
+    /* construct a red ramp map */
+    else if (colormap->green_max == 0 && colormap->blue_max == 0)
+       for (n=colormap->base_pixel, i=0; i < ncolors; i++, n += delta)
+       {
+           color.pixel = n;
+           color.red = (unsigned short) ((i * 65535) / colormap->red_max);
+           color.green = color.blue = 0;
+
+           if (! ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color,
+                            first_index + i))
+               return 0;
+       }
+
+    /* construct a green ramp map */
+    else if (colormap->red_max == 0 && colormap->blue_max == 0)
+       for (n=colormap->base_pixel, i=0; i < ncolors; i++, n += delta)
+       {
+           color.pixel = n;
+           color.green = (unsigned short) ((i * 65535) / colormap->green_max);
+           color.red = color.blue = 0;
+
+           if (! ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color,
+                            first_index + i))
+               return 0;
+       }
+
+    /* construct a blue ramp map */
+    else if (colormap->red_max == 0 && colormap->green_max == 0)
+       for (n=colormap->base_pixel, i=0; i < ncolors; i++, n += delta)
+       {
+           color.pixel = n;
+           color.blue = (unsigned short) ((i * 65535) / colormap->blue_max);
+           color.red = color.green = 0;
+
+           if (! ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color,
+                            first_index + i))
+               return 0;
+       }
+
+    /* construct a standard red green blue cube map */
+    else
+    {
+#define calc(max,mult) (((n / colormap->mult) % \
+                        (colormap->max + 1)) * 65535) / colormap->max
+
+       for (n=0, i=0; i < ncolors; i++, n += delta)
+       {
+           color.pixel = n + colormap->base_pixel;
+           color.red = calc(red_max, red_mult);
+           color.green = calc(green_max, green_mult);
+           color.blue = calc(blue_max, blue_mult);
+           if (! ROorRWcell(dpy, colormap->colormap, pixels, npixels, &color,
+                            first_index + i))
+               return 0;
+       }
+#undef calc
+    }
+    /* We have a read-only map defined.  Now free unused cells,
+     * first those occuring before the contiguous sequence begins,
+     * then any following the contiguous sequence.
+     */
+
+    if (first_index)
+       XFreeColors(dpy, colormap->colormap, pixels, first_index, 
+                   (unsigned long) 0);
+    if (remainder)
+       XFreeColors(dpy, colormap->colormap,
+                   &(pixels[first_index + ncolors]), remainder,
+                   (unsigned long) 0);
+
+    free((char *) pixels);
+    return 1;
+}
+
+
+/****************************************************************************/
+static int
+ROmap(Display *dpy, Colormap cmap, unsigned long pixels[], int m, int n)
+     /*
+      * dpy    - the X server connection
+      * cmap   - specifies colormap ID
+      * pixels - returns pixel allocations
+      * m      - specifies colormap size
+      * n      - specifies number of colors
+      */
+{
+    register int       p;
+
+    /* first try to allocate the entire colormap */
+    if (XAllocColorCells(dpy, cmap, 1, (unsigned long *) NULL, 
+                        (unsigned) 0, pixels, (unsigned) m))
+       return m;
+
+    /* Allocate all available cells in the colormap, using a binary
+     * algorithm to discover how many cells we can allocate in the colormap.
+     */
+    m--;
+    while (n <= m) {
+       p = n + ((m - n + 1) / 2);
+       if (XAllocColorCells(dpy, cmap, 1, (unsigned long *) NULL,
+                            (unsigned) 0, pixels, (unsigned) p)) {
+           if (p == m)
+               return p;
+           else {
+               XFreeColors(dpy, cmap, pixels, p, (unsigned long) 0);
+               n = p;
+           }
+       }
+       else
+           m = p - 1;
+    }
+    return 0;
+}
+      
+
+/****************************************************************************/
+static Status
+contiguous(unsigned long pixels[], int npixels, int ncolors,
+          unsigned long delta, int *first, int *rem)
+     /* pixels - specifies allocated pixels
+      * npixels        - specifies count of alloc'd pixels
+      * ncolors - specifies needed sequence length
+      * delta  - between pixels
+      * first  - returns first index of sequence
+      * rem    - returns first index after sequence, or 0, if none follow
+      */
+{
+    register int i = 1;                /* walking index into the pixel array */
+    register int count = 1;    /* length of sequence discovered so far */
+
+    *first = 0;
+    if (npixels == ncolors) {
+       *rem = 0;
+       return 1;
+    }
+    *rem = npixels - 1;
+    while (count < ncolors && ncolors - count <= *rem)
+    {
+       if (pixels[i-1] + delta == pixels[i])
+           count++;
+       else {
+           count = 1;
+           *first = i;
+       }
+       i++;
+       (*rem)--;
+    }
+    if (count != ncolors)
+       return 0;
+    return 1;
+}
+
+
+/****************************************************************************/
+static Status
+ROorRWcell(Display *dpy, Colormap cmap, unsigned long pixels[],
+          int npixels, XColor *color, unsigned long p)
+{
+    unsigned long      pixel;
+    XColor             request;
+
+    /* Free the read/write allocation of one cell in the colormap.
+     * Request a read only allocation of one cell in the colormap.
+     * If the read only allocation cannot be granted, give up, because
+     * there must be no free cells in the colormap.
+     * If the read only allocation is granted, but gives us a cell which
+     * is not the one that we just freed, it is probably the case that
+     * we are trying allocate White or Black or some other color which
+     * already has a read-only allocation in the map.  So we try to 
+     * allocate the previously freed cell with a read/write allocation,
+     * because we want contiguous cells for image processing algorithms.
+     */
+     
+    pixel = color->pixel;
+    request.red = color->red;
+    request.green = color->green;
+    request.blue = color->blue;
+
+    XFreeColors(dpy, cmap, &pixel, 1, (unsigned long) 0);
+    if (! XAllocColor(dpy, cmap, color) 
+       || (color->pixel != pixel &&
+           (!RWcell(dpy, cmap, color, &request, &pixel)))) 
+    {
+       free_cells(dpy, cmap, pixels, npixels, (int)p);
+       return 0;
+    }
+    return 1;
+}
+
+
+/****************************************************************************/
+static void
+free_cells(Display *dpy, Colormap cmap, unsigned long pixels[],
+          int npixels, int p)
+     /*
+      * pixels - to be freed
+      *        npixels - original number allocated
+      */
+{
+    /* One of the npixels allocated has already been freed.
+     * p is the index of the freed pixel.
+     * First free the pixels preceeding p, and there are p of them;
+     * then free the pixels following p, there are npixels - p - 1 of them.
+     */
+    XFreeColors(dpy, cmap, pixels, p, (unsigned long) 0);
+    XFreeColors(dpy, cmap, &(pixels[p+1]), npixels - p - 1, (unsigned long) 0);
+    free((char *) pixels);
+}
+
+
+/****************************************************************************/
+static Status
+RWcell(Display *dpy, Colormap cmap, XColor *color, XColor *request,
+       unsigned long *pixel)
+{
+    unsigned long      n = *pixel;
+
+    XFreeColors(dpy, cmap, &(color->pixel), 1, (unsigned long)0);
+    if (! XAllocColorCells(dpy, cmap, (Bool) 0, (unsigned long *) NULL,
+                          (unsigned) 0, pixel, (unsigned) 1))
+       return 0;
+    if (*pixel != n)
+    {
+       XFreeColors(dpy, cmap, pixel, 1, (unsigned long) 0);
+       return 0;
+    }
+    color->pixel = *pixel;
+    color->flags = DoRed | DoGreen | DoBlue;
+    color->red = request->red;
+    color->green = request->green;
+    color->blue = request->blue;
+    XStoreColors(dpy, cmap, color, 1);
+    return 1;
+}
+
+
+/****************************************************************************/
+static int
+compare(_Xconst void *e1, _Xconst void *e2)
+{
+  return ((int)(*(long *)e1 - *(long *)e2));
+}
+
+
+/****************************************************************************/
+static Status
+readonly_map(Display *dpy, XVisualInfo *vinfo, XStandardColormap *colormap)
+{
+    int                        i, last_pixel;
+    XColor             color;
+
+    last_pixel = (colormap->red_max + 1) * (colormap->green_max + 1) * 
+       (colormap->blue_max + 1) + colormap->base_pixel - 1;
+
+    for(i=colormap->base_pixel; i <= last_pixel; i++) {
+
+       color.pixel = (unsigned long) i;
+       color.red = (unsigned short)
+           (((i/colormap->red_mult) * 65535) / colormap->red_max);
+
+       if (vinfo->c_class == StaticColor) {
+           color.green = (unsigned short)
+               ((((i/colormap->green_mult) % (colormap->green_max + 1)) *
+                 65535) / colormap->green_max);
+           color.blue = (unsigned short)
+               (((i%colormap->green_mult) * 65535) / colormap->blue_max);
+       }
+       else    /* vinfo->c_class == GrayScale, old style allocation XXX */
+           color.green = color.blue = color.red;
+
+       XAllocColor(dpy, colormap->colormap, &color);
+       if (color.pixel != (unsigned long) i)
+           return 0;
+    }
+    return 1;
+}
+
+
+/* $Xorg: DelCmap.c,v 1.4 2001/02/09 02:03:52 xorgcvs Exp $ */
+
+/* 
+Copyright 1989, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+/* $XFree86: xc/lib/Xmu/DelCmap.c,v 1.7 2001/12/14 19:55:40 dawes Exp $ */
+
+/*
+ * Author:  Donna Converse, MIT X Consortium
+ */
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xmu/StdCmap.h>
+
+/* To remove any standard colormap property, use XmuDeleteStandardColormap().
+ * XmuDeleteStandardColormap() will remove the specified property from the
+ * specified screen, releasing any resources used by the colormap(s) of the
+ * property if possible.
+ */
+
+void
+XmuDeleteStandardColormap(Display *dpy, int screen, Atom property)
+     /* dpy;           - specifies the X server to connect to
+      * screen         - specifies the screen of the display
+      * property       - specifies the standard colormap property
+      */
+{
+    XStandardColormap  *stdcmaps, *s;
+    int                        count = 0;
+
+    if (XGetRGBColormaps(dpy, RootWindow(dpy, screen), &stdcmaps, &count,
+                        property))
+    {
+       for (s=stdcmaps; count > 0; count--, s++) {
+           if ((s->killid == ReleaseByFreeingColormap) &&
+               (s->colormap != None) &&
+               (s->colormap != DefaultColormap(dpy, screen)))
+               XFreeColormap(dpy, s->colormap);
+           else if (s->killid != None)
+               XKillClient(dpy, s->killid);
+       }
+       XDeleteProperty(dpy, RootWindow(dpy, screen), property);
+       XFree((char *) stdcmaps);
+       XSync(dpy, False);
+    }
+}
+
diff --git a/src/org/xwt/plat/POSIX.java b/src/org/xwt/plat/POSIX.java
new file mode 100644 (file)
index 0000000..f331f9a
--- /dev/null
@@ -0,0 +1,320 @@
+// Copyright 2002 Adam Megacz, see the COPYING file for licensing [LGPL]
+package org.xwt.plat;
+
+// FIXME: protected void _newBrowserWindow(String url)
+// FIXME: When should I use RootWindow versus DefaultRootWindow?
+// FIXME: Solaris: xwt.altKeyName -> "Meta"
+// FIXME: minimize/taskbar icon
+// FIXME: 15bpp? can't assume depth/8 == bytespp
+// FIXME: check for x resource / memory leaks
+// FIXME: WM_HINTS flags: icon pixmap, icon window [[ have to wait until we have gnome/kde wm's installed ]]
+// FIXME: code-review POSIX.cc
+
+import java.awt.*;
+import java.awt.image.*;
+import gnu.gcj.RawData;
+import java.net.*;
+import java.lang.reflect.*;
+import java.io.*;
+import java.util.*;
+import java.awt.peer.*;
+import org.xwt.util.*;
+import org.xwt.*;
+
+/** Platform implementation for POSIX compliant operating systems with an X11 Server */
+public class POSIX extends GCJ {
+
+    // Static Data ///////////////////////////////////////////////////////////
+
+    /**
+     *  When the user reads from the clipboard, the main thread blocks
+     *  on this semaphore until we get an X11 SelectionNotify. Crude,
+     *  but effective. We know that only one thread will ever block on
+     *  this, since only one thread can ever be running JavaScript.
+     */
+    public static Semaphore waiting_for_selection_event = new Semaphore();
+
+    /** our local (in-process) copy of the clipboard */
+    public static String clipboard = null;
+
+    /** map from Window's (casted to jlong, wrapped in java.lang.Long) to X11Surface objects */
+    public static Hashtable windowToSurfaceMap = new Hashtable();
+
+
+    // General Methods ///////////////////////////////////////////////////////
+
+    protected String[] _listFonts() { return fontList; }
+    protected String getDescriptiveName() { return "GCJ Linux Binary"; }
+    protected Picture _createPicture(int[] data, int w, int h) { return new POSIX.X11Picture(data, w, h); }
+    protected DoubleBuffer _createDoubleBuffer(int w, int h, Surface owner) { return new POSIX.X11DoubleBuffer(w, h); }
+    protected Surface _createSurface(Box b, boolean framed) { return new X11Surface(b, framed); }
+    protected boolean _needsAutoClick() { return true; }
+    protected native int _getScreenWidth();
+    protected native int _getScreenHeight();
+    protected native String _getClipBoard();
+    protected native void _setClipBoard(String s);
+    protected native int _stringWidth(String font, String text);
+    protected native int _getMaxAscent(String font);
+    protected native int _getMaxDescent(String font);
+    protected boolean _needsAutoDoubleClick() { return true; }
+    protected native void eventThread();
+    private native void natInit();
+
+    public POSIX() { }
+    public void init() {
+        natInit();
+        (new Thread() { public void run() { eventThread(); } }).start();
+        initFonts();
+    }
+
+    // X11Surface /////////////////////////////////////////////////////
+
+    /** Implements a Surface as an X11 Window */
+    public static class X11Surface extends Surface {
+        
+        gnu.gcj.RawData window;
+        gnu.gcj.RawData gc;
+        boolean framed = false;
+        Semaphore waitForCreation = new Semaphore();
+        
+        public void setIcon(Picture p) { /* FIXME */ }
+        public void setInvisible(boolean i) { /* FIXME */ }
+        public void _setMaximized(boolean m) { if (Log.on) Log.log(this, "POSIX/X11 can't maximize windows"); }
+        public native void _setMinimized(boolean b);
+        public native void setTitleBarText(String s);
+        public native void setSize(int w, int h);
+        public native void setLocation(int x, int y);
+        public native void natInit();
+        public native void toFront();
+        public native void toBack();
+        public native void syncCursor();
+        public native void _dispose();
+        public native void setLimits(int minw, int minh, int maxw, int maxh);
+        public native void blit(DoubleBuffer s, int sx, int sy, int dx, int dy, int dx2, int dy2);
+        public native void dispatchEvent(gnu.gcj.RawData ev);
+
+        public X11Surface(Box root, boolean framed) {
+            super(root);
+            this.framed = framed;
+            natInit();
+        }        
+    
+    }
+
+
+    // Our Subclass of Picture ///////////////////////////////////////////////
+
+    // FIXME: what if display server runs out of pixmap space? Think resource conservation...
+
+    /** Implements a Picture as an X11 Pixmap */
+    public static class X11Picture implements Picture {
+        
+        int width;
+        int height;
+        int[] data = null;
+        public X11DoubleBuffer doublebuf = null;
+
+        public int getWidth() { return width; }
+        public int getHeight() { return height; }
+
+        public X11Picture(int[] data, int w, int h) {
+            this.data = data;
+            this.width = w;
+            this.height = h;
+
+            // if we have any non-0x00, non-0xFF alphas, we can't double buffer ourselves
+            for(int i=0; i<w*h; i++)
+                if ((data[i] & 0xFF000000) != 0xFF000000 && (data[i] & 0xFF000000) != 0x00)
+                    return;
+
+            X11DoubleBuffer b = new X11DoubleBuffer(w, h);
+            b.drawPicture(this, 0, 0);
+            b.createStipple(this);
+            doublebuf = b;
+        }
+
+    }
+
+    // FIXME: finalizer to free X resources
+    public static class X11DoubleBuffer implements DoubleBuffer {
+
+        int clipx, clipy, clipw, cliph;
+        int width;
+        int height;
+
+        /** DoubleBuffers of X11Pictures can have stipples -- the stipple of the Picture */
+        RawData stipple = null;
+
+        /** Sets the DoubleBuffer's internal stipple to the alpha==0x00 regions of xpi */
+        public native void createStipple(X11Picture xpi);
+
+        static int old_shmsize = 0;
+        static RawData shm_ximage;
+        static int shmsegs = 0;
+        int force_slowpath = 0;
+        RawData mxi = null;
+        int shared_pixmap = 0;
+
+        boolean usePixmap = false;
+        
+        /** Pixmap (if any) representing this Picture */
+        RawData pm;
+
+        /** Graphics Context on pm (never changes, so it's fast) */
+        RawData gc;
+
+        /** Graphics Context on pm, use this one if you need a clip/stipple */
+        RawData clipped_gc;
+
+        /** DoubleBuffer mode */
+        public X11DoubleBuffer(int w, int h) {
+            width = clipw = w;
+            height = cliph = h;
+            clipx = clipy = 0;
+            shared_pixmap = 1;
+            natInit();
+        }
+
+        public void setClip(int x, int y, int x2, int y2) {
+            clipx = x; if (clipx < 0) clipx = 0;
+            clipy = y; if (clipy < 0) clipy = 0;
+            clipw = x2 - x; if (clipw < 0) clipw = 0;
+            cliph = y2 - y; if (cliph < 0) cliph = 0;
+        }
+        
+        public void drawPicture(Picture source, int x, int y) {
+            drawPicture(source, x, y, x + source.getWidth(), y + source.getHeight(), 0, 0, source.getWidth(), source.getHeight());
+        }
+
+        public int getWidth() { return width; }
+        public int getHeight() { return height; }
+        public native void natInit();
+        public native void drawPicture(Picture source, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2);
+        public native void fillRect(int x, int y, int x2, int y2, int color);
+        public native void drawString(String font, String text, int x, int y, int color);
+
+    }
+
+
+    // Font Handling ////////////////////////////////////////////////////////////////////
+
+    static String[] fontList = null;
+
+    /** hashtable of all built in X11 fonts; key is XWT font spec, value is X11 font string */
+    static Hashtable nativeFontList = new Hashtable();
+
+    /** cache of all already-looked-up X11 fonts; key is XWT font name, value is a WrappedRawData */
+    static Hashtable xwtFontToFontStruct = new Hashtable();
+
+    /** dumps a list of X11 font strings */
+    private native String[] listNativeFonts();
+
+    /** load native font list */
+    public void initFonts() {
+        // use the font list to build nativeFontList
+        String[] fonts = listNativeFonts();
+        for(int k=0; k<fonts.length; k++) {
+            String s = fonts[k].toLowerCase();
+            StringTokenizer st = new StringTokenizer(s, "-", false);
+            String[] font = new String[st.countTokens()];
+            
+            try {
+                for(int i=0; st.hasMoreTokens(); i++) font[i] = st.nextToken();
+                String name = font[1];
+                String size = font[6];
+                String slant = font[3].equals("i") ? "i" : "";
+                String bold = font[2].equals("bold") ? "b" : "";
+                String tail = s.substring(1 + font[0].length() + 1 + font[1].length() + 1 + font[2].length() + 1 +
+                                          font[3].length() + 1 + font[4].length() + 1);
+                
+                if (bold.equals("*") && slant.equals("*")) {
+                    nativeFontList.put(name + size, font[0] + "-" + font[1] + "-regular-r-" + font[4] + "-" + tail);
+                    nativeFontList.put(name + size + "b", font[0] + "-" + font[1] + "-bold-r-" + font[4] + "-" + tail);
+                    nativeFontList.put(name + size + "i", font[0] + "-" + font[1] + "-regular-i-" + font[4] + "-" + tail);
+                    nativeFontList.put(name + size + "bi", font[0] + "-" + font[1] + "-bold-i-" + font[4] + "-" + tail);
+                    
+                } else if (bold.equals("*")) {
+                    nativeFontList.put(name + size + slant, font[0] + "-" + font[1] + "-regular-" + font[3] + "-" + font[4] + "-" + tail);
+                    nativeFontList.put(name + size + "b" + slant, font[0] + "-" + font[1] + "-bold-" + font[3] + "-" + font[4] + "-" + tail);
+                    
+                } else if (slant.equals("*")) {
+                    nativeFontList.put(name + size + bold, font[0] + "-" + font[1] + "-" + font[2] + "-r-" + font[4] + "-" + tail);
+                    nativeFontList.put(name + size + bold + "i", font[0] + "-" + font[1] + "-" + font[2] + "-i-" + font[4] + "-" + tail);
+                    
+                } else {
+                    nativeFontList.put(name + size + bold + slant, s);
+                    
+                }
+            } catch (ArrayIndexOutOfBoundsException e) {
+                if (Log.on) Log.log(this, "skipping incomplete font string " + s);
+                continue;
+            }
+        }
+        fontList = new String[nativeFontList.size()];
+        Enumeration e = nativeFontList.keys();
+        for(int i=0; e.hasMoreElements(); i++) fontList[i] = (String)e.nextElement();
+    }
+
+    /** so we can put XFontStruct's into Hashtables */
+    private static class WrappedRawData {
+        public RawData wrapee = null;
+        public WrappedRawData(RawData r) { wrapee = r; }
+    }
+
+    /** translates an X11 font string into an XFontStruct* */
+    public static native gnu.gcj.RawData fontStringToStruct(String s);
+
+    /** translates an XWT font string into an XFontStruct*, performing caching as well */
+    public static RawData fontToXFont(String s) {
+        if (s == null) s = "sansserif";
+        s = s.toLowerCase();
+        
+        WrappedRawData wrap = (WrappedRawData)xwtFontToFontStruct.get(s);
+        if (wrap != null) return wrap.wrapee;
+
+        String bestmatch = "";
+        int metric = -1 * Integer.MAX_VALUE;
+        ParsedFont arg = new ParsedFont(s);
+        ParsedFont pf = new ParsedFont();
+
+        if (arg.size == -1) arg.size = 10;
+        Enumeration e = nativeFontList.keys();
+        while(e.hasMoreElements()) {
+            String jfont = (String)e.nextElement();
+            pf.parse(jfont);
+            int thismetric = 0;
+            if (!pf.name.equals(arg.name)) {
+                if (pf.name.equals("lucidabright") && arg.name.equals("serif")) thismetric -= 1000;
+                else if (pf.name.equals("times") && arg.name.equals("serif")) thismetric -= 2000;
+                else if (pf.name.equals("helvetica") && arg.name.equals("sansserif")) thismetric -= 1000;
+                else if (pf.name.equals("courier") && arg.name.equals("monospaced")) thismetric -= 1000;
+                else if (pf.name.equals("lucida") && arg.name.equals("dialog")) thismetric -= 1000;
+                else if (pf.name.equals("helvetica") && arg.name.equals("dialog")) thismetric -= 2000;
+                else if (pf.name.equals("fixed") && arg.name.equals("tty")) thismetric -= 1000;
+                else if (pf.name.equals("sansserif")) thismetric -= 4000;
+                else thismetric -= 4004;
+            }
+            if (pf.size != 0) thismetric -= Math.abs(pf.size - arg.size) * 4;
+            if (pf.bold != arg.bold) thismetric -= 1;
+            if (pf.italic != arg.italic) thismetric -= 1;
+            if (thismetric > metric) {
+                metric = thismetric;
+                bestmatch = jfont;
+            }
+        }
+        
+        pf.parse(bestmatch);
+        String target = (String)nativeFontList.get(bestmatch);
+        if (pf.size == 0) {
+            int i = 0;
+            for(int j=0; j<6; j++) i = target.indexOf('-', i + 1);
+            target = target.substring(0, i + 1) + arg.size + target.substring(target.indexOf('-', i+1));
+        }
+        RawData ret = fontStringToStruct(target);
+        if (ret == null) ret = fontStringToStruct("fixed");
+        xwtFontToFontStruct.put(s, new WrappedRawData(ret));
+        return ret;
+    }
+
+
+}
index 3bb342e..e03526c 100644 (file)
@@ -25,6 +25,7 @@
 #include <org/xwt/Surface.h>
 #include <org/xwt/DoubleBuffer.h>
 #include <org/xwt/Picture.h>
+#include <org/xwt/ByteStream.h>
 #include <org/xwt/Platform.h>
 #include <org/xwt/Platform$ParsedFont.h>
 #include <org/xwt/plat/Win32.h>
@@ -32,6 +33,7 @@
 #include <org/xwt/plat/Win32$Win32Surface.h>
 #include <org/xwt/plat/Win32$Win32DoubleBuffer.h>
 #include <org/xwt/plat/Win32$Win32Picture.h>
+#include <org/xwt/util/Log.h>
 #include <org/xwt/util/Semaphore.h>
 
 // for debugging
@@ -237,6 +239,29 @@ void org::xwt::plat::Win32::natInit() {
 
 // Platform Methods ///////////////////////////////////////////////////////////////////
 
+jstring org::xwt::plat::Win32::_fileDialog(jstring suggestedFileName, jboolean write) {
+
+    char buf[1024];
+    OPENFILENAME ofn;
+    memset(buf, 0, 1024);
+    memset(&ofn, 0, sizeof(OPENFILENAME));
+
+    if (suggestedFileName != NULL)
+        JvGetStringUTFRegion(suggestedFileName, 0, min(1023, JvGetStringUTFLength(suggestedFileName)), buf);
+    
+    ofn.lStructSize = sizeof(OPENFILENAME);
+    ofn.nMaxCustFilter = 0;
+    ofn.lpstrFile = buf;
+    ofn.nMaxFile = 1024;
+
+    if (write) ofn.Flags |= OFN_OVERWRITEPROMPT;
+    ofn.Flags |= OFN_NOCHANGEDIR;
+    ofn.Flags |= OFN_HIDEREADONLY;
+
+    int ret = write ? GetSaveFileName(&ofn) : GetOpenFileName(&ofn);
+    return ret == 0 ? NULL : JvNewStringLatin1(buf);
+}
+
 void org::xwt::plat::Win32::__detectProxy(JArray<jstring>* container) {
 
     HKEY hkey;
index c03ba52..fd237ec 100644 (file)
@@ -39,6 +39,8 @@ public class Win32 extends GCJ {
     public static native String getTempPath();
     public static native void natInit();
 
+    protected native String _fileDialog(String suggestedFileName, boolean write);
+
     public Win32() { }
 
     public void init() {
@@ -116,6 +118,7 @@ public class Win32 extends GCJ {
     protected native void _criticalAbort(String message);
     protected native String _getClipBoard();
     protected native void _setClipBoard(String s);
+    protected boolean _isCaseSensitive() { return false; }
 
     private native void __detectProxy(String[] container);
 
index 7b56736..4bc32a4 100644 (file)
@@ -4,7 +4,7 @@
 
     <target name="build">
         <property name="gcc-target" value="i686-pc-mingw32-"/>
-        <property name="linkflags" value="-Wl,--subsystem,windows"/>
+        <property name="linkflags" value="-Wl,--subsystem,windows -lcomdlg32"/>
         <property name="binaryname" value="xwt.exe"/>
         <property name="subplat" value="Win32"/>
         <ant target="build" antfile="src/org/xwt/plat/GCJ.xml"/>
index 81f89e1..71fb1ed 100644 (file)
@@ -1,12 +1,15 @@
 // Copyright 2002 Adam Megacz, see the COPYING file for licensing [LGPL]
 package org.xwt.util;
 import java.io.*;
+import java.util.*;
 
 /** easy to use logger */
 public class Log {
 
     public static boolean on = true;
     public static boolean verbose = false;
+    public static boolean logDates = false;
+    public static Date lastDate = null;
 
     /** true iff nothing has yet been logged */
     public static boolean firstMessage = true;
@@ -14,7 +17,7 @@ public class Log {
     /** message can be a String or a Throwable */
     public static synchronized void log(Object o, Object message) {
 
-        if (firstMessage) {
+        if (firstMessage && !logDates) {
             firstMessage = false;
             System.err.println("===========================================================================");
             log(Log.class, "Logging enabled at " + new java.util.Date());
@@ -26,10 +29,22 @@ public class Log {
         else classname = o.getClass().getName();
         
         if (classname.indexOf('.') != -1) classname = classname.substring(classname.lastIndexOf('.') + 1);
-        if (classname.length() > 20) classname = classname.substring(0, 20);
-        while (classname.length() < 20) classname = " " + classname;
+        if (classname.length() > (logDates ? 14 : 20)) classname = classname.substring(0, (logDates ? 14 : 20));
+        while (classname.length() < (logDates ? 14 : 20)) classname = " " + classname;
         classname = classname + ": ";
 
+        if (logDates) {
+            Date d = new Date();
+            if (lastDate == null || d.getYear() != lastDate.getYear() || d.getMonth() != lastDate.getMonth() || d.getDay() != lastDate.getDay()) {
+                String now = new java.text.SimpleDateFormat("EEE dd MMM yyyy").format(d);
+                System.err.println();
+                System.err.println("=== " + now + " ==========================================================");
+            }
+            java.text.DateFormat df = new java.text.SimpleDateFormat("[EEE HH:mm:ss] ");
+            classname = df.format(d) + classname;
+            lastDate = d;
+        }
+
         if (!(message instanceof Throwable)) System.err.println(classname + message);
         else {
             ByteArrayOutputStream baos = new ByteArrayOutputStream();