["..E$ ","A'fCB.a+C~|F549584}#BCP54988}+P549884}aCP8XB","TryGetValue."," This method optimizes Dictionary usage. It gets a value (at a key) from a Dictionary. And it eliminates unneeded lookups, making programs better.","Some notes."," With TryGetValue, we can combine the \"try\" part of seeing if a key exists, and the \"get\" part of getting the existing value. This saves 1 lookup.","TryGetValue, example."," We can rewrite programs that use ContainsKey with TryGetValue. By combining two operations (try and get) into 1, we can optimize and simplify programs. ","Important: ","Every lookup has to compute the hash code, which has a performance penalty. The TryGetValue method can help here.","Value: ","Look carefully at \"value\" in this program. It is accessed by TryGetValue, and we do not need to get it again when we use it."," .NET 4.7 (2017)\n\n","C# program that uses TryGetValue","\n\nusing System;\nusing System.Collections.Generic;\n\nclass Program\n{\n static void Main()\n {\n ","var"," counts = new Dictionary<string, int>();\n counts.Add(","\"key\"",", 0);","\n // Keep the result of TryGetValue.\n ","int value;\n if (counts.","TryGetValue","(","\"key\"",", out value))\n {\n counts[","\"key\"","] = value + 1;\n Console.WriteLine(","\"VALUE: \""," + counts[","\"key\"","]);\n }\n }\n}\n\n","\n\nVALUE: 1","ContainsKey."," This example shows an increment on a Dictionary key. Two lookups are done when this occurs\u2014one to get the value, and another to change it. ","ContainsKey ","containskey","This is inefficient. Unlike the version with TryGetValue, we do an extra lookup to get \"value\" again.","C# program that uses ContainsKey","\n\nusing System;\nusing System.Collections.Generic;\n\nclass Program\n{\n static void Main()\n {\n ","var"," counts = new Dictionary<string, int>();\n counts.Add(","\"key\"",", 0);","\n // This causes an unneeded look up.\n ","if (counts.","ContainsKey","(","\"key\"","))\n {\n counts[","\"key\"","]++;\n Console.WriteLine(","\"VALUE: \""," + counts[","\"key\"","]);\n }\n }\n}\n\n","\n\nVALUE: 1","ContainsKey, explanation."," Here the increment does two lookups when we only need one. To increment the value in the Dictionary, we have to get it. ","C# program that shows what ContainsKey does","\n\nusing System;\nusing System.Collections.Generic;\n\nclass Program\n{\n static void Main()\n {\n ","var"," counts = new Dictionary<string, int>();\n counts.Add(","\"key\"",", 0);","\n // This causes extra lookups.\n ","if (counts.","ContainsKey","(","\"key\"","))\n {\n counts[","\"key\"","] = counts[","\"key\"","] + 1;\n Console.WriteLine(","\"VALUE: \""," + counts[","\"key\"","]);\n }\n }\n}\n\n","\n\nVALUE: 1","Benchmark."," We see how the TryGetValue method performs when used in the way in the above examples. We discover a performance benefit from eliding the last hash lookup. ","Expert developers understand precisely what their code is doing. This is more important than making the code twice as fast.","Benchmark results for TryGetValue","\n\nUse ContainsKey: ","1700 ms","\nUse TryGetValue: ","1108 ms"," [faster]","Summary."," You can rewrite Dictionary code to use TryGetValue instead of ContainsKey. It is good to avoid the increment or decrement operators here. Instead store the value with TryGetValue. ","Dictionary ","dictionary"]

%iVBORw0KG;)NSUhEUg?ALM?ABNCAM?ADaUqWo)GFBMVEX::j++acpJ3N+dO798PBz8Oq9bQ9PT2cwewa?ADN0lEQVR4XtXa4a6CMAwF4J52G+:xjdXS6Y7aMcQwvrXNH6cYIuAvJYuXmrpUZD7FpvNbEaz2Vxm4IGezAzMaMaMZmAqs8iMZjlMhtYMVH3gA2eaRfrNy1oZXqJLW:m8l9Nj/oHnxLKq6p4ydJf6j0Wm0nMZq0fPNEpSLJ+/RnmvNluK7ptUv9kO2hQzGeYPRg2O5q37hNt32P2M8t+bq6W0Iza5WiwuAKLm+UEM5HZzEE/0fY15qfZTjDr0m3OdaQ80eVLzNmb8XvzC1nV3maIwM17rn1z8ztNwXyW/fO5KuqkltUs5nODg3bzKmJSdjN+v1N4twibqY+C5qPy0ZKCPYhhs6KSX83rTuGQFjj6Y8zGMbMZ6Ed/JDfmUs002LeCRo3ZKObjZiYbJDTXlDxo2wSpm/HdjFGzSiWHZtSgHU1ZBLNQm++13ebaahj6C5pAnjoKLTZbt3mAzOMO9qitfeIxIzjoQTNWs+xt5f/6mWIOzTZgzhRzf9BwNHE85oTQbONm6uzrbb4005LsMaf9ZvQfLe8VnzdtzG5GaLZxc2cnj7u3TQSKucecRszUOXZXhQcdbmLmX2E1NzEXCc02bK6pDAfdu0/YnE43c9AijuaYTzcXMne1a7BPbmDmcRfsk5POZ7o02Nffv0/YjEvMHFawT25kRhM0Vg;5huYKa1gn4TXG5eYedyJ0NruN9slZh53uRlf1mvGJWYO+jVmH5xyMzMfNsfcb8Y1Zt4r2gSAcPFXM6408z0/hZvlXLPvgDJgVr7nhzhmQWPGkDmNmdGaKeYgr4vNHHT/XlMK+@zbmOGxxyZCX2dWTZjtj2HmlmNHnMi89DJYRRz36FqBmAGSFbV5804s1IsMJcxs7zHDI85qrzzIRCbE5mHgs47riz1B+YyasZIzCI4aE5HzKJBzAF63FzGzZkGXWfpMXM5YFbeJ/3qcXM5Yg7WdsTWV7j+V0rFABvQjMd88+L/J2kCstKzwvsXPZOdLOY0RcyY+UVmJ6cZyPQ8/u7Fr8zMk/KSp4gZrytXnWy3DZcrPcgpyQRmeqNxAvMsJ7N+ICfILGZN9a3ROczqIWOW1fcAmwFd4j+yEVzwdc6J/)ABJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AOQ?ABrCAM?ABQb96y)YFBMVEX::9/f729:6+v/z9P7v8P/o6v7s7v/e4P7+/v7W2f7q7P7g4v7m6P7j5P7O0f7l5v67wf61u/7EyP5vb2+rsf6jqf1PT0/S0tKurq6UlJSRmv0nJyeKkv2aof0CAgIxwEfw?AH5klEQVR4AdzZb4+jKhTH8R8gKLV25w9dxXGm7/9drnDSQ7PmZkGNczvfRw3JJH5yENksMlLKglK6rSv8wGTbtlogJOp2TuLHpdqQvnvnalDC4qdUmVC7+I2qNbXEU2eVRUw+wJQJ6Yd19ezzqxASreHfcbkWCNWG1p83GpNESNUPFiGlxQNS43nTXUiDssCyqgtJPGPZY7L6YbdaHJBNYXuZp4pQAryh5R6P/y/czszKdNnPLcyGjWvXhvUJgeJPPb2d7XrisUxVd51mZhnSHGEEtUnZvcxpFKZeQvqIMWLwc5uU8iVWPsr5j4w9YqvC3+a+BQkl5SHGhFyvFHG71jiihPxPOi9wuCPnVivlrDRi062+1Jix/qhOSKxF0tV0ddLQPigyDmM/P3fvenp8QQGVn5ec8+A1S0SKR3lw4hyqS5DAeEslJOCnG9UPsP8jZHWOlRjpsRdIiyGt9RV2QkpdCWxMr0CGeU2jj/N03oM8QE/rcQ972DuSNrWbW4HUTdNc1Obt2syZAiQNbADt2gk8SF53YZS8iZenawFSNaEOG5OzshP5xvTZI9UdY6PZLdaFTUhbjNRNDJuTCtgD6eIuDdFI7V/INbf0KhovOKIlcgDgeVvyKzkOof2Q9Dbpo5ECJh6ffogfDHe3ADduPyRU11w0DkYGjVtalkhAFCAPSVRSZCItqp4pIyCeBSnnjX9WeUgaZdyq4wBYRjpCcwWn6xHR633JQ9JDD0ny+AmZ7uuG9emkYuU3DTKmspB04/EVr4vlrS4dSIE08BoKjUpht1QZsk8U51@uAWS74FUEZLuKUZgr7qMy5OlwsimW6qvSMkHEiMpvtEzsuwlqrFXwpzPRuQh0zNTY9qw8G6i+Q4GlgMGF8+pMiTdds5Ymb5+fryySZEByELSKzb50TkXJ9enc/Rf/0FAxmOQ6utz7hWxXx+fvy9F/9JKd1SM/EWMscD+3Qoj1KbtevqMifS7K0HyB4G8U0TavFDQmoPHnl7fKxoeIRXmrvHnG7KVoMPVjd6P/f2dtJmhLCEVSiLOh8GcjrDfSMj3EqS/PTYZ7E/Epj165VF+1WmqXw0ga63yX0rODcC3C7nXiPxATJ9OCjHxNq/+AuqmOV2vb6cs5eBdgPbx8opvp6X+dG9vy23CUBSG1z5ICCFAwJgbT/v+j1lJzbTJ+AC2IXb8derr/gWEvKP0H/foicpVKBu7+dfxcOhXVX7yhLyl90a4PEvp8918ODAuO03Yt06YcBsd50N7ZYs+lcjZ4Ipvfe7IOhcYqxhvsaiOzqcFKF1JwjVbFLIKPpj;uAC6zLCCuUCEZZQ1U1zanS47uFEcn3vKxTGXfuy7grFMrf+PQj1XrHk0fu06zNFFlJicAYFKQs+C6sjh3+L6mbuT8z6wv7LCOH/sb+Gvy77SaDVkQfcgpd2xbcnkjF0GmlLJCOrbNNUFd218MQS6XEDf0z/K4IFN11CM01Tr8hin3hGRjFlVB9FTY6UC6evl:Jxx43qH5lAzZEU9bXyEJqNCcrbV0ajeA+ZAiL2Lam/rw1OmJDZpgyRkGMMzg3KnakLrG7Rer/yMvYGEZBrCzYXHAZI+Pj5rdr3U+Jxzq1sqoK1iFrsAq5QlG4tMsdBVviVOkF64gqJ8i4ahjXhN9llVx/JQUfKsYmuAsKFERYS7hAoktTnr+33bj+mWywsWpIIm5FnAmAOiwNvf0tCwg3jWJr0zgkglsJJ0jEFboc+TQ8FNWdJ3gXruTy7bpMfSA8RoZCcT+zeDTF5e0Z3z/2+q14jB+SHo/Qskm5RtoK9zEL09h1yJcXxyswXVfR5ef5LVQhad88MhR8+UdC99BGsCVWwQMkFIqv7JwaCfehfhyHDpuR7uKBJTuMHsu6C0MGFdzLj0Oi2Iq9+LZ0x3XrI4eyp9jSNGQOW3GFwan5mEUsEmN4j+1cwFbCxchj0eMJ3JBMjK2YMu8inJp/HZOAJyCfGitsx4TQyvlNXXLAZSZ2FeECnsZHLoUotlXjvDAeJrnWmNU4S/MTPTNeDjPhBrHLGGdNv7MeL0ZiCB1jNeoKxVljiRzwYtqQdITVbExa2fpK1qZh7IRCobf9ildUnKdzapz5vrHcZPeN5JPTj3J5hHtttqnT2Ctu56eM9/zGFL8eE23meRwMPtPYtq1iN1NhsRPTBSvIxHadJQCHwzgMEz6RNrPYTT9lFXZDKOq2SyzAh2EYxrEBqWEUHGObCPYSpqQn7E1SYoxRIGNqnGffJraqkYgtCHspJwIU3xEZEwH6YZjn0f7FyIxNGNdIP46ecC8SfIeYWQDkx8MQ7F+KrGZjBFdNY9LjxYmNsRFk2rWtTdIHYx0zFoRXJ4IPTW7Mfw1WasdC8HOQaRoVNUpYiYesxw8jwfsGq8XUOCnuQqZiPIXvE4vVOFrBXcR57ys8gfZTn+AbRO/L7PD72akQLKDoHe81O9wbT1mPBeT7hB+dHZbve08Qc6PBgsb7lOkenap1XazxDBpbRmHainBe6zOHh6i1hvBcIWcIviBCYXzW4qdT75IWBbEKINE5S0ioc4ngp2tcFv5P97SOIbHIyDSG8OMZ9y+pDOu6yDHpOsL7qNsuYSTUtjb9MeWzJbwRMk3FyGpbcGUTg+2IEF6G5pPCBlJVlSFspWZVZbwMNkYJqEWwHdGM8Na4ELw14Yzw1kiyGu9fiW38ATmf0klBB/jP)AElFTkSuQmCC%iVBORw0KG;)NSUhEUg?AJU?ABqCAM?ACCuOOx)YFBMVEX::/+cj:fD:ObMy8vl5OT/+9fx8fH/+s7W1dTNzMbd3Nz:vb/+978+/vo48f69cjx7Mfr6+v:/z4+Pjx7+bX1cve28fT0cbi38fb2Mfm5NjHxsbe3NHw7dT49NyvOr81?AGaklEQVR4Xu2a6Y6jOhCFq2z2nezpnuX93/J2Jk6O4wNprGEUXSnnXzO4+PBnOQWD5HMRl+Dvx8OdhOlyl51wUA1jMRCR8sd0SnGp3YFU/Gz+HEuEsvEKcPzLbWgghn5LtUuuVEknSHc9mAulvlfYfUNV08AIKkl5siQN6gIXFdJvqBIaGEPVJXTzOc3epId5Kla4iaPCgBq1aTLIAxQyVeLq0cAkoCrDfIqLMeZGnj9glsaYLQskhUxVJqzwD1B9ozpcqUYNkolLqzrCiVPqhhTTAk+zCq+XO5zdXYYD3YUO31M1herHfSXA0llVzaTAagwUEtVIk1nj+CIqsaqDo0qw1KtBtZVJgR9aQeEklTsh.T2EVTbQrXHUnErsVctttMCez0HConq6CnEnQ7LqDBZ1X0rTa8DVdXObKGDBgqZKlB4LXrSkOpXFsQKkmGyarfVD+BmgRooJKoCCn2B+iug2suTGFU9Oay7P21kTmAWK.qq0dMJgTqfjEVdgekGuCPBRZNoJCoGiiEwEqzOKpGsTvctqrtrMBWCiicpJJiuE0m9taz2pDqM0fQ+vDucF85VmYFWrGBQqJq9cNTuHO32oRUCHco2B3gL5NZgbqVQCFTmVu11BcokVTYHdyu3sgTgRIoZCoo9AVGUGF3OGGurDwTKIFCpoLCTqS7CYynMjD4oy+2TwVKoJCpUG7jbqfSQuKpJKtA/VvmBJ4uAkkhU23VKazd7RzVMtXn3k/3TT9XPxdICplKWj05hRBIVKP6MULJSfG8QFbIVPau8Ho7F4HxVAn6OfQgfMLhUF5zOKDNYCpfYX3dAm08laRupzriWiSQAoVEBYWJ+2U2kVR4KOy9loYEUq.qJxCZCgknqq8NVVoaUggBQqZCisPey9T7Y2f7bSe4UJc0YJngayQqSRzpSBQonqG7uZPlR54IBBrHesdCpnK6hkCVaKpUvwoq+rtYhsSWKlmCDpSpoJC7L2RVLnXVLXeA08XCjzrQ7CREhUUYu+NpCrRVNEDDwTyI0mwkRKV65Ox9xIVZ8pf0NLsSGAQK.qX2GlrURQYanj+aHg3YEFskKmQhd2VhtDBTmne1NsvAWfBwKzx0AhU/kKR20iqXJ6fsiwYJJHgYUg3M74VFDoeuNIqoRedTSq+vhzuIEHhNsZUAEbA2OosNTb6Sd8X2AjCLUzTOX6ZAwEVaYz8SAuKRr/gecaUFyOkEB3WP05zB7eYRhVDMTf2VMqMKAyOL3pM3QKTgQFUwlqR1K1KIza6C1wDgRCISaVqGhgDJUJ6uIgnJFAVshUwCgkmor84R7dcRbICueoBMyLqbDUt/yEj39ggayQqaDQMNX/N++8884777zzzjs5ZTd/1m5xHYQ/pEnr8itpmj97tcEp3QA6K11aBykD+PoHkqS7uGpl/i+oOseE1F1UtWSzPlWeMHWSL6FCNutSMRRfh6k4+bpUHaDKr8AKLy7+ToYKRlHx9zb0Rr781WZfsZ8JwMPw+/bxwA7dIVyC8u13EZ1j6HHCkaQwFZ9dr0aFN/IH9XIdVC6iwovPNalSTBW0VB/9fnG1M6Z2NapyBlvtUqrxn1BhrrKv6C1FIxT6TubvqPh7m4CqGjIjl2xtEYAzlWfXZNpHUnEdTupqnnJ6s9MsqtYesdpXo/rEb9/m8e1cZhZR5bfbWpOqrbgrMUVrm4XVNomj6ptoqvnvbbIj90vLq6UlvocxUVSc3KcaKm4Y6nxhNaTXVal0nG7k4qiOuiqVVR2rKa50ERWgVNal0uE4xVUvocIenK1FhRe8Q:BYJuFVMcBv1BRVPy9De2ZOp4DsGSO6uT913o/Dnht/Vc9g5l6G+6mjCZrshrHyqpUYtTPMGIDq5dTtbIylZhCHzKeqEcmKoJanUq27QMXdrClVFbWpAKXfQA7RFG1jcRRLfjeZpen1ydlY+9gPVHNdmsW1VbrGTZl4u9MjW19qkNEtTWpUtqZtqa9f+z580VU3dQe0NwE9n9F9TMPsrxOesPa8bFK/4aKQ1QcestQb/7cjNfIjS+jkvxJy/QqKpsVfTULlb2KyvuB4ZapfRHVVi/BdFHL9AIqfEMw/kyAdDq7loncZOg5KHQWhepwqLv6vU8v2e/vQ8zLqKTRubTyOiqxxRzUK6mkmSS38joqTBe1TC+jQozf9GUWTK9OY+wl5ome/wDRYQ+FO9vD/)ABJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?AIw?ACMCAM?ACZHrEM)S1BMVEX::/6J3/8MH/+uv/21D/7bX/2Dz:fX/+OH/44H/9df/66n/4HP/3WL/5Y:8szV1dX7+/vGxsa2trb29va7u7vQ0NDy8vLLy8umG8PN?ACk0lEQVR4Xu3bCaoWQQwE4E6vs/5vc7v/SUVGLAxtnoidGrHrBB/FQCYNCb+Rl08vgRxYXt9eoaFb3qDhW5SGbYGGb4GGb4GGb4GGb0G+3Mjy8fP/ZJmWaZmWaVnijSy5xhtZKjR8CzR8i9LQLdDwLdDwLdDwLdDwLchxJ0v7ZyzTstzHsq013sSyrZgMRAso0BAt6TFuMjwbFp0thCSgDNbYlpqfQBmqsS2Ik0ZbWBrbYicvAzR/Zsnl70+HZ2WhUKBRFgYF+fDDFTXg6Ov2FhwSlaX1upIUfBL1DDjfpSxxrAaWzaBgDx+pgSWsBsVjD4+wqGJK6FrGarAHPCpSc+taxmsuSzKKgWW05rIEMYrx28NbMIrh7OF7txjOHt6yUQwsPppiFAOL0hCKgcVLE1UxysLTlI6FpclNW4iaoi1MTTItx+GpEdvSmqcmaYueWY4aMSxXb1qzDdOUZFigUbyBgcXS8C3Q0C1aA8vCskCDXnL0tOSOBpboMBmQo8lPmv2bBnNjrS4a7FXy65ejxWdOAQONtlxOlkZbWq40DSz4f+ZoYEHOStJ0LFutJM2uLHovXoOfppOk/ieomqKKoWpOVQxT81SR+vB9oS3K;dALBbbGl00Yn6+clGcJoPYzzrpO8VFI/brhVwUH410mUgEZbgGFuTg7OFdy0J6Fdh6RKmeGjsNAL6mvIc5Fz/MaVMeT8EvYpZSkufFkpil+F4siVWK88WSGKV4XyyJUYp1seRnWaPfxZJtyXuiXCxJrxTWxVLUlD3xLpa0JnIvCiLNYmv4Fmj4Fmj4Fmj4Fmj4FqTwLXamBZmWaZmWaZmWaZmWaZkWr4slvgYWvgYWvgYWvgYWvgYWvgYWvoZisS+W7HwFgJmnk4YUibE)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AIw?ABpCAM?ADflzs9)VFBMVEX::2+fju9PHy9/X0+Pbx9vTo8Ozj7ejZ5uDP4tmwz8Dd6uTL3dTV49x8sJe208Wuzr/P39drpoq61chopIecw7CSvahgn4F1rJFjoYOAsppyqo9IgRfD?ACtElEQVR4Xu3XyVKEMBSF4cxh7Hn2/d9TrtE+VUhTaJrcLPIvLGXjJyegiq/0ZfPIoIBRt2sOBYzLCePzwZiA+bgwtvnBaNES5iylYUlrLbffGGnlF+YiteJKNyPMWUjNkh0wu18YprTNCCM1PwZpZfLBmJwwumAKpmAKpmCSVzAFUzAF47oQvlgCcEMrYtxfMBboVTBtTpguG4wfDCoXjCXQNMb3g6/3Iwo1Bvlq3/Wti8aIfdfVwFCghtw8BnP3Jhbj.EMLMjNYhSAdSyGFO43Zk+KvuoJs39iTLhQDT0xNSm86wM7DiPCww0MoA6fvD7A6ueOtKSPxVSkGGPa502vCTuD8T9YQ8xYDDHUGENr+Oc362cw9LNYQRHGRmJoJz/GYBwoxxgcLmepeEwYov4/pkPxmDCEeRNGxGIsTTJ/ZtJhaPbqH08T2AqAaAzt5Be+ZwxhzOjR7u3bMEG16A2MWSqBlx6qojHYff53E2YhJy68GVMBA820RVjAoXkTBqz5v2eQaseXXRU2da7831QwBbNmUjapMPK4na1pds0lFcadrgtKhTlkhPH5YIxoCXM/ve5wSIXRAbNTbjLvvFKXK3VOgJEVYRqpJ7PWmPPTsjJG2m+MsFMpZRUsqTBbIScyRmhYEmJeBEsSTAvMjCUl5jhv4cfAwo+BhR8DSzKMUMBMWh4yIeblTE2wWJEQo19gtsGihGC+M7A4wYyBZaPA4JsJG/HfGVj4McfReeF66cGygYURc8RG3BicF34Mzgs/BueFGwOLEvwYbMSPgYUbsx2dF14MLPyYY4eNuDH3xwGW5BhkFDmw0SLMppls20S0o84nWJZhEgQLP+bmxTLMx/qWUy8WYjbX+7pdb5VYlFau7uq12g8NH71YilHGGLlKhpJieUZbtWbWavGH5MqJuEqfDRAN8iKPPjs)ASUVORK5CYII=%iVBORw0KG;)NSUhEUg?AO8?ABsCAM?AC1ihX9)YFBMVEX::32tr31NT+/Pz/+fmdm5tsa2t.UHSzs7HwsKqqKjg4OD/8PDw8PCIh4fc29v29vbm5ua5tbX/7e3/6en/9fUJ.n5+fn/3d358fH/5eX30ND/1tb56Oj77e344eHFNZQF?AJnUlEQVR4Xuyb63Lbug6FMwPedb/ZzqU97/+Wh4BAwzKjbk+zTdfZXTP9IRFp5iOwIEJ2XjJB1PF47Fc1TU86RgEpX+Ql/lnRy1OIkY77vFE7vBnwN+eFZ+QdUBWpi6o2uNvFqsI14W2a7f48I+9wyXu84h02vPCEvNAzkfCKR3lxj/fYoJ6Mt9mmt2t6YbperJpkX+Lthbd/Rt5qj5f0z7zfsF1teJvyvOXblfDCM/L2jHRzuxLe4+N4h2Ds4WCNHu/ernrGBbSv8PZ354Wlnt5QUx0OSQbu3K5y3qYAL9HOb6fTx8fpNLeHs7SCr7Yr4d1bZN6mIC8sU8T9iDq9UXaNd84H7RTcq13JIqxqkhIv3Du7J6zmHzbijooF8C+3q3yReY/CS4I78iq27jzVCtMbAL7SnkXHWxez08bxzuYl2qleFDbm19/1TnOFBLcuCi/pvrxqmSLtPCPuiNX829YZrnT7YmpXwnvn9M5rerE5Y1q+oyS988y4WM4Gvj8v4UZeF90bvjcuqHpKuGq01rr/CO8SedvI+/rd7VvPE5k3KuK2j7Xv0YW2bcfuHxv00HmNka66CXPQrdiXq1lVkXcsjwugjLWtivImqo3Sw+eBSmEdLl3QuiUZw6G5cPBxgBrN4cCJjPal9P60VxoKPRfw3w9rbajrqrXGJOIhh12WpY6ZWSrdsgxJQkHhw5X7r4m8mMbRHqJGBXTSOH2gTt5uZRTcmbcmXppB/cFaXzuDfvLeaSTWV7iKYJHXUQF4h4OHj8i23Uw+xIuH4whp6sXbA2lYeU/MO25gjQnIe+8RNNLinIIjt/3hkbbDclXORFVXuHU9Ia3yiOte1apX7LFuWzTrIO8ipK4MstrWKwXYmoU3iraXVcH9eeNUhrjTEu1lEHdEWMXAHvLkxvUOHT5QFDG4telI0bzx/6oj6Eo7NgqzByommCfBOdqii7y4D6z725c2G3mx8tZfrlbiHitMeC9wB8RtUuOSh4rYlwd5tC/KINKFv1N7BvB2U0R3ty/jzrU7oGynFhKmDTsRnGMVO3dRoLE/YaM+hzKvbCLhTrUlWqd4LefV9DtKSDJB5RwIt0IGzqLSkQJAvDutuMpToQPI1rzGSC28ZBHErdC3QisuYl4FEVcX411qcVKLvB42aSRewZ0m4n3FB3V/yavI9wDZmwsZbfPT1dkZvgCvDN2EOy3K0tS9cvHmt8IrtxeCc9R6Ei5FVgDbp6+MtnnXIF4ula4Yr2Ri6SJuSzmbLnl5MN3cNvE2pVcpxtWX7WoRXtxEC5C56PwrIETeYzneOeFS5ZEnawETCrXIbTzwBsBQljNYG9WFfdObqWbdxMxFwtuifaGUfYlXKu8V6F568cBNiCHOvCHydozr3KipBVsPIEWTNtHHlbBv30U15ewr575JKm/zosWtjpZ5FXmxnEUHVtsp+GQTdVzqfmVfV8i+WeUNZN8t77iONtLI6Zn6v8O1rHYKcTPeXfsmXsB21bw8wL5+zSU11zl7bygzzWl2B5ExbRg7JbS5fc2Ofc8Hl7ZcOeeVR/f4lmQnnfGJN+DOTHz0iIIElNvXfWZfEPvSiXV8eQSvITbiRdyUcp14KXJKnnQ7OZFQ4g0Smts3jR3u5QH2Vcm+lB0pZw9w/UjF.Dg1k08/NK+rqR9mU0qj+1LtzbNRi0cKZVw6yaavdMG2TcUHRbyygMGS9253fDuQ+zbV3/29J0T7yPtew?TnlK72Fg3vqK93b7+px3Yl6lqgfZl+AM8crD95xH4Z2F9wb75sOCnFxkWBgeYd+O7bvUCbfB9LrthHfmtXDrJlrY5RX7llFWeTILLpgbcm8+RynDWdu1L/PSJrafz75i38Dr5YeFhnhRiyLr2QZAspYwKDbADRNX+HzWn9gxC836Dh5p3wXFuFzNEsscaGzb7dpXeNtPh4Waedm+VTlesS8OC6ZTSUOLuEHBFoNBfloElsfI4IMJMnHlw8L+B6GlZ315y0SyJqBaumgVwPY9ZhSFBx6KKNZY3hvZROYd9mb9+UGzvrwk1odMo1KQR1P43GbRXoHYlw9ouIlh1741z/qFeVFvs90CUHHDp1+Ge39/j8Tb/bHt+FNt6x6J0BROwZ59F9UVnvUJ950nePPmtTZmrdRuk1xBYeCP07s2PP+GsaKZUOzLCeZ58XP7Tsm+TclXk6wJ7atrFL9eBfj11zv5yMmxt6eI346Jfdty9s2Hhbsqf/q+WmPG8rwyphbQxr62qH3zMfXOklmfTxuRty/Gm4+phVx0fvpqW+Lpuz+mlrGv8FprvOAOOqzi+b8J2+tBa91GmfZfGhZeyvGyfe3l4dklXr9ed2F77RKv/vqwUNC+wusjLwiv1wzcMV9gdef1FmXGL9iXeIei9mVe+kgxXPCGxDus1yNdyHVIvN3XZv16GYva9/JDVbLv+tfmjdYM3APeaUJSTwFNsq/pf9u+nF9+y1SYd7DWDom37zvNwCMQX8W0fN13X2xXk/DimKqKnTaYdyH7Cq/XDOxXXrZvusb19ovtinl/0KxbzL6JN5B9Uzn3o2a5ldcHllsDxsTrv9CueBCNKsU7kdKooSClt9dJw8oX5JoCEi62q6cW88qfSCFffi0BT85L2Uw8cMULW17CfXIxTSP5PAqv4H4XXki8G76ct3lC3r/6q7/6K/my/UTH4hO+NGXxZyD8XePdQI6b+VtRHIiR9YSxGEy6OJUpjHscrmAghXDwWEAYWWAeVycOoMil5ljRPP0hvDVi5OkV3l8GShwGSn4xVoAlvX8E77zDK+UsgbvlzIGSX4oW3D+Cl3KxY98NbxaY23yPd4v7WF5x5X6Z5oF7ccyLsQzMItw/Ib2M8f/u62A1YhAMAnDUPQostEXconn/t+wPEzoRHGxP6s55Lh/4D8npnPf++4r3zrnzPAvmSha9R63Uxou9qrXcUy0558d0b5TeAi+L2ts8Z4ArweR+LeH9BONS0FFxvrKInmHu5xvorZVacNGbP1euZVzeD3qboie377V2jiZmYjQtuPO8ASskvZihTlGfL70GjjetceFddq7KX+eq2vm2XoBzRKAld4Xz1V5Z9L/ny7mi1xIZaK21hPc1nisWO+uc+14G2uleXuVwrsbni6LyPsjde65KKe1ztjLSYulde650UZyveUUCuCt+bdAripyr9nw1OJC7+VzFuxfpYOd7R+f7r7k6tDcI7f5zRa8h6RTcrX6O9FzpHGskPXtJo2K6AsZGeXYTRHF7b+h7B0V6j7fwpune+ef7zt4wLG52vj+tefmZj0hxVw)BJRU5Er@ggg==%iVBORw0KG;)NSUhEUg?ANM)8CAM?ADLy3+8)MFBMVEX:/9/frjX1+inp81WUaW6udfGx97q6fIbDJDr+PfE7Onc9PLN7+zT8e/0+vu56eUR9Hoq?AEp0lEQVR4XryXzQ7DIAyDfc0fe/+3XTeph4YGI5D4jiSo2HMQA+TzRNDhzw7FD30uOjr6JsMf+czj4PATI1GozqsNYDsVpzS1fGQiOuplslOOaUIkN4nmVrhN3XKc04ScraFkq0JrzKx2UpMla0Zma10hXhlOaoIOJipSjZRqq3BWkwy8SSUyL7VTdlgTvHTcipngRUnJXNMkWCU7TmaiqMbAJ1nTZFgnjwabCV5uyaUlTYoNWuG4FmbTmYGNYlnBHiccPhpSu8YadCVCvpU84njwn2ncIao5lBwjydu8z1u/Fnyb48b1B/GbvsJ28V5A8E/AX3uaX6gq8Zv8M9lG+jts5hPy2iRxcYuS1SfaPpEl2FS4463LLv6i5g8n28PE45yyIFPbvqyX65brIAiFQckFCfb93/aUkIacrprRzuwfNWp15RPc0cLWMiGtK2EuO1QdzLzyVFdwx4PP3J@ekEqCpBoPfSw7JOBLCmuzlHjfl6014P+Y6rLiUSWfL2ZV1ybS+GvxN+duySYNmU0minNGbNuW2HoUd0OIlUxVfgzbS0muNWVSSxCFaAyi3YvuOh2EjHzONJ4oLjLhYNpAYMypgpgDQBR+uO04Eq5Qs30LNX4ffC0ZLr0vPCWbAmAE8QUqSLtM+49r4fcMuZBXy0XJtpzz5lUoMWUyep0GAqKqAXp7IgecFkt6jGFVabrsqWGMY9ezPjCNPkrYWIRhQbTKTrKSUy8fuhxBlwJ0erzyUTnjOTtyRrv/Dyk3RuxlE0EVxeK8A0TJdyLeTYu5JOJJmuJHmeYk/1E3bnRa9navciNNBo/S/LJpMIzORQJ3DAtsBypkqw0JuZrS3pf+JSz1YMJz83m7WjTdtmEDDimMQnX2WOV75jeepiFnenzGHMM13VZXE6TwKPVE6guY63XQJmVGxWNMJlqk6k6UTDF08slskV16rPzrf9sE0zgrzfE1IhT7JgELSZzCbL/1M7PLncHyo4CSbjWM8XDYNOvmMjft8mU3QfxLkzjx345woQrTinlsCwMD/vAVJ9yJpEGU7jK3GRa1l3z7W4av3EeTJH4tJy57rplkqeaTL4wuDaZYO+j++PouE3IzvQIpAQu8mr+yPTKODG1PSL5HNRi8hDmlnsNfnVDvp/m7GsaDnQc3KYPTM6yl6rK0GSChGYSYQPvTHVtOIQ+GuKB5FMx9YxgET319aUpcg+H7k+llynuQB1WqbqFylbhay2GRPUng9DhQL3cfFcHk4FcxPC1cpx278Kkb3urh8mhXAo/SQInBgwrrBX/NWsGKRCEMBAElmWJ0fj/3y7McZQapCeQ/KCwCZjqR69r99vYgRcGppzb1+/6si2znvPidJ8fCb4A4Xo+n2886xpfLEN/l6mBj0u6r2zSYQKTrjB0r+EbzCYzcXlGH85CbDinC0ypCoOzwJ2i@jyk4cGPUjz6kzn2lb3NB19vM50QxoG85amMeoU6UxjJpc+YMFBK0xh8pnCxPk2WLo6U8wUJt6sjYIyZKaWw8RhMBb8KtNMY8J40UP1uky0BhjZKjNBV5eYW1Um7i1xNr0yE3TfUR5GdaatP+OH6rWZ/usREj10r/sZ)AElFTkSuQmCC!