aboutsummaryrefslogtreecommitdiffstats
path: root/src/05
diff options
context:
space:
mode:
Diffstat (limited to 'src/05')
-rw-r--r--src/05/input1
-rw-r--r--src/05/part140
-rw-r--r--src/05/part275
-rw-r--r--src/05/solve.py30
4 files changed, 146 insertions, 0 deletions
diff --git a/src/05/input b/src/05/input
new file mode 100644
index 0000000..1b4b16c
--- /dev/null
+++ b/src/05/input
@@ -0,0 +1 @@
+HKkOohaAXxHrjUbByYuFfJMmOoZdDWVGgvwzZzUuUrRueERkIiKhnNpPdDXTtxMmwLlWGBbgTtoOmHOofSsFhrwWRWwytTwgGrRWYdcCUYyuqQHhpPiILPaApeElEeaAjJVvoiICIicdDOmnNMNZznoOgJmMFfjcCCcxXAaWiIwyYWwaAakBbLlJRrBbbBQqXrRNnHhcvVCxZzjKnrRNsSgGvVMmrqQWaAXxwRaAbHhBLlfkKCmMchiIHwRZJUujVvMmzrPsSpWZyYAaznHhNlLTtfSssSFuYjJyUWVvLlwqWZzqdDvVQNDdnzZGzZFqQfXxoOuUCcgRrSsHhbFfJPpjBdDyllLLdOoBXxtTqQRdDrrRbAalLyYvVqQYoOyDrRfFfFKZzkXxxAyAGgRNnrrRbJjzZWwBPpzZnNaYvVUsJjSRgHeEEehwWGrvVuZzfSsJjFaoOXesSDdHhwWEHwWMKkmkKeEABZzbahtTHhMpPxxXbTttTBhHXVvlLNngGyYvVpXxERrewiIVYyvWzTtEesuaAXxUUuuUSPpKqQwWkNnrBbRrRXVZzvjJAaIluULJjixoPpVvDdrQqRzfpPHRrhqQISsirwWNYynaARrzxXpPxXuURUulLrSswkKWLDdRFfrrRssShtTHNnkKYYylLlGieElLIgLqQIiySQsSqmMyYwWyIioOYbBlZMdDmnNzBQqbUfFuCcGYEeIiEeuUOqQoypPnNMmbBgHLlKdDkFqQfEAaeQBbqYbBnNPpyAHkvVfFgKkGIiKhuUFfaMmsLltTLOqQochfFgBbGHiICiIYEeUDdSssSKZzkaAuDdWeEweErRySZlLpoOPzpPjSiIsUuJjJPpkKDdAasxtTXCtTclDddlLDeEgkjJKrhHUBxXbVvDdhHNSsMhHmNnqNnsPpSoOQRrBFBbvKkBbkSsKQeEqqQQyYyYYrRyZPpzDdCNsSnwWGgcqxXCtNnTcOJjqCchHQegGEeEJjSsjdCcOoWwyVvYlLDnsSKnNkNKkQqAaJAaqQYTtDdSsipPItTyRKkrBdDblGWwJjganNABTtbLCcNNndnNDkKdzZDWwzaAZEeUdDzBbZrPpRHKkVDXxdvhoOWhHnNjZzJwkJjyYJjKLpPlvVMmRyCcnNYRrAfFtTbiINOonuUBEenNaCctpPTCTmMaAttrRTrVvCcpPTtRRJjrmMcnNnNnNpPrvrRgGcClUuLjJQqfkKxXWmXxMrkKIDdiRwFrbBRzYyZVfNnFKWwvVOokdDoUfLleEJjFuUUuNnJjbBEPcCrRkKmMpeEUubBeGgQRrqrhNnxuZzjJUPpcCLzZlXHeEHzfFaAZiNxXnqQEeIiFfIUulLGgTtHhwWhsCiIcgGWbYWwTtyBAfFlLfgZzGFXxGgOolLAaabBbShoODdHAatbUuDdvVTlVvLVvkPeEpKORSsrntTNCJjchKkEbBefFDMmdHhmMHFGgpPnNRrnNDOVkKHhXNnxvPrRMjJmpdDCcAalLEeybBYrQngVvjIiJGcKKEnNtTiTTttIyYejkgkKGKJkhHjvNaAaAnVJkKRriIjJhHvSsVQlLqTMUuitTImyYthIzFfZiyPpYHlgGLWwKCckKkzZbBNniHhwWRrfjJFrRyYtTbBZjQqdDGgTtWwJBbQqPpLbBlNhHnQqjXxJdDjKkpuUPlLAvREeryUurRxXYbGFfPpGgUuoqQNnOYXxHhsSTYhHhHytJbEJjehHBjgGGgsSyykKYYHNnhzZuUzzZRNnfFTtrjJeEZuUcCnvVNoOTtebBMmEcCPbaATzwWZtSOoCcjEeDXxdMcOoyYtTEeXCHhcjJZzUnNeEAadWwIiwWDsnNSupPxKkBbFmMcCiIrQqRygGOTtfOoFTtGgXxEeiILSsloVvJEkKXoOeExejrOoLiIMmUulTGKkOoaAhHCUuKkHhcoGgOTtCciIYyYygVvkKkKDvjJdlnNSceECsLcCDNwWVvnLxdDQqXxUuedDEkKXfFWwLVvlsSdDkKdDvwWMyYJjmPpjJVzZcCIigiIGgoOXpPxdDkKcClLVvpPIPpihHKkIbNnBPqjJQpGglGgnNLZXxziMlkKLsNnSxKwCcWkXpcmcCMCtTxXPoQqiIaiIzZnNAOMmckKCryYRcmMWkKwCzZmPpoOtTqNnxXLIilzpPZbrRJjIiuUBQMXxPPuUpZzpmpPOXxoMoOBHhbgPpGmeECcDdgGYGgiIJjyOomcBbsEeEexWnNlLOowXNntTjJAaqwWdvVtLlOopPeERrmMCcTeFfZbPRrpxyYhHcCWhHwaAhhHHthHTXjJcCsSeSsunNUdnlfqdBbDrRUuQFQqRLIBbiRroOccCkKSsCxXlQkxXLlKqiIsSWwmMrRrRrfiGgIGsSXAaLlsSxgfFpPlDdLxXkKJjFJClLjJcjLKZzkkKMmkYMmyIHhiJjmXszbBenqQJjIiWwNEvVKZzkMmaqQlLRronOoTtNfUuFhDdHbBUFfjJuMhHmvyCcYLoOyYlVxXGifFeEPpIbiIDdSqQsCckKRrAaqSPpsQBjJbEedDgGBYYynOBboNEEeeaqQeEAxXFfaTtFfwWrRAvPNnbRrBDLVvlPpHPpKkhxXpZzpPPjJdGkpPkKKgGgYyMnNerRbnZzqQNwWmMwOoObwxjJXkKxFfavAUuaVQqiIVvhHZzAQouLlKkDTtdJARramMjUxXOqdDjJorJjlLRhkKHOCcsSiIhHfMjJKkmFWxXwzZXtTcCLlWkKBaALlKkotrwWxXAaREeeEgGJpPjCcLlzZAasSiphCECcecPpYypYyJvVjuUfFrGglLMmdDRBNnbmiIpyYPyvcsSCVAaveEFRrbBfnNgDdLIoOUKkuUumMiHhlvVXeEsStTyYxGcdDtBbTUrwUVksvVSKxXvIiuqQoOQqJjWRMaAGOogmrsSRqQFfcCgXxAaPpogYyGJjrRQHhulLUqOGvVPpvVRrFWwfrpfFeIiWwSTRrtsNzeErELleRHhnvUusSVjaAcCJNAaVJzZjvsSoRrORrZoOqSsSoQqfFOmsSbByYRwWMmrMYcCyPpsufFMMjJmldlLDpPPWfUuPPpxXpQvVMmqqSnNsQMmFRrwWwWwzjuUJoAaZzOZpPpPrRMmdfXxFDXJjxfFEeOyJjqQhJQhHQGgcIiCqUCcujJbBqCmPpMdZhHiIeExZzDOodlLHjJfUOoNnLIiIVIiviDduUlAayYWTFftPpwLlCQqPpcLRkSvVsKrdDLlhHgiIDpXxOoPCYyDrRdSscdkmPpMKlgnNnVvNOzZVvJgGTtHhnNjoMmzZdkKDIkKiBvlLVoObGcCRLrgGTiHhtTNnVvYySkKLlsFfItBbYrRyYqQHhOWuUkiUuSRrsIWwcwWHhCGNngCUuSciIJjRrRQqrLlCqbGgbQqWwJjBZztThHRxXrWPeEmMpRBbbGgBIAaiWgqQHhRrIiGjTBbZzZgGdDVvMcqQiICWGgwLlmzgdUTtEeuHhDaAGfoOFFfUHhuSiIsXIZjPpzZJSsoGgQfFqOhHhMmLlUucCHpdDPmMvVmMlLoDhUuHeuUEuUdMmgtIiVrRvjJSsdBYybPtAHpPhMPpmtfFaAHuVvUAagGGIQqilzZLmHhMgCtTmMyYvEXxWwrFeEfeJjEeEdDRsgGSKkgGOoMXxaAXHhxMmMQrRKkMVvaAyYmSsuwWUUuBozZObZmMxXzBbKkqQUuqmOZzdcCDMmBbzZdDpPQqvVTtmcCpIinMJssSSjeERUuCcNnVapPAvqMmglLGSsxNnQFLlzBlQqjJrRfFLekKEdDVvuUNnTtcwiIbBKkmMWgGxFfXkKVvCFfMUumcCTtEeNnSsLlMmWwPpIiPpoZzODmMcXxClLdeEcCLMmQqEmfFwWpPejJlVvLEeUucHhRrCIiJjWwEeUChHcuLDdlxXHhBzLlNniIZLfFldpPDAyYNKknpPNdDUuyzZECcQhHbBqHMEemhFsSfeYuUfMqQmtOFfgGoHhTnNMmFnINniwWaAhXmMuOofeEgyEeoOuUcCYKkOoCtTGgcWkKWwwlQEeXxwoOWdAaPpoAaOwaANoOnNKkiIyYnVvWWmMIZrOowwWWRjJnCDdcNftGgHhFfPsSayYAjJpaAFfHZzrRhzZPijUOouJxXXxXIzZJnNSscCDdNnQqrRYPMSrNWwnNneVuZzUYzzZZQOoFfqQqcCoOnNyLRrlPTtkKXxgFfOOrkKsSRooDRcYypPiDewHoOhyrRiInNUuoOSVioOIRrbBHqQhoOUPyYHhFfpuvpJxXjUTQWwqpPljkKkKJwDdDKkDdlSsoOyYLrCcOoVAagGLgGnWGgwNlzZvCdDcEeqQqQzZWwOoKbBzuUlLZZzTtDkKdxXbBcCCcQqiuUUucCIKkeEZWATtZzawmVvBtTLhgGUuyzZYgGHDdlQzZqHhYzZtEOoVdDvKdDdDkeTQqysSpPOVPRrNKkESsikKuUCGgZmuIiKsSkuiBbISsyYvVXxEqQNnEwWOJjoRresvVlvVGgNYoOKkykKQqZznqQLmzZpPMkEeOpPUAaUuueEANnbQTtqtjJTBndDNOFfaASsrbBRbBPpoFsSfEetQqTUueEDAnNaTtIiiISLGglhHZzjJZgdDDdGzWwZwDdWtTtoOBbTagDdOoKCcuUkGAoOgGdDsSooWzXxZAoOaWUuwzgprRPSmMdDJjZbBzNfIiFpPfWgGwzZcbbBqQBzJjTtZrSfnAaNtTtTJNnlLzRKkjJVsSOoWwRrvhBbHXOorRxiIsRrmMSwWJxyYAaDxXuFfpPUkTtBbKhjBueEUbcChoOHCJjcSkGgKsJoOosSBbNOonBbAHhaOnNLrRlYnNJjyDdsdGgDoORsSZhHbfFBGgRZzvVrcCMmzokKOwIQqjRrJgGEebYxXSsyBiHiIqCcQJPwHKuUQqkPpPeEphDuNnrRMmUdQqvVcCWwWzZOoOYylLopjJTiItQgIatTtDdTKkAYyiNngUuGgLlLlMWlqLlcsSKmRGkAaQqKuQYyqpPuUXxNnQqHhvVlLuUOoFfMfRYJjAaHhyJjDVvNnxQqXGgdxIXxiLlWpCcvVKHjJhyYJjbqQNbBOXxoIinJjyYKkamMJjAIWwiGsSgUuKgyYGkBpPbBrRUVtTCcvzZuUDdzQqlpPXxySsIDdfFdiIaAOoWwdDDwWIiYybBmBlEeVzZvsSuUgGwWMMmAyYAdDFfatMmTKNnkamLPHhpdVvCcDaAaAlLnNuRrUNxXKkTtPpsDNneBmMPpSsblxfDIiscCSdWwXxcWwCFXaALEHhaRkAaRrKyYDHNqQnhVvUFfuTtVvgeEGTLCKkcluUrReEQmMqnNBMCxoDdOXiIUurvVReZzOoGgNnkKEcsDdlYyLkKSlLWjJwPQqpoadDAzZOjtTJdirRjJIDaAvVjuUJTtfctTRrCFOozAauUyYZPpzZeExXxwzZWDddDXVtTvfZziUuIFbGwBoOXxbWzZUlLSfRrFsuNcOoGnNgCcYNZfFZYyzoOznYyMTpPzYyOoKHhIiaAkZTTcCHhFlLVzZvfCJHvVvVSshWwjcPnCcNfFnNiIpoDdOtlLjOobBAknNKIZziVcUuxuUXEeSsUuAlvOoVDdTwhmMaAHINnSLlswWsSYrTtRyKkxXDdijJADnZzNdaWeExEeUuXoOguUrsSqQxUuXAaNndDabBSsAFfoOUuMFfIieEGgmRaIpPWwusSUiqvVpPrRGbiIxJjZzNnXBFSFfscCfMGDdnNgoOjToXxOMmfpbyYzPEqMIiDmmuUMttTCIcCihkoOKHdDcBVvjJYyzZeEYSaAeEsWwjJdDlLZTvzZVtnNTfhHJjFOoPpdhAaGgHtqQTHhiIsYnOoqRrGgXxXmBbEYyeUlLuBPpbnNGgMfOoFOodoHhbiWwIBSsUuOSsfGgFFfFlLfVvZSszDWwqWTtwljJFDhTtfFBboAaAlMmQqLkiqQunXxNUOobBIivQqQzZqOoIiyAaulLHjJhUJjlLlWHUucChwtTsgGSqXlLxHhQqQaASsgndDRlNnLrNGLZfFiIDQCpPciIcvVCXxVauUxXAvwWNEeoOcNZUpPnshHSNueVRbkKBrTtvcFZzXxBbSjXxJBShywWYruUReENncCfbBLTUOoOoLlkeCcEKucgKsSNVvnooOqBbWCcwWwDfFaFfAuUFfvwWVvVsSWJYytTjZzTtwxXxXqQqQtTdMnVJjbBGgItTiwAaCgaVvABbBGKkgbGGIJjiSswWBUuIiHianaAoYpPyjlLJZXxzdTtDYHMmUuhSdDsnNyueEsScfFeECUVvPuUwzZdtTDzdDygOoGhLlfIiFUUXxumMzTtsSZvVYyuJuUUyYvQqwqQWdKkDVbBoEeBpiIFfPoOFsSfLlVvaATxzZXBbtqmtkKTMOocClLkKdHTtWwqQhKuUFVvXxfTMmHhskAakKKSSstiZGgzoOYyIkDHKWmeEZzoOMgpPYDcCHaAjJOpJjsSdWHhZzTCiIRrKJjkAaefoWXxMHcChyYmOMmowEexXZzOtxLlyEeAaVvLFfYNJrRjnqQyoVvOIiyfFBqQdDphHUdDuQqxduEedVvDwWIiNnUUXmSsUuMTtkKxiIranNAgGESseRtDdUumMfFtOoTylMmLYMrRmRVvMmrEeQdDEdDeiIlLuUqJVpPRHhrvOqHhINnivVqvVQQKkSsdDohHcHxGgxXmMiIXhwowWOWWWLlwLRlEetTBimMIQXxqIibeRrEQiZTtzVvSNnjJmbvVBVvpnNPrsSaAiIJJiIcCrRkXYtKkWHhuUVvvVTpuUbuUyPauPzZpownNhyJjbdDBiIYAbBIoZzOaRvOoVYNmMFfJxXlLjCCcsGgbnyYRrNIdDGgihaEZygJpPjMmOPCcskKCcWwvcCVSpdcrRfwJjlLrRveEVHAaXxRrDkOoKlLCcshHIiByYdoODtBbzZTmkIJjiKPpMSBbPpIiSVdDuhdDDdHQtTqQIiJhHyhHrVvDdYeEepPEUZzuWwCcUWwLouUjJXCcxnTuAOoadhHztOolLXxIHhZzdDiWwQSsoymMYgAcgGCcaAmxAaKkXxFsSfWwGgLFFAXxaknNRrsSSsKkKFfeEpPoFlLfBbGgZzzZbBZzPHpPPpDdhpKkYySRrswOXxsNoOnMmZmMzkEeKRZUAgGajJeEavVAdDGRdHhmMUuUufmCcMzZFfDctxztTZuUXgGzJjZYlKkLOXGDdMHJjHpPHwmMeESODdossbBSCcWhcsXpPaFfMoOmCmLfqQFlZsSxZzlzZdDLxSspcCPmMLlmlLMyYRrCckKxrRXeGnzYyZjGgJvVHhUjJZFfWwzVvVAYyRrdJhttTfFTqQDvVdQPEepkKqUJjucCHKDrkKXxMgmMGmRAEOEPplLoSsHhoOUdyYDEeNnQmMqcCJjuDdXxrEeHGoOVNfFTtsSnNPAPpMyYmFfavVAapHWIiAEeeHpYybNeaAVvPpEQqSskArRXxEeYyoORDZzhizFfZtTIYyHQqeEtTcQqLlOoRrYiZpPBbzOeZzfFWwRrKkjNnJZgGrRYyzIxXrRKiIPpCckTtvZZzvVxXfRrRfZzFNDdtTIiVJhHwWwhHDeiIEKhBQqwWaAajNnbBmMHhYyUusSAaRrrbBIuURrbBFuUizzpYyXyDroOlLRNnYycoLlVvQqhHOkpPUufSsFUZzaAxoyYOYuiImMXxUBbylgGAPpRrzXhHvGgiMwxXgEeKkGpPuSsCcvuCcHhvVXxUaOoAalLgGXaAijJZzhHYyIyYiYYbBTtGgyVvrcCRyDdPpVvSshHMOomRsCPpPpSVBbBbXxvEeJjsckYySsCuUclMmLOoKdDqXoOyXxYJjQqPpxXlLpPwdIkKvVDdeEMmtTiDbPFfpbYyrRrRkKcCDVvAazHhIiyIAaifiIzYyZvVNYynaAvVyVvgGjJpGgjVFfRKmnHhRrNcCADwWdbBaOGPpgSRXxFfgGrsRHhKknNryYPUNnGtgrBdDbPpiIzZAmMdNnDWHhYvVGgyiILMmRkKlSsCYycYBnUulPqQPpCfFcOoSdDelRrLSgGKfxjYyJBbuMmVvsZlLsSXxwLxIDpPdiXIfFizyYZxVWwvtTjJPkKmMpXQqQqUkKuwLLllWqQGRmMrMmkQqiIPpXxHWXxwhKhGgzZHJQqdDjfFhTaNnAgJjdDWwlLNscCSnfFIINnPVoOyYvpxgGYykKlzdaAAsSacadqEdDRmMcEeCreEeyYbtQfZzsgGeXuUxEAaLljEecCSsCcyYxXLBblNqQcCnkKRrxyIigGsSYKOoxYyXkrRdYyDQlLFrWLrUVtcWwChyCxlLfFGlLzOoEeZgBbXcRrueEUMPbBhJjYyXxuUZtEedhMMmAaSCcssSmYaATIilLMLlvVmOotyHeEPpFfiIXxqQdlbBLDhHGTtEwWMmegFVTqQtBDdbyxtpPTbwWAagiIGjUYfFHYyhTtPpbByulKQqkKnbBAafFNAxXUlLuJSsDdoOuZzBmMbfFBbdkxyYiyYIzrenNSTtsVIiFftpPvoOvVpLlpeBtTkKkKbrjJQmIKkUhHcoOwuUngGgGnNdRrRrDPqjJSsQIQqimiIuRrdgxXgUxUvVuXYRiIwWyYBIiCczZrRRrAPHhpBbGgUIisHUuhQYyUFfuqyGggGfNnEwoOZPiIYyYHhypuljJrRQNnRrlLLdqKksSQbWwBSTlLfHhFDINnzLUuYylpCYhHmTJQvkKNnVAVNRTtrsSncoOCrrRBBbAQqanNbRKQqkvoOiIYyLPplyYYsSMevBFTtfbIGgjIiJOrRdDgkKOZzoWwMlLmGiuYyMoOeEAbBZvMvKkVjJmJZzjmMnwxXWpgWnNwGrHhIiwnvVixXanjJVsSFfYyzcIgRrGfaLlASsoOzKFfoOwWkpPuUZFqQiJjMmKDNndyDdYlLSsUPJjpcCuJzoOZQqSuUsjlJjZzWCcwoPZjJzBkMmYyaAcUuCqQdlLTYpyYPytDcmbUfXahjgGJHAxGgFPpQaUijJjJIKkFfuJjHjGgaAJJpPjwWhrRCcLlsrRTfMmYySHhtDdTNxXaTtptTlLfIilbBMmAkKesvVEeIioOSZDuUdtQqTgWlLlqqAMmaQURmlQqupKyYRrkPUvdakgGKADMKrRkxqUuQkKXmIiQqVkZzyHhYMmLlXxBbfFOUuMYsVvSYylLeLWBjJbLOoukKAOzZowWMmaFfUIilVUzZueEIiPoOIPpiptpPrRZzuUTJmUCcFoOwrRWaAfQqQYyqhnNhHBbHXlLxYyzZTpPpTtaAPpDMmiIBWCcuZzXJbBWwjybBYcejdZWwyYhVvbBNnJjyYftLmMyOnNPpopYkrRcdyYDKfFkxuUPVvqQpqNnQhnNpPHxsSXXCgGNntrRgOoEedDyYyWMmFEeqGZlLgGRrzAahJoVvUAaSsbBukphHPHhrRznNDdAadPpDHhzZdbBoOpPbPnNpwWBNXxnDaRrpPLlSstDdIUuiTVvtfhKkHFQHhRYyoOrnNSLltTgGkLnkKNOgDdZvVzGbZQqzBoOEPmMppxXPoDEemMsHhSEeMcHhCqWwQsMVGluUuhHgGUHhZzkcCdcrRZzxXCuUUrRzoEmMDHAajJSsyYOMmmMuUOKHNnhnvWbBwpPOobPefFeVLsSlvQGgqGiIiOlLoHwWhhrRHAaAYjJTtPwWYYyyFEekKfYcfXfFsDdnydDYNyuhxaAjvpPVCdDwOoWPTMfFmtOuJjUwWyPpSZzaWQqIilqQUutTSmMPpXxztIiTzNnJpPjIwWwWfHYkjJFfKBbymCcWIiHhjJwVmMJLljvjJOTSszZivdDVEeHfFLbpPxGgOoXBhzMbQqWwzZeFfvVrNnxXckKCemMEuVvvxbUWwuzZcCpPHRrHhpCrRStTtTDxXYdsSDkKIuUyYNnCczZKPpOokcKETtevvVVaADxfFXTxwWBHhHWwhcCQqbXPpiIRrTtkDzZdKQqhttTTHPJjbpcvVCcsbBSIiToOtVvHeoOEPphiPpoeEOAaQeqsMmaAbFbBmMLdDbBjJiItTGZJjuUzgwkRrkJFzZUufbPpYMTtmAaAmSsUuPmUuMUpoqRrQZzJjYyObBFxYyKkjJwWEeZHhzRrSHiWaaAYyAwdDBBoFfWweEvVSDwWAIiadsOIiFyYYykKrRkKQTtOtdwWDTGgrapqQHfFELlIyoWHhUuYyLWwUVviBrMmClRGguUWmxbBMHhmXmPpMPAaAapUuOokNnLqQloOfFbSsSsIfFiBeEoOOoqNNsSOonMmXgXckKSHhsCUAadAPpEeTtXxAXJjxSsSLlzqvVCcHPpyaAnNYFfYIqsSIiQtKkTTqQYyPmMeECcpIhHnNaBHOHCQfFlLjJqlYyzyYyYfFZCcJwWjLKkDdoOOoQCcqcqQvVejJfFEhyeEYaARrStTsSsgvPpOEeoVGPNnxXzbFfyYnFfDLldHhXxDQqwpPDSsmMMmdEecCTtHhIiHhkKCcUuPpnWCcCXxAqQaJjTmMYGgFgGfiiRrICcIyuLhYkKaAySRrjmBSPiqdDHhQDdTknxXXxNnJEepXxgGTfFnXxcmtxRrTtXsSavIiPpUYyuUTHhyOoYtdDHPKkpmyIUuiYOzZrRonxXNnoONTCctUrUGgJxXfFjaAXxkuUKdyptrkKRTnNnsSxmMIiXCcTvgGVkKIiGEekhHywrRWIdIXFwWkKOhHgXhTteuUHhEcCgGdFfDybyYBNnrNlOUVHhMmQqvdDAaNMmzguURNnrgGWGgwdACcpPavVkgdDZzuUGfFKYyHJzZjubwWKkwXoBhHVGgsFfEeiUKkfMmHhFiTtxXnJjNxKqQkXzJPfCBbcgeAaEjrRCDsSdnNcJHzZDzQKkKSsRXxjJIYMrIiPTZztMmCmMcGgSsCnDUudsSdDjqSskhHoOPNWBbrfrRWqQxXwFPpXxjJxXBzZGyYuUSsNnMmgbHhBbrRjJhHhHSJUHuQTtxYLlyXVqSslJzZyYtTjzZOXIiOnNrlLidgGLTaDFeEfdAfAiIaZCXxKkpPLuUlcvnIFempPKkBLlinsyYSAabTFzZfvHrqFPYyCcpWweEfIpPcUGrRgrRfjJOoFmMWiIGgWwTtwHhAahEOoeVuUAzHhdiraARIiIeumAaMuUKkZzmfXxeEXyYxHfFIEpPrVvIieEhHLldDYtZdfFfFoODhHGgUEeIicFfnNCbPytZzKZzkTYPpWwNPpEGgehDdqlLMmLtyYJUEgGewjJQqKoZAOnbdsFfPpyYRgGXbBDdEepIixmXLqgniiFfIqZHDHOlNnNnWSsDdJFfjPpVvAIiamMQkKoMmOdKkrRDcXebkKBpPrRNMmnJDdjOwSDcTDdtXsSYNnEVvCcoGgHJjDdhHhoOgdDfWwygGYFnRDMOFfoeEYymSiIZBIiIisSvfFVaAxXKkDnNhHxXpLlMCcuUmkVWwEfOxXtTjAbBVvfFNMfHusFqPpEsSeQCfgYyiIXbIiBbRsSYMmsaWdcCeECcJjyuUSsvVIgGuUcyWwYkKwWUuCMaAMmmzZVjfAaUuctTohPRrpbzZBKkpQXvuzbpHvLxYyfZzFvVYeEXxPpyUjOovVTvVxXiItMmbTtLljJfuiiIILYylUtzhrNnNnGwWrRtTPpYzVTuUtQYyJjqTxXtgXxXcGgESoOwWsmMmMnNwiIdDLeENJNUuiBbnNfFYgBbtHhcCrRNjwFfdDWUOZDdzFWwOonqQgGNSsflLExKkZDdmMzuVUSLyYpJBbjbBPlWpjJXlwWLxZzEeoOBwWDRmnrDCcNngLXxlAhSswMmWtnigGIXYXxSpPNbbnNBOoETteqsUqhHQNnAauTCLlSscucCpPNnmMWMdDmTtwUoOaAMeEyYItWwQSsqwBbSKGWwceQDdgGVvMMmvXrREexpOlLtToOoGgEWwezZoOquPYykKpeNOoxgrKkRNYyiIBGpyCchFFkKfBbJjcCYiIyczpdDSfGgwWFWFAapqgGigaRrMfFRyYhHHvVHoJjPpOoOzZDOokkKFftZuUnRreEwWZLALyYdDQqmnTtQqwBbWxXwWAaNipPxXIJBisDfFdgAazZHhdDGgGWqQwHUuGgoOowWOJjZpPAavgGVbuUhHAaBYsEIieMmVXxknClxtqQgSZzPuUpLVWsRrWwWDQOoAavEecEYyYyeOoCYboOfvnNVJYyjzjbqQnEeaANgGikKZzRrmhHMbcsOoSzZROocXxwWCrRQGgkXdlLHKYykhDZqQzMtTtDMXmMOlLaAlLIDdVpPHhLXtTPpwPpeEvpOzwruUfFRHtOfFoTXNnxhTRrtXbBTBdDmsSXTugFfIvvBdDlqfHhBsxXSbjjJJQJjqoOYytTQFNnHaASshSvVfFiXEeLlNnDdLbZzgeHhEAaVfJRifjJcuUkKWlThpntmMTIisScGgCAaavVAJjMmbhkjJifCLuMmzMAaYyehHYyEIiczZCPKpPEEeUuIierHzZvVTYytHvhHWwVUuxzZNnciIlTtAasInjJNOnNTcCcvVVvCdDwMZUuxXcCzwsSgGWhUuHOCcHhlxGRrfFaAPCpzZAfTtJfFgGVVNnvvzKgGkJDkNzZnKzaxAxXayYnNWpPSTSDjJJBbxWOowbnNyYXINniVvBbubBUHOfipAsSTiLenNRIirUfzZFuQqUYtpPWveEZzVWbOoCwWYyTBddDRtTDqQCAuUYfXxtTFDMmfhYyHOBZzOoOdjFSQqCcsfSsQgaARrNngGyYpPpPGQBEUdDuxXLpWKEDdyrRYrRdEeDeIifFxXHJuUjsaALlSCczkdGqQgxPDNnEeCczTttTeEZQqHZIixdDWmcCMQwWqhpPHvZzLqBvVvVVHhWaAFfwqTlLFfyBIYOoCcvzfFiYymYyRrBegGECzZcvVHYyYNnlLhbMbfVvFPpBrRJjOonSGgsMWXWsSzlLBbaARyYQqrRWptTYTtyPjXgGtDAaRSYyIiIkKiMmMmvIWwdDiKiIhmIiMJjEbBekZzuWwmMRQqwDdWqOoQQZzVvvevaAVzpIyYiJjUurnYyTaKxXkKyKkYVvkSKwBpPkKbNnWsbwQfFqJLPplcCZzXEMQqmFJheEjJNlLsynKkCcCZgGzGgcfVhHRRVvEeOopwJrpvZzeCFACdtTpPSsdoOtIiTdDrREFqMmUebWyYMmDCFWwZzdxqQqOoDduUhzRvzZsSVnIiNxXAaGgmGgnNMXosCcShcCHVgGGgWaAEQdDsCtTAacWwMdDAhHifFRrGgSsiVJBOoeECzXxLIimMrbEeKksBlWpinNniCcGeINniclLzZBCFjSQqsaHhLlKdDDyEeYdqPpQGPByzRmMWwEeCccCtTSswWsgOyQDsSQdivVDdIEeykhfFHpsSmuUuyyYYUMjJKkZyHXxFfmNALlpPauUjJVlLhWNyNnYnwMapPvTpBzzZZSsSfFiIskfIiFeFfLABbaLlhHiPpIfFMmIixiIcvuKkOOorQqVvyYjqQEUTPpIZidVvPpWHhXxYzZywIcCGGggGXxAhHaGgvVIGxXrIqwWITtmMDqWvcHhFklLKGrRSxpPXEwJjYymuqQaWOowXGSpPFHeeEmMjmLliDCUucdCBbVvcIXYylSsslcVMmvgXZKkdDpIGgijDdQIiqwqQWfFytTiCpRwWeYBmFjJLmoOtTKwXxXxpPaAZzNNNgGEeqQaGgItRRrrRrTStEeTxrRYwAJjasSVvGXyvdDKkxoOXVYiIeExpVvsQJjeXxJkdAyYZOooOTQqfFlLMerRRtwWpDdCZjNnNwSsRrwzZnSkKsSsNTavjJHhqVvWuWwCJjCcWFfWqEjmFfqHTcCHhIymMVvzJlLeELQZzzrRPpZwVvWScukKnwifbBOZzIizLlQyYCMTMmtmwWqVzIiZEevJfZQzZAwNDdTgDrRdIiGKyRrbBnZzNZzBfFjJQqbjJSxXsuFAafzIiZHhtTzgdzZKhHynwJVvjhHAaRrPpWNFfaAZzJjRHhFUuviHhdbXxHMmaAIXxWQqPoOrVvLnzZNiIlRVdDEepbXaAjJCtTdDcZXxlLPFxXrklQqAgGJCcMmCdDNnNSvXwWIixYTmMnNgCchHgGSdDsPDsSoEeOdZzAaOoGKFJjxpgFaAzygGuUYbBefwWYkwWwsoOSrvvqkMmKjJDrOgJjpeEUuWeEwPvREcRrComMuksZKBgtIiTkCeEPpKDdTtkKhHtTDdgpNnQVRrxDdJjpWOceKdqQtTAdDafKVscCSmCjJgFtTPxQqiIhCrRxXnQzmEhHYQNnWwWTtSFfljaWCcwvxJVvFFfnNZmMzZcCfuUHFtZdmMrRVvFbRrZQXxdDdDqTtNLVvtTSslVNnvOouUeEUhHKkhHCjiGgIJMmkNnFfKoOjfWtkKZzjJTnNFCmjFfVXxmnNMviwUuWsRnCccCjTtwhNpYXDdpPxDeXGfpcIiIuUgGseEjJvVZNuxkKXUhQkKTeECLlaVvfhldDXKLltTdlLDNzZIRrqRrfFQMwbBWkKZzmMmMOoQquBUubUJjmFiINTZhHHjJSAOMfFLlRpPCXxuUVvfFUubkPphHxXviguUxXpPOuUsQrhWSsWwtTrOfFQTtzzihHtfRryYOogGyhHuUYGwWtTgnUuziUuJYRsnEFfOELxXkKQLONnuUoeEiPpIBcCBbSEkKeSsrRvVMOoTtTeaAFeECRxpEehCcCvVceEwWbBAaUrkhHalvarONnoPpdDtTvHhVUuiIUlMRryUGnOoNEePppbQLlFJRrbDrMniIEeCcuUfsUXMmOoQquZzUNnxaQqywWEeYjNnJlAaBbiFfPpulfFValAkOoTtqfrRMFfmFCclbBJezYoOkKRrpPAaZOgGdsBbRrNHgGGnxXXVvdarRRqQqxXRkfedTtBbDEsSSsPiIpZOoTtshHfHhFjDExXYyoOSsHhYutTFhvVpaApOoAaPnNwWyYPwsSbBhfFHWUplLTtOoksuUEoOsGgSeVvhWgGpvVNlLqEeSshLDdxtZzTXZzuUyXxwEGgekKpznNZelfrDZGoOgyNAQzWwZqKksWwILgGeCmMqQlqLlQRrLDxgXxGTtSsQqWMbBDdmXxQqNnwlicgGCIustTlLpDdZzPtimMQeEnNkxXKoOCcwFfWbBsEhHDPpdOohHRrpeYyhLOeLoNnOWiIINnFfxAROjVvoRpPXoPpFdoGzgGXqvzZuxzLlZhUSsIicGhqQRrhrmMLlzZuUwWAaAamRrpPVGggcgzXxHlLGghaAtThQqwWHYyjJZzZzeEbsvOoVxPAfXfFtTOoxlLNoOgtTUbkKrlLAaGJjPSsgGaAJjJKsRvVbtkpPJjnmMlLNinNmtmNIiZzwWnfFtiAaIbwWajJvVhHNkOMWddzZGiIoeZYEeMaTQqIOzocfTfOhEnGgNjJevnNVOooLlHhEDPpwWlIwKGnNgOWkKlrRZlLsvVGgBBbDQgAcazQiIWzoOLHgxbBIZrxXsQqcCAHhaPLyiioOgDHhdsMmnwYKkyEBbeIiWDdjJSeZzzToBtTxqxhtvVwWexXqoOenNasCUTtDfFHhvMsQoPpGIJjigLNuSsFfXxXxUDdWwogGIZvVCrWKTtnQqJjyvmMojFcLlCUgsSGoOfFHmWMZuUlLvVDdBWAXxVvwdBbqSsQnNCczvVZqFfRrPpQOozJgSxQLhsSrRMmEahfGYCcmFfMLrRQpEgVcctTCQhXgrRlLGYydDfJwJKQGzEeZdCcXyaMnNMmmhHeEwWGxDzZYgwWGyBpSlLkKsmaATPZudDvbupPcjJCfrDdCXxgLrxXxXmMhFfHrAaVCcvAbBquqQhHUiImMjQtPpFZwWdDmIlLkKJkqjJfkKdDRrMLlXxefkKTyOTtqnNqqQquLlzZUQPpnKkRruUNeuXWdyKkvwqQZizZITmMKzfEXgGNRlitXQLlaAbuUKeENnfFogiINJjScoHhcCIiRqQpPvgvVDlDdjfRuUKkrDdfFFJLdBbGVpKrewIiYlLskKrznNahHQxdDfPxGgXFUbBqgvVGRrMXeAAaWwZcagYYyugUudpSsoOPpjfYFYGBjkgGrRMmCcBbIHgKkRrGrZjPgGgvkhOoHhRjJXxTZcuPpUbtTeEKkBTtXfFlLcClPuKdzQqZGZzDcSsRrvVjdqtsSSsTNngGjrRLlorROJcCxLlzVTfFzwWZvVtTdrRGgaTUutHjvVYnwWNUumpGgSxXsjJsnvVNhOoeBbGCLlcgWwpZzKhVuNbWBHoOOhYVcCviQVrRKkCcuwWUWwTgtTGtlLuqkJNnCpPcHBbocYKpPYXDeJtyYSHjugsUFfusSckKmMzZnuUpPkKkgpYLvmMazLlrtmMDUHuUMjQTtqxTSTtcxwsEshWwHpPUrCfqzRkKrXTtiINeDdLyYcYyYyoPNnlQleEyEJsSsxpPPpnIXQyzNnZSsUuYGgFfqjJAJjBENnebvbMOdDfFuBwWbQpPfdBbTtsOlUuLoXwAHkdPplLUuNnrRGNDdBbnATMNniIoAanNKIikKefFpPEQwxHhLlKUudDZlLRrtlfFsSMIqQuUoOimrRRYyswWYLFfloOwfrRFWjJwWyJfxeEtpBboOguxTtXenNmMAHJTlpYPlLXxpgGXxsaCbBeJjWwENRfCzZcFbbIiLHAaDcCCcxzZkMgGKctEeThHCQDdPOoVZZXbBKkpPDQqdhXxBxXbHeoixXrRjuMmPpTlrWgnNGwNfFeEXxnAFVvnNXxrpjJOLloPsSSxvfvVgQqGBgGbkRrKEetLbBLlFvekbQWVvmslLvZWnsSaOoqQAbQqXxWxqOicCZBbFHhfMmGgYWnxythHqwEtTUuyqQRrYUHHtTaxeVYGgzZAazZysSSsBbGgZzqOSstEetTwWwOolLbzZfglLNyYnDdGKkdrQtTHXrRxkzqQqKkpmQzqQAIiyYaXxIQlpFfHWBbPpDDddDYvUuMuUENNRrrRnnfFbBNPGMmqZMziOoIJGgLlbzZkKBqcmouUmgGMXxOkuVqQQJmMjFCcCRCJPQquNoHhfFaHhYbBBbNEzZLbaAWGgvxOLlzZueGgjJEURryIuajSsKYykJAUpPsSOoieTdrFhAlWwASzZsgGUbHhMtTucBAaBFmtPjJxznNlLOCesJjfyYrNpGTfdzZznhSwBbzZKGgsLGglhHScpetTzhQqkLloObJjBoOzJpNniwWSxWwYbuVfgGFfxXYlLykAXtAxGXUXxhhHHOfFmjJLWDSsdtTuerRLlFLlovVBUzZdGgBbdDSyXcCiLlOoBAEnOSslBbToOoOXxfFkTcwmDyYpPUudrXxGkKpVvfVvclyYLTzZdBbJVvLBbkKGFIorzQXxskKSRrQqGVvaUrRUzhHZNKspHhRzVEeSsvzZVvNARLlkKuoOUZXxFNnVkKgGvyTZztUPpoONSjwIgpoOpHhjJxcCJIwGggipPJmsSMjbGgBWnAEejqQXpPOGoOmMgoOGgoKkLsSlsYYywWAPpaAHlFCQqhBPJjJYYXGgbeEBGRrowWjJPpyGrRxAapPrrGlLkwWDNyYLeEtwWiITEJixXIzGPTkKCroOaoUYyuPpqQGgLllLlBeUuDIidrqQkFcXlLxxXCrUMmGbGgNwvVojtRrTJWwEeOsSWfFaHNniIeExHLxXsSqtpWwPTQvQLKGHYSqNnqQgGRRAJzZtTvVjIfNaZMTEeVvLWwtgGXmbEeWwuTtUAkUuKSATIiUQdsLuFlJjLrAafFwhHGPkKHDdkKMXxMmmpPpksSRrXVRWaAyhHuhNgUOoHfWybtTgGHJSsIiEXxAfFakoFVlXxvvoVqQvLSEeCcQkspPSujNnCcJIOVpPpcgkfFNoOVwxXhoOlLpuUMmUUuXMNnTzyKuUkYdqBblLyYwfjEeIkBfFaiISRNdDZEeUutTzsSqOFUmYtiBFRhHrfrjXHnNUuheExYyAaDotuUTaAOCccqWwmtTMMmTtqeDDMcvlLYyAvQqqWiIeEOpPDdmMnNovVlLYySsVCcmAZzeEuYKkyIiCcRCcPpEcAGJhHXYfsxBjJkxVvWwXrRieEsXwrCfBbYEjyLlXvjJBbzrGgaAnIrdXyCQOgGhHozcuLlUsPpETzHhqIbBbBcdSsYBQZEVveBbEezRKQnDrbkCcDdrAaRByyYYblLClDAadLgGCKTtoqjJiwiIubBNnnnlnkKIGgiIilyYLNoOVvcwuUgyYrIicCBbsYySNrqLlNwWwVEFiEUvVWwkLlEebPAapfFBjzreLwFZIkKDdJiEkKeOotSsKybBYkAFqQfaOIilcXhmLDcCdeIDdRBbtTmiIEeYVCTflBbZyYlTtzKwvVZGgcFEnToOGafqQQqYyfTtFrkkYwkFcTtCiusSkKInNgGWwihKQWwkgGKaAKksSReEyYjydHhUYJjpPyuJBYrLRrKkXNzZKkHTEgkbQfFqHgJwPMAOTzZvseExJjwjYdDOkKwFfWVqXbzZDeEdboCVvcDnNWwdmMfjnNJrRzjhJcSxnNHhkKoOztefvYdHTtoXxVCaRhHIiAiIagLOobBavFHhBTkKiMmAalKYykdfaATxXLIAaigohAuHpFfHhwIMmHhQUuDdqigGoOTUkxXTTvhCtTcHIjuYyTArgGbBYhHbIxQqRMKaAkvVeRrDuSXZFfHzZhNXxhkTNnodDXxUuPNnMXvJAOBbBbPLvAcCazduEeeEyZlbPpBKHhGpPoQyxqQcHAahCfKfFNkKFgsRpPqMGgJLlWzIiSQDJjJttMYjJytbNdSRwWDFlDdZhNrLlqhywWuUHysSrUuRlGgkKLYKXQoOFvVyvVYNnIMmiAwPpXIhHinNbOoXxEeBVvIaAFfsZanhHNfKOofFxXMmwkLYuxKKkyubTtvtTJZYFTtfTtgGAaYybByKZzkTMVOwQBbDjluFDfFdfRGoYdiKiYCcEenNgGspMlLmzTsSNnUBbOoEeERncqQFRCcrjJfyZgSsLltmfIiFMsUuhHQJiYaeWxYyCcIXPppFULWwHKRrxqefFZzmuqQkDPebqQWwNnpPvxnhHCGgvVuGgXKbBOsSDSnNsokKQTtVRrvNHkKaAhBVvoRzZrOxXLcuNoOquUQnUdudkBbvVBafECcQyGtTgYUuDdyLnPpIjJjJdDiexXWZzbOTtoBVvimktDrrrrRCbmmqZtwJXxjjJXxpaAPLlpUuWwWwCcxGIwLldqvMlyYLKkdSIilbDwMmgGjTyYgGtQVAMfyTtQUuyebGqcCchHNnChHIgGsSPpHBcCkTnbZRBtjNnRrJTaFfrRAaaFKkHGgmMrfICclLEmMXxeDdssdDjKkJUulXwiIkKZOoUNCbHWwbIFfibtRHiwYpkvVrRYXxVvyrpPRrkWGAyVvCaIMfyipmMZfbBQQRDdiHhImMxcyYCXfUuFEVwWPkKpvrJyGomSsnuCWHhHJjFfshpWTOFsKkSPpYJRyzZZgfFgnqQPXsEeSFfDsSiaACcVKlMNnOPLlFGoPggZilLIkbOokcDdzYyHhZHrRiIeqQNOoEdEeGgwWYerRCcEEeWueQqnlDnGzBVJlLpPfNIinFjTRrBbSLpPBdvVtCvAOoWsMIOVaLUulnNlxwnNWXkdRlWLPpMyxznNdDXxCcsfUjOONoOiWwbBdRrTtMmfPMIiCrkKToOfFKtTUuaQQqIAXhyYHBeIAaiaAzffybYtTFiqJcNiCcOikppmMxnNnNahHNQGPCOvVoOBboSkKsBYyfFpWwbKkRDqaGPpqVvOoUuzZxUtTJjRreEVlNpPUuSsqRrvNDeEdnrafVvvFenNrRgQqDrJxXKkoruURKfFbWXzZtzZpsVvSEeGgMfZzFiOoLlgxSsLJCGflLJjgQDPyYLasnfWPyQqYeSsQlLkxhHXFfKrRsrPSdDsePbkNXxedYyNncCVNrRFDdfoOEoLlJiIKNaAaAQqszZLlSnNiAaYdBbDyIHRJjlLsQlpPuULdDEbNTTUugIiNLlpPYIzZzZDPpGgvNnVKyIiYQmMqEEePpwWVsAIGMmtTaYyKeEMeIsVSsckKRdugOoGKMMKkEdDTtAtBfFKucMYmMtrRKxYuJFXEeumMUiuAireEKkdDycRrzZBtmNnFfwWXRVzZxXvyYZzqIiTtfIvJZzouVOoSNRrZpMAxcCqmMaFfhHWibhKxXkeEHBYyIwyVlXxeECctmvYPbglTpFfNnvlIcpPCEBvVbUfFUxlRrJjUuFJtTjgHVfFvvfaukKVmAeEslLrTSCIicHNZzhHMmHhCAaMmIfFivbBJewfcCFWIcrRRWoOwtTwXxoQqkKOIskKSdNnGeEgDgCcLnCgSiIhHUpCeWcCFfQFdDSgGTZeLldDEJzMoLzZlNnOamyEBbTPpaRKhWFfUTyVvrGLAPHUuqQJoOHhRrjexuNPpUmMHpRVvBbrOoPhAnVEeMqYyEDkDdhUWwlLQxhTQFzQqCFPpiIfcZAafxkKsqkKuCRjJupLMmlMYEgGeHtpFlLONGjmkdGgDlLskKykPqRRzxXxXDSsxrIirJbBwKtlqAkKaPpQLVYyeSsuRCxCccmSYchsIzZekIkKgGrRyxXHIihTovHhDGgZJQjJQZWwzSvVbrxlgGrMYyjcImUJJTDoOdJfFUujqXxFmdDlmxvVqnNweEEeLLTtppPPlAxNnrRqtTTsTPpeEctTIikMaOoAWXxypyeEafKHkKhzojJdWwbBfEehHFjaqQkKAkWwUuURtbSSssNmZJagGoOAjZPpYzZKsdDmSsZSsTtcwWeNnZzbBkyFgMwAjXCcxBbQqCaCmCLlcMhHGgCnNAwhZinBbNyhBeIiVvyYNQqSsnsSjYqVvlLQuWwInTtEQOlPdsrRSjCcAdaUzkQbBhybBYsTtHKgnggDuUpPkfFScCstTDvlodDLlAaPhlakKgOobiIBLpPwWFVLldDmrRYiBbiwWIECYQBUiIslLRWwwGxXtTdZzOoDtLmPXmEGpPwWgtThHcwfxYxxFoOwLoSpCcPRTCcULrRlOjTtAtAyYiVvrRdshUugwWGzZjJGSjgGXVmMjyYvCcmMVSsppNnciIltNqQjWMotTEhBzFfqQZOKexxMmZzIyWcxXCxXCyZjvWUukSsMmUhxXHuKyTmjWnORaAcwWbPJjpTSPVMQqNLlgPBbQqahlaMIHbBhrhHsSyuyYUdmzJVvNGraAiIRWEgeEyGnNCcpPlzmMXxSsCKCDTDdvAvVaCWMmxMZzuHhuwWEeBBBSlLclLAaCLEezgwWDDrGbvblLBbSHTLlsvheElQqqlpPLtTkiIkKKkRrZKkUxXuzvuGsgvHYYosSwIxJjWwllLfFOoxdDBgucWwWOdDucArylBALlUufAiskKZUlYnADhKUuACkVkwWwDnAVvavlZzGgMzZcFyhHdWwnOoNFfDpPKksSvVWwaCcSFqnNLlLlMLbSPpcCgDYevVEhHMADpArouUZFmVvMgGfQqwoOIiPIMrRtQFYsqESseEuMlLmAtTSOiIwYxEjsEFfiIenGgNDyYlkdwFhjJOgGoBnHhukFfzhaxJGCzZTWGgHhckXxdLlJMvwYybAHjSxMOolLRuUhlLFfbMMmDZrRahHAzSkKssScLlMmCdmmMOIiBFfHAfjORUuruQICdRfpbYSxyWvfFVmMqkWgGgGgPpliILezhZrRBBvFkBXxkKShGgkKdhMKrEWxHBbVzZvowWPCcplQIqxXCcImWJSsbBjqgGeIAdHJjFiyYIfWWDgpPGudpPDdifFBbYyINcCdOocyYCDbtiITlLBzZnjhwOrRVvyYdzXinNxRzgBJSIqUuTNsuUAYksSkiPOoDAaLHygQqGdovUWwcTtCTtGgcEDMmjJvOOMmBYBbywWNnkEAdDEJPMyUskKlLSGnNghsRPHzMQqcUChSsHyRGhmUkNnlXuVwWjJvUxdDiHAaOVztFyeYwkrKkRmwuUsaZeHeZytvfKOoPgthHTHhhHWKQqIAGgyYaiQqkwydDDYyeERlLSsRWsSXJuEerJiIhIiVvpPNRjzoBXXxxNnrlmgmMJjDdGoOJjZPJszOUuBzZVXmVvMnMmGgIqQWmLTjOooOJPvoxCclhOJzZcIIiiskKSCcClLTTtPptlHmJjLlPpQqMhpPKImnNMhHhEetieEVvaAwhHWtUuUAAGQmUUEgYHZiUCDdciIsDaipIxxXYyKRfFAIPzWpPHJdDaKDAnPIuBjJbYSMwWAlyYMOPEaAuRrFkJepJprNSVvgKMmYuUMmvZzbnHhmvVAaPpnNCOgGIWwJERQlLXxDvVVviIdcCqrwWYCBHvTthYMmyIinNOoZxCcZFfdDjJlkEdCcppPPcCDJjGOulzeEkKZFpbBgUxytTXxxXNlLcsSHGGpPmXxJBbTBbQqDPgGtgGdLBblAMXgLHMyYBeEbBgWchHXxoOZbvpFCuUFfuEuRLlzPcCpZpPnNBbpXCckPUTtYXWDDARrcwMmWCgNofegxGBlduUTwWtDLdDWMmBWOyYflbYZbkxHhXwJMmqXxQNhHqlLYyRPDeZueEUtkQqeEFfKjJKhSHINnQwWJgGWzPkmWwMKyjZdAkPdDBbzrwWqifFImPRreOovVXqPgNQlXuUSsoOZziIIbRrFFfyYbBrgGouYFLVvjJevPXwvVXDgGgGZzXVCKhDdqgQTtuUuPpSQdqZzGrRFzJjSPFlaAAarAzxNUeEvGbBrfmlLpWhVlzZBaACcgMhHSfUGgiGwMTlOvbYnDkKVHQYQqoxiIOoqRqMnNbrsSckVvnYgGwejiHkDPHDuDdJjpQvVlLqQBbqQpvVPQEtuoxduTtrOAaBaxhSjJZWzZFfjJsqffFfFxhadXzZtoGrQyYkKUucCxhWxNrRSsKkeEBkFfTuUDaAQWoJcUuuvVyYAaRfFvdUAaBzqQZZdCNFDaAdaASzRdDrYyzZzZEeDfdDFQqgJjGftTQqFdodvWeKcCzdFjJNVbRBHkKKKkbMhHmBkvVzKGSffsVQqqxoOxYyScCsuGtBiReEeEeEffrrRMmkKAaDuUQKkjyYmBbMJxPmpPfgGRxsmiSOodDsShHgOTwZzWtqQHpVvXxPboSsKkOMDdDPpxDfMdeEQqTLoYmaGgtTAinNOoFfIpwWSPQEfaDdceEmxXMdKaAhpTEeDMwWOqDhIbGWHfFdDmMeJuUjexOjFyykMmiIKQIRYrxdorRfGkAaJsEajEVzBOWvSKksVJvVKkjwoMgQbWZKkrSdPlWwLflwWFfuCconSiPpRrtTwbhHlLBdDaBDYGDoOlLzucaotTgtbrKVKwyBZQqwIPGgwbIiBWxmgmMtUvVuLlUzHEFTtfoXxOlLTKnlyYECcmllLMYTtlLZznxwkMtANlGgddzBCSTGUoOsQZzPpgFnGSgxXGsEZWwCcbIiiEYvlMrqZiTPpcittBTkKtbroFfOpPRfuUFsSIiLQqeElVSsbXdPNIlLpPlwFfSQoQYSkKsywWlphWkhtyYiytyDXllfFMmHJjuZqGCVDYydmMAoojQSjTiICcvOaAdcUucDavVssxBIioodDEzzZrRlAarVvRzpKQqZRkKTHhqFGgNvxGqsFfSsLYylSAuUaHJyCvvVPOYyDwWdvPtZnuXxvwkQqKyViIijJqcqQNWNdFIXJjxXwcChcPpxXCGglEHfqQonzZAyHzdRkReCRCgqQGcFvwQqHhdjevHhVkKgGtchAEtlLxqwWmMQSaAYotOeEhjPpPIfeNAanEpWvfezZZzWBbNawXoOxYyvMmGqQOzZeEogjjXXEerRYbWDdiITJjWHhwpOfFOfQAgGhUjJHnzUuUZKreZzEbZNSsSsghHpLBFxxXHhPQqkGgIirEVDUSgvpPVQqVwUuBMaOeTYeLlRrSToWwESsEaBeEWwTmyDdNsngGkaALncrYZsAEFqQnNomcyHmEfzZFeykKmSpUyYOouPsGkHkjJIiGglrYFgaAGLjJPtMmxXUBDNvwJjWnbBNSQqwjJbmDEeseaeEnNTtIiGaHhWwpvNgGVtTzZfinRrBRLlsSrbRbWdMiIJfibeWBxutTpgGZzlmZzjJODvVJJMsqAJJjBHiIgGIiOzFajzSVCcOoOovDdXxuUJkKoOhCcQqTtRBkshHqQBIJjwSTJwDdWOAaqmkKMjJQkIiWwQqKorRbBQqizMlNnpKzcpjIiMRrmPmMZzpJWAafYyDkJjQlLqAbBadDKdtkKTblgGXVhHRusqrovCHVRJYgGsHaANlBbLnNnYyEyWuoOkTIifEHeEpSfFZzsBlXeXKtTTtEFAafmyRRnOozZAnKAftdDjqcGYnNRYbGXzZVuTsJJjjkZzLEhVvBbAQqRbGvvqOpvcGJieyEakxdGLdaVIMPpmiWtTYuUpQmMqAaZzrReEgZoXGqFsVvGgchaToEeuUyibPpBWwIQSsqCcEHVAFgSfbHBbhBbUIiLZoQtTfFqtBbueHYsmMFPABbaCAhHagyUUuLNUVvcyYujFoYtqQqaGgZFHzZlcCcCNOoMmnJasODdFfFcsiISnOrRoNFOoaAhHftCmJnQqlWEiIDxWfPVlLDPuYTUSOWeEuUdAffpIekDnKcDdHjJhCaXxFjJMGgNvyYHMzgoOUiCNOmMEejdxXDrqxXQFSsVCEejJctpnNpPWLpoAaCcOFfVHAjezYQkdgGhHTXMCBvBMfcCNgZUuzaAhHdIbBiiIAEYiuzGkrwWFvVfEeTtxlGIubqQEtOogGyhafFANnjRGNhhHSsBeRFfFKtznUHrRTsCJssXlLPkKRrpxSSqQjcStRrhuNZTkfrEbXxHngGgrJHYTOoeqQBYyUigLXRrRKKkgZUjJIyAaeaDBbnXaAxNGnoVvnNBbOcaACHhKPpkFmbVbcmxUutgGDsSWwKqyiIZAaEJahvFfPlwhHPTvgGfRJhRrHKkpPoncIuFfGgGAaZmcChVMmnGgmoOjJfAkNlLyYdKEiPFFUuaDeEwoaAsutyxXUpdeEvpZzFwXdewLNjMdDcTFfhgGHCxXfoIiSATtaAjNNnvVnLYUucoKeRrEkOCysShfLlzAQTyOfJUONnFfoLULlulCunPplzZhHuYGcUjJupfSyhEUTOzZzluBFZzsGfavhRrepPYOtAHCSfQgxOzGVvWwPeEjBbJymZzMwvADlgDIiXTtKAeYEIjgCVPTtoXxQUueEVDdVgLluUXxBraHoOelKpPStUvxgbBByrCcygyfFYCBbQJTPpFaJwWjkNaqQNrrYMekxExLbPBbhewBbWkKTtJjtTFkKsStKoOxXUKkwYeyYaRrAuUhSfFGgyYyjrvhcgIiGUuVORQzZGgSUrvHhLBPpFfFwPCuqQUZKIiGgkkPLmZIPpUuIisSSsqKkQjtJdSsZgGzDjsgGWibSKbpPrZJjzHVvjnNsZrFfRJSKksAfZoeEWUuzZxiITAatXdDDdEewhbjaQSOwWokKmjjIiKsSYykdomwWMokKOMLPUXbwExXBIVvFjmDwBrNIoWjPpWwPpMmJwOFvpPnVPCcAgtTAESEeAadvVMuUBWsVndbzkKZuTpvVlnNnQqxXNfyRLSsKhKgYoOyMYAZzaMhYCMWwOlLfeaSiLlIvhHVzyRCNlaAKNSnYMtYyxXbAeeuUmMjJOtslLEytEmMoXxTwWtWRzZaArwAmbaAEeuUWvGsuFfdveliILRKMmpHhKkXfEeblPAaGAByYbasSSskKnzBRkzuZNkKhxXuHaqcCFooPXxQqwWtwNnByxJjxJUuZzJSsVuUWADKkyYdnyYyYwWwEFVlLnNwPFizZcCpJHSsoTOycnNCsqmMQXRYyrlLTeaYyHCTsSEJFfxXDRrWqQVfrcECcMZznNWwmWwIirKBbrDKkZtTwWrRhYaNOFheLHWxifDfFxXnZlLkRrKzwnCQIvYWVUNzTpVbBlLMdDmopvVVcYPpjKkhQgaAXVhHnfQtkKrzVvwWkPZQqLZeTvVDdtOObXSSXxAeEdVvCCDoVtJsqJOOafpPFvvVAacgQzUPphLVvLxdYTYITHKQqwHPLqOqsVvWiMmILieWwEnDdpPpDxBvTtTYVvyTtTICmMtIzQRrRmLVyeZzIzZBjJzegIiNfGAaqSugtscbZDDLnaWwlMmLTEemKWpPXAaNiyYMmIymLMeLNktehZuBvVbTkKGHhMXwWDdZzpDdiWzLlXxbYWkvkKkRjJBTGOACYyUZdgydOoiIbAWIsNOULFpDsRzjSsJwEeDvVLlhqQiIpPHdpPBVvPVvpqQqGmjJbZveJzZlpPLqQAeSFfjKgUuFOQqGgDoOrRXSsRyrCciqYYXfFNnFfxqQfLlJoXxaAXpFfPEEhpPwgwWBjJiHdQWwomeElLdtnNtTZzPHcCTtMmkDaACxtTXAFXxeqEepsEehHPaGgXxAMyCcFfOeEltDmFdXiIdmBfMmFhTtouSsUuCcUGEesIMSXrFfFMpkKBbXGgqdgGRQqFFOojJgGrIbuVYPcCpyvUTgUdCcDXDdXQvcCSFFsgkZkKnoONhdDbWwrBvuXxUPpnfDZQqKkkEwVDPpOTtDwIiWdEewWZsyYfxXncDzbyYutHhTqQDVuUfFEerUdDJOojCjRrOwqdDGgdmMUvVufFmMuUtKbnXwHXGgbBMmbBqRgOrRDdTxDAPpLlHXFHheEQSwxpBbPXcRXxrCzsHQqXAdDboRUDwjJWXORrUTlLeqqauUAPXxUdwWhpyYdKPphIJEWyNQqKCRBmQIiQqrfTtFjIiJVvQXOyqhvdJjNyVqQvBVoLtmWwWgIcCuvVFsBbmqQuHhUGbLvHwjJwWPjJMuUFRgVezZEuhHnXZaqQRLfBbpsgGZfgQPbBpDqsnSsNUPpqGQHkqQcvxAVvaBcCbENnedxvVWxpVEbBsSlfyUOMmRVvqQoOLgGlfjJHWwhBdDixLqnGpBOovVbQxqSsOoWYywQdDIieEEpPpMQUKkuSssSRZpElLeFNngBbCciIGfxXnNKadDMJjmDzdDJYqQpZKtTkwjwWqihsbAaBpPHXxgGJkKjkTMmzlLEdpaAiICFfHWPXxpwEARraecdBbDChcAarQnPpjWKBzyBAAaaLFonNwbwYyOoCHhcbgXGEFOnoOGaddDdwNnxyTtupKxPPsJjSpreBbEUyYXxeUcfpPPIvViVbBBnNzCwGNnAabmhlGJjxmUjJuahHDTpdEaAeteEuUjMWtTwpPgghCyYnYWaAwRaEeArXRMmKkruGPfLUiIogAawuUuoOUWeKLqXxQeENnQqzGgXzaALbBlwWHVvRrVhbcyejiodqQDcyNnYMnNEeNBZlQyYqFfLzVykGsnRPjPuUEjKkKeEfLleEUepomLAaaHCchwWmsyUiyYOolLlLpNadkAjEbBehwAaZpiabBbBVvEedDrkXiMmCMEqQefFmcvVSsPIAbBXxqQdTtDdSiIuIzhyGeuuAeEaMqgaaEeuTEeITHqQikLQqjJRrGgjoRrHLzZvVtTXOVplLtTtlMwiNKrlLRkxvboZSjpzMLlLRbOMmZEeJrnvVJjHqwoOWQjRrRUjxwpPrgGZFfzlLrdYkKGpAakFVTYzEhEzAWwCxXcxhHXSWMAaKWvQqKkVyEYqkKQZzfTZvohILKlLuzZMHlfFnNWwLgrYhEeHcuCmZhprSHurRYPpmpWjJwcCjGgeGgMmaeOoKbmMidTtDIooVdsSeaACFfueEVODWwmAUuaQqLlXxmMMjzZJnrDdRNYhltTdpIKKyNnXxaSntWwjJQisjbGZrXIxZgGDcCrRoWuUHJrRGgDUgGdwwsCcSHhhkKDaiEQwfFMdDijJQinNqcCGgLjJWwYyOZzhXpPwewnNKkWAaRkmHDHBbsbKdeEDfVbIipPbzVvHZEPzdDqBbQZpqtTQKkGwKZzQfFwYXsuUVvyBPFrDdDvVcyYiIFfiqUsSoJFahbVvoOoBHrmXsJhauUkPpiGgsSIKaABvIiVyYWVmdDjDKaJjACQqiQqIrRwtcHhgjXAHZkKkKfFKUUuNjOoJbHfWDKxXnKkNQqEeLUutTcCtaATdSJeXyWobBUusarRGUugGxXuUgUeOoQSypPfGTtgqrRTKkmipEAaeWaAIizORajJPdzZamydOoGsEeBlmQfsAcnNCoeEOlLkhHKAaYVvfCmrRLVNdWKvKcsSaKkkaAHdnLlFftTBbNaNyLbBuzSkKdDImMmMaFiIabUuGgLYyZhXxHzYRCcaaACUowCUGEeaAbXKkLXwSsWiWOySsyhVGcCSGggUVKQLHVIiSHlLhtRJjrhsBbkBbKBVBgRduUmMkKdKQzZzZlLuhHUqkSDdsGZEGgajUDEeduJAelmRrMsbtTbIibUDdUlLmXwcVdDtoOdGgKkckmMcumMUZLgYGNQqmMnewgnjeNnEYyNnNhHSsPVvpnVjJvZMmMUuDYRimAZzLHAuUBbpGndDQqmvpnNstBPpCroNwJGgMtYJjGgAarRweEPpVicCLlIJzQqeEYcHhwOoYiXXEkOoobHeOmNnwxXJnXRrxTfFLCPPiIaAJvxJsgHSwWkKDIDdaTiIaJoutuUrsOlRrWgGfXXyFfXFWCwWdDeGgSsMxpMlTTtgWKkEVJjverSubqQqycxXeIiIDdsSyGgbBMvfWeEwlGALHpOLVdsSKdGGNGGgkhSjJHqWwKTtZuADaQIiqJycCTtYDJEejpLoqeuUBbnNfFNiUyJBxXbNWwnEbHYIzZzHjqQJWacAauUcAcJaWmGfykKgGYYKrREmkKMfFCvVzwWMSkBbyzjJzMnDdlLeEfFBCcTruKkaAKIiJqQKkWwDOZmMkFAYPYwmKjkWlLwKJCeEtcBbHhCSWwtQfFXmMaKklWeEMlLkKmQXDdMLMCczZfQcCtfFXxjjuMifFOoCJmRLnNPpXRBAasqqjrVvRzdVhHOtlPpLYiKEBYybiSHCscCSXxysMCXcnNrUEvleJjELTkWRrjRuyYUXuUxRXMmGqQJjgcCMmdaAVvDdWuUwZrrsSnNzZBbQpKYSKMPpJgnofPUuTLlhZzuUlLZiIzymnNFfkKPUrSsKkcTtbBVvTtUQSXqQqtHXquIiHpPKdeQmvNrRasaASunUMmXEdDqQhpqQalUnNugRRrYtuwAaHkrrRAteqrRQYMkKAgGIimMQqmZjRrsSztsftTlYyLoOpPpyYPqFfQVvqwEcPusGcNldLlDGiWrCiEjVcTteEnhstRSzZaMvSswWULlAqQFEvVeVhGfLCcXuhHuyYWLldDweiLVWwPtLiIGBpyVMTqQLvPpYWiIwAVvQNpsSPBbvVBJzZjbnlLXsSamPznsvUXxOjLlViFQlLzZCpPcrxMTiIbCYCcGgRIppPPaUIxfjUyhHXsSkyqmMQYTrRytTmCUkXxXxbTOoaemmkkKXZEeIOyYXxolLizJjxoOUDrzZCvSiEmTtUukALlcwIiWCAaYyOogiaSvWwekaAxXyYQqBbuBbUdiynliILaAOoGttsSnBeZcCWwzEoOeXxqCcvVShQVvqWbBlLwdDHrhHhcCnVvkjUuOcClLeNnnrcCTtRvqQZzgGDEnKBwWpEpZzxDdIiOoXRSdDMmzZoOkLTtMmPplKHhIiPpqEpwFNojJiXxIBjQqJbyYtTOSLlYyAlpdqGtTHhzZCcTtFgcjleEIiXxkKXGdDIZzmPTxMmZzwBkvCiIcVObBjRdGExXfVlLFFfARoOVQDxXPpdnLvdDlLjdDJYyuwWXuUGLlEegFfXxOoQCcgzZAQdrBPbjJcpgZzqnAXlFfLPPKIOoqQoInsSeECjMgGmQIfyBYFFMmZQqEbhOoHxoOaiTlLlLtPpqAktrRhHRCccDqQdmpFDSOosIVvqQvVnooIiTtJuFSZXYmlwUrRWwYyuvVLQJjqsxeXxENnXSrPpDKxuUXnNLnzZNLXxlkKAvoirRsSFfMmRrmSwaVzZcTeEkKDbBbAalYysXxuUmOoMmMtjJvjKkJHhxXbZzZSsgNzMmMmZdiILNEyYUwwWyPpDHJgGjhkKekKkmdDMnznNZNKnEBbCchDKkdEezYyZCKBnNKhHzGGpOYyRrgfpomLvVkycCYvAaOoIdxpNGGOozwXxRrCcIiWfFFfYlDdLrjyfokKtwPlLHRrSZzvVFfuUvVZzhwcURDmMhHdrupPOouUUNMxXOgYxXjWOowSsYyRWwiIsyYgGmLlMSzZNJjnNneMmDdrqqFzPIYFminNnNAMmcXxYagwKRKPyVZzvWSssSIeLlEhiIrJDdHDdhOuUojTBBhBcnbBuzkKOoWxLSSfpPFcCiFRVvhfAAbrnNRrzBNbBtTtKeEzmGgBbMiIZbhweEIizZWiQAavVgBEBJjbYQqqFeElLfYFmavVvkAaFLlfKqJWwvVdDWtTBbdZhHzBLsfFDSsYrRyGgmNnGBjJAabgVHhQRrDqQWigXuZzUBrRbPlLIiXSsxOoyYwWNnWTzQMMsnNSBcRRfFRIUuiyYuUqQddDbBSswpPWTKMtkEHhetTKTIwERrlLNlDdKkKxXkYqeEeKeEeEVlLvkFAbKWwDTtUpiIPuOojHnNhJUDHhClsSoOcfFCbuXcCemMExUnleELqQiIqOjJdoKkkBbxUcHJjhLlNJjWwXVhHDdSsBAapPEFfpdVvKUVvulLUyXxYJbBjMEQXkVvKkrRhluflLSsprRPPxibBvVmMXNnQqVvwIfLlFiEApPyIjDdqSToOwWGTMmthHQqTtHhzYSsUuBbmvVMCNrehHutZEePSaApPrQjJwWqRHKkhyIkqQIeESTtswWDyOszZSgrnNULJdpPIDdYyiqWNnovmDdttTmMiIzjVBUXxYzZSDdskXQqUylnNesSEgGIiPpKWDdkFQqWwAzSixWaEZzeaAEUXxqYyQQMmqVvuAaHhaAPHhpgvVlLgUuqQgGGGebBfLgFfGlqxkFfhYHZzQHhRKknBbHhHhHzLftTdrPpTtsqQDKcCknBTmTkKTjdqsHhEeqyYQaAZwIidDjmQrSGLPplVGgZzvfnkFnNXxXYqrROgeEYyiIkLzYJjXxUDCGgcpPZVEekKlpoEekKaZzjVhHxXxKuUxXkBbmtTpOtKHnrRgGzSshHSvVsEexscpPCrRpPFfUdEeRrETUKjJkXxsSutAsSavTtVmrXiKkBodDOGzZkcCKMmgsDdLlSyROurlLPpIiRlLUDdDdomMatrRUJJjiVtwWtKcCuCmnNMctWPpPhUaUuHdLlDOGeEltbBFDLDdInNtBbbfVArRKklzZGfFMfFmrAKkcvAaOhDzZyVFETpPZXsNnMmCjxXrKkRDdJjHJXxZFOBASsaBxQvoLUubKkBlyJWXKkSVtoampWjGBbUuhXxBrRKGethnHhxlRybjDhHYCcJrsSIiqFPpfkHGgUIhHfKWyKKRIiFAgtcCNefxXCzWNnhHrRkZLzLFtDdcvyMMmriElMHxCLoPpTIirRUuIjfFxXizfWlERUyYubaABZJbBQpPvVOojJqKuTteHhaAMmIfePpvWnQRnmMRGeDdNnEWWGgwCTsSbhHBtLNzCTtcZNUHhWILlQOQqkgXxGcyYISsiUucOoVvCcLlSYDdydDsfCcFKDdBRdNqkrZztTqbyaAJjDCiQZteOoSCZqzZwWdDdDJjcdDYxbBDRiNcCFfRZsSVxYJFferRJjyFcREeWxSJjIeEKQqkKbeEXbBSFyTtxuGgUjgapPCOoNnerBoOjJbhHjJMmUyYaMVvvFfwQVaYyXxVCmEhHrRedAadEpPQQCFfdyCcYwWvVwWJRbITyMufoQSsnRrreEsAKkbKiPpBbEeJFWyYRrQDKSsFfkKDdktTHhAaZtAamxhHuPHWSsvnKmMMXPpfFpPxmfFGCPvoiMmjSsEeJaAUsCwZzCcEeWcgGowWHGghuiIUOqQwWSKqsRPprljJVnNIiuUyhHYvOwWVnNkKlLXmMqQxVGgLvXxfOKeoOjhiIBaAYwFhwWIiuGnHUhHYIiwrvxKPhQqpgWRfIiUHhRrlZVvzeEXxsSSSsDqusSsStassSXxOoaBMxXxTlthHmKkzAniIFiqQZzarrQsyhgzZdDklqVKklhXogGOiIhAnZzGTtgUuBgueERfKREbWIiwLOAoOREwWectpFfgZjAaelRrnduUtTKgRRpjJPeEXgYOgxyyjpbHceEEefLhIicCVvAahnNHsSaygGhHIiaASeExAaJaNwJBbOoPpQxXMmjQmMqJyYXxqzZjqQIlLGwbvVBWWijXwWPPIiGtQqbKkBRrTinNIiWJsncbBCJjuYfzCcranZrOHhoxXFfPSwWqsSkKQknaAuWwKkjJKkuAgyYqZROlLcCiHhfgljmkqjJQKMVvKkAaJjDtCcmMWwCQqFPgRMWCtMmKSstLoqQNIiIdDieahyYVvHhfIiFHKkbIYytTxYfFszZDubOyYfEUwlmMMMmouyLlYxlLeEgYyXrRvVatTTHhxKPpghHeExXGfFkabBqQKFvUByhHGgXsIPSsTkKtJjjZKGgiXxItTHZREHherEPCsRrxXsSSuUkWwZNnaAzMmtrdDReEiIQqTWPSkKspNnsHNZDFtgPXxnZzRFOxiIXLlpPbBoSCcECccoZyYHhXpTMfbbjlLJCbBUFfmBQquEeUuvVyYaLayYHfweEWRQUuqDtgGEYqvVQoDdXVwYyBnIiUuMmNMmxYyCcXlPpenyAOnUrRpjwWcEercfqvUHhuRrUKMCoOfFQjjJZESsiIgGemxCcXzgGQLlgFfXxpgGnemUSsumMVydwlLeEhzZPLqiZqMPQZdDxXBRrbKhvVqzZRDBwWxXbFBWTeEeEoQSsvEXJYyBbjAhdDhuDsNnSdeWQTYXNwyNnOoOoUueEzIRrUuosYySQXwBKEekPJjXxpNwzVSMRrHhwqBKEVflcVvCWwTFVXsKqnNRrQkRHWwhPpfaRrrRRLvVtJjKkUJIOExzzvIXxiHhpqLlUuFpPzZfBhHbkpPmFfKXnNvVduUhMfFmdDlRrBBkKrnFfcASyPfFMXdDWwxmLtJaAJjjAajhnwWPYyowWOpUuNaWwnNETtUEexXUuzZGPHhhHlLTXSshHFwWrRjSrfFLTbBAaWwzUuJJjjkkdDKXWpGgGgPqcCOwWoeEkZzOmxXGgpPtAaNnaKkGgglLDKhaWxSHEehDFcCqUmMVvLlvVomEeBAayYVYqQySZzUuuUsfFaxiNXSjeYLqLpOtmRrMTpPIxXicCCDdlSsuUEnEexKkgGhHZQFLlcRuSjJeSWXCsLlthHXJmyYhudTZxXzJyYjRTtsSZLlAVCcCccvVlLClRryTMmBbtPuUGwWKNYyhHCSxXVvGUucCUJzZhhHOosyYMmTjEdxykyCOJjhDdLgGcCluUHVvhnNjKQAaUvaAqIjJyjJDdUmMvVEeuHoOohSzZsQsSqgEeLlGcCbwvVURnNXxruhaAHBnUvYyTtsSQqHkZzPqQVvLlEHstTSGgTsStSPpSmMsEenNPgSsSAasGCcMDdgTIioOtGycCJhdhHDjWwJAGgjJHhoODtGgvZQoODrRJrHhRppPPkKdDNnCSsdSsmMmMglyWAawYLjJDkIQqiUpLiIxtsSlLTCztReuUxXErrHKVGpKkJzTtRrRhuaAUirRKJUutTbgyfyWwxXnNFJPDHoOhGhHUyGexsSXEACSszAaarRExmQbBSHhsDdSsxXufpYyFXkKqAZRSyWERkQqRxXrPrONnCuUsnGOkBnNTtqJjQqxHhTBhHHhbMmILwWrnGgxGgeFqQZklLmMQvVqtzWVYbBaAaADwXxxjJUFfEQQdDbBoYtFHhEmRrFQKVvjiMeEwoOWzfTqJjJvVQaRRMmLllnNGcfFRFqQULPpzZlqQQYyXeElLxjJqXxwOoWBmMVUtTzptMPbdQqlLXQqgAYuUxDAdDzZVvagqPpkjWjnNFxpPHjJeEqCvGeTORroYyOobBtbBACFfcaPXxqWwEelaAcCywWgpPFHbBAeHliIqQqXgjJGsGjZvNnVdDYyjyKkYrRJEeEedDbBdDPwWNnpTtZzDcCWawbGgzmKkwYyMhYyCcufJjpPJORrVYGgNkwRczkKRrijYyJOjJckZzKCmMSshOAaonNHnlUrREeuHhOqSmVdyYucSAEQEIiTHSsXQqLlQXbOtZyYEBbsSPIimMpsfFNSGIkKIYlpSRzHhGRrgXxiXGhlZwvOoVzZiFfIqZACaGqVvdGgbSFfzLwVvokWiLdiIfLlNWwxXnYyUuDdFewWIiOHorRFtFCOZYyoGgitAmyzEOXxpPgSsFfJhHjxXuUDSUusDwmoKtTnABDDddTMIiTMKkxXIyYVGgvKTevVEBkLlKrSkhdDHjpZzgMmyBbWwYRzZMmBuGNnnHhFavVpCcNgGnkKXSBZZzGCGWwvMRHHgRrrwNnWRJjCuHhHbBuUVvXUTtVQxZgsSHhODfMmOxtTrOJoZhHyYzrpWwPPpaXiwNqQZzMhHrRUHhumnoOmMlVvaABbEEeeEolohHOmpPTtMdDmYyMHEPtTeSqITyYpPpCcHhXxPSULMUuDdGgmXxQqvqQVlgOoGqQVvjJLNnxXXdDdzZkDdKgGmMVvUucElmMBbiSanYmMbPpBzdKkRLlFMoOmZCcCczpPLEPWYlkKHhPpPzIiZqQHUuQnEsShHeBbPwHAfFajJSKvVOoSsPuRYyJjrjJHHQVPpvjuEeVvUJqhfUqQydDxXeFfqFfdCcDQdJzZSdDzPptTFKyYQqrRBbpPrQrADxJjHSshuqQUNghnxXfFBaAJjSsFfbSDozlLyvVZEMmjLHhaAuUQSsSspPKaLcYyaACAVvvLfFUWwoOIFfhHNnyLlnNYnNLuUfFXxAtTuSBbFNAamltTvVSsLRdvkqQKPIMCcmPpifFKkpVIiBxvVXaAjfqsSfFBPLlPEetuUTpguYmpPIiLXxpPpPulLwWRAaAKkaAdDVPYypLAKRwzZmMWuHVvPXAarccCfjJgGXxEmMzrRZtTtGgmstTbVvfFlMmqgGplLPjJOoleoeBbNOoSTtrEeyjkKKBbkIuUZNaATtweEpPWFTLlIZZdDkKiIlLDdqjJUuKtTkiTtSsIoRSswHHhRqAaUwWjJueESoGIMmVKbBkoRPprOKBDdvDdVcrmkVvqgEeyYGrRzZLlQKoawWszGgRrZjJMmhVveElLztnfzZLYyUusScClMNHhdeEDpPnTtiIminvVkbBxLyYHFActmeEMqJjHQqnNnmMnNFfdDgGzSuMmUHheYyEiCvIiZzVPFvpTtPrRaAVgxHhiINRrngGEGgSsdyPUunHWIiJNrSIIiAPRhHrNnpahHNCUxXwWucnJMsSmMccCfwFJcunyvVYjJBeEbyYQqzNnBfmMDzTfhxXqQFjJzfjKkXhHCUucVAxXmMgGJvyYJjVLPpsiIEewwWUuGgnNqyeMZeEqzBbQqZNImMicXxHXphHfGcpPMviKRrknZzNIkWwFDIiaAfFvVkECokKPpwBlLbPEmMeXvVvEeqPgGGkVvVZzvcfgLlHhGFKUwWuGbkzSCcKUiIDdOOofFePpVvEewWQqrVGoRHfXxxXhHJEejFhdQVViIRWFfKyFnNdDpPrRXxJfFjXxjcCpPJEBbVvyYxXZIifbBGPXfUnNuJRuUrjkgptTGOolLtbByBaAbVshHncjqEeQEefFaLKRfpnFfCcNzCcalLOoEeAxBPvnsSNreERpLndDkKNkKCcXxUuAaZzleEwihuUBDKkeEIyYOosSVGgfrYkDGgGjpPJZUgGhHXSsxuGgUwWYksStTtfiIFnWIiRrfFXxaMmiIqzHhFgGjQcmMqxXoOHhmMtTZpZzPhHoAaFIWNkKUCsdDKkqljmMaAkKZYithYyEeQMJJgGjEeeSsQwNnWwJJjUHzZBbhbBufFjBbHyBbYhwcuaAUUfFwmwWnNMQmMSKiILlkHZzhsuUVAKktFfjJWWnJvVSsBwWfFbhHzlOoLcPgGPpTrEmtzaDKjxaAXEqxSsXJjeESPgWMmpVvPyXXxgGMAamsZzmMiAGgEeMmIqQvVlPpLiSsbNnBnnpPnSsWpgCckKGPkMlfMiDdIiUlLuGOofFeEgCcIbgGJjyErRrPcJjIJjYJPzxGCLSLlVvLxMJEhqQfcCsTtgAWwtTavVxAUMrxXRpoJjgGaAOPWCcemMtXxTsgfCVWwEdDenNwQgGWwDdCBbNneErRcdjBOobtTJVviRreEQiOoRlLgoOigiyYDIGgziZzVvtueJCcRoEeRiIrYaAyfFUVCjQqXQqqQxJgGXaOoAltThTlLtMrMmPpsqQSPpRwaAWHhmHzZEMmMmKeEsSbHhlLPtVAuUmqQHvnMVvhYGlLgzJjjlLJPpBbNnVvmMOoQqWwPKYDqdaATtqKkYoGSEeLRGnNgGgrOoJjlccvVjJCVvCrZYbpgBbkAaAqQPpJfcbCEEeIigINIPvMmFfdDUuvVrRQqBbZzuUVtTwLbSBzZRMmlZcbjLlvISsfFTtIamPpSqJDdjeoOGgwrRGgdmzZVvMDvYyqQsSMmOawKkWlLAxFfrZHHhQAxXqQaeEXGgLlxXDfcRrdwdUKkuDbBjJxXBEYyuQfeqRrQAaDtTPcCpDXxchHaAafcJjELeElNnVPRyYjBbZzWyYPwWrrvJjFNWIiwYJjSnhHtTHoOjfeKEekTJjtxaAjWwEeWfFVvnNBEeSsSksLlcCAtbBNRPZEGgVDdqOorlkKLUcCkdDPpaAKKlLxjJXhHHkMmVsrDdrRdTxJpPwrZAawjkaAOzZoLlKVvJxwqCcQAamheEPhHoOwWfFnWwhHTyZzYxXtzZdDNNIinpHnNxHmMhIgGipPXNzSsZmpPqQBZoOzHyhocqQCDRrAadQqObIKkiwGgUuSsWMIaiIAZVMmcCyBbxXisfFyYSbbKkBXxrRYOotQvaASBbsbjJQqQLzZllcfdDDdFCoOVAawXzGghvVUucCdprcCbBRdcCwmMWDTtXVCcvlLDKaABbGgsSRrFffFZcCIifFhkwPlhBWwbtuUTHgGbPpBDdebBLlbqqJDobpDdhcCiIHPoBbFdymMakKcYyUutTdrOuUohHDpPbtcBwlLwTSsyuUuQCcqQDdEepPmMqTXxtfVvFxXElIpPtaPYyIhHFoOoyYdDOoZxXGgpPVvEezhjJxBXBbjeEjiIrRJdsbBtswrRrXlLxRwWykKZzRmMrYSeEmMszZHBbHhxXhGgXAZoOdjZqQuvVUcCQqjFaPhHcSsvVcCpgXLmMMKkmoxXsAaSPpQqmWTqQttyYqOoFfQoJRXxOosSFfTtpBbCVvcPruURrjmkKMiSLCXhhRkpnNeEmEeZmDdTtxXqQRoOrMUfhHCcFlcFbkKBInNKHbBbrRBBvVZfFYyzNPHRgGroOaAtLwCFInNrjFvaAGVvBIiaAtTdDlaAxIsSsfqFBbeEQLMmbVViGaApPUtWwxoOMbtfRPprtjJTFxdDUuHrRoOhWVvZIizLlZrRoPVWxmMlQqRrGgviZEGgezDdoxmuUPpMmnNNnJjVvxIizZXdTmJjdxtTXeYyEDxxXpPsSKbBqrmMPvVpCUhHuBCcIBJZnNzHhuUZFLlBQqeEyUuVqdwSwvTtembBEedDtNnTMjxxGOogXEeCBbVvcXmMcCvVJNnKkqQEUuaAlvVsGTXLcNKvSpaAPTvVdDtyoOvVzrRsSEeCchSIiIbDKkdjMfJjFqQlOIioaSsltTlLeEDdXxzRNkGgKnrNzTLlibBTtSsIKMmMmdhLlhhHrSfFsmFoOZBbzKNnZBbzkKkcCjJjJPMmpfqJjQsSAjJRrnNSsGarRuUAnNJjmMILlQPFfKPpxXkICuUciCcfwBbsgGPoOLHhlnNZiICYyfuUHYPWBbwgbnGPQqzZpXnorRtTOEUQPAatTguUGgGgGVmVvZzqeEyYXuUJjxPppPrvVuUusSxXURECgkDdGgsWnAaNHhTimBbuWwUtdDSjJaAmMQZzfFhHBrRnsyWcCwNncVvNlLTtnDdHhCSsxNTBbHFfadDxXJjGgGMmdRNMoXxOoOoOrdhHYybBgGbTtPFfrRTtwlLBbcCfBbWDdwwrRvVWFsuvKkURuUmMNYyMCcmnJjrnNtrRWwTtTOlLozHhZEeZzqQSsXewNnWXxFAaVvmeErRMfuUmMouJnTGAaoOtSsTykKdDInGgjnNOonNnDdIilYyWehDdHCxGYyYyvrRZDdhHyuUAagNnRHMmKkmCcMZTWwegGEzZfDdFFsSkKBlLhMmHLlKkJuXTtlVWwVvNnhPBZZVvzUVxqlLPYyHsiIEeSOwWvVCfFshZOYyozXGhyYHgMmxHfFSOoUuSuUsjrhHSsXxRJPpFJvOYnNyoioOZzIcxXCZziYzQqpPdDZDwpPRrSsAoOSyrYoOEeyBxGFYyGfFeEgwWXxaAcfSUhkcCHaAhKpPeXxEHcCHhhIiFmeEnvVvVJXxjabBXxaAJPWwpoAxXaFeYyTgTtEtTUueGGyTSssvVvVStrRShHsvWwDdVuUYgtviIeEBbEJjeMjdRdDrDFfJmKPdPFZzfpPpJjbzFfLlXxsdrtNnTNEmPpFfMWwmMPcCpaAeJbBjGsSOOUuHhoeYUZzuNnnNyywWxCdMSsvRrkIiKuUVmsWDdofFYEeyoOExCWiIwtZzFHhqQPQqpDdfBbTaAwWEeqwLctOoTXDdxUaAuBvVbxXeEciIUSsuChHCohdhzQFdDfINGNnQPUuplxyYMvVFfXkwWCVvcbBjJSsKPxYypPrShZzHDINnLlYySsHhiSsbBbcCaABafFAyIiYIibmMMmBBrRlGgLNoEeJjTtazOkYyWDduKkHhZzbBKkjCcTCclEeQHQqnpBuTtzpPojeEJjJOTDdypbBaAPRcEeCezLlZihFmMMUKkKklLyYFfQqEDVvZXhHxaQqvaLlzZcCcCAeEgDpPEedsSSsGYynNNngGsSKkkKpOoPnNmMNZznLlvVHAalLLluCfFrRihHQcCRhVqQtBaANIbMiImMEMmfiNTtPpFfVzFtTzZBbbBtzKkZwWNnZzlJjRrSsOoPpDIRLlVvoxoLjJQtTbBvgGCcgGjJqUmMhUPsSZzpuuvVjsibbBzZaABIlLkKyYkKHYyhTOotOoIJjiIigGcgGDbBoOdXEexCNBbnYyjJRzZTtDdwnpRvVrcCEefFKQvrRuEVveUvVVJNchHOooObByYpRQqIimyDGIigdirkKOokOoqZdhGFpjZIuISvQqQqqQbOxHpPpPyYYyiIhWBOowEeWUhDGZVvTtRryQqYtTbBnQAaqurRcCUBfFbuPvVfFpoLfFDFfkKjqQJdHhnbyYyYBQqyYmMRYiIGgfFWwHxeEGfFHhofxiDTCctTCctJjvViYKaIiAgtNvMmVPNnoOBVvbYIiyYDyYurliOoIHhLrRRUuRuhHMetTEhqBbQqQyQqYPnNprRQquaAVATMBbPpNnCjJeENaAsVFfvShHtPjsSNKIitZPpzqSstTxBbXQIPppJjoPpOsdDbbBoyYDdvVpPODdMpPXxJsHFbBGGggfEHhelWQqWwzZwzZAaUtuUwWctTwNbBnNAqnNQaWdgGNluULNvVnBZwWiIfgGvVFpPpBbvVbBosShSsbkKAmWwMiZtTWFKkfwqfFQzpPkKEbBeuUtiyMnjJNmhQZsNQTtPpqjlLhHJeRrEnIwWiIiBZEezZzsjJOrREYyeoQqSbaaDubBnpPDdNxGhHxnWwQhHEeKMYywrLcRbOxHhXoOoSsIVvuBblwOYiecCUuhmMPARkHMmhKsSoaAasSizZIyYAYyqkWwKXxfDdQpxXPtVLlvTqkSsKbbRrXxryYRIhUuDUudEeOKkFRBbrsSfuUuUorRRhHrsXCOoVJjvcfPupBbMaxXfFWwyPFfpBjKfFKSsLlSsWRrTeEtlfBSmMsLlSMmMmQEnNqICPnNSsBLDdlpJWwjtUudzZnNRrkCXxiMsSZzXxmYyylLdsRrcdbBDPhtTTmMtBjtTJsSXVURoxXOJjEBnNfFmsnNSZHlAahHhgGiIhJjHbBItobJjNnBoxXOMkgGKYyhHhzjJZMPpmiIFyYOofRrHhsSFVwWTtnUuNvikKZAsSaZpPsjJLwLyYlAsYoQqppPTgGpxXPRrUVvBGgbrxXRuCcnNLltcYZwWfFzyJFeEXxeqQEfCcwWXZzZzHUuUAbBaHhWeEVvwYSnNhGgncCNnNHxFSsCyBHhbUuygGrRyYoHhOYpyxiIXfFaIJjgEEegGEKkpqQBrRVNvVkvVgeEGodDonNAvDAaAadVavQqVZzhnNdiIQqtTeOZuDKLgvVLLllvmOoSmgGdNnOyYCMmcdoODhYyYyHeomMPpmkCcKfFMfFlZzyYKsHhVvMmcCiIqQhHHhGgkuUKMmqaVuUvAOodDTpzZPgYyJjlLXxROoLllLrGEvVeAsSiIqQlLxXRrZKvVOxXjHQvVbBqZqQzmKkMgtThHQfrRGgqQSaApPJjswOoGgYGThHBbPpIiVvRrKuUjJyPYSsleUuGgiYyHhFfHYygGmXxMuUhHYyhIEPtTZzIipQqyYzJzZjZMfFmpPgGTFpPHXxYyzDJjJHhCrRcAarRUuVvvHhmMPpVECxUwjEeJpPbdPJbBAaBbaAjDeJjEFfdAahHZzLIioOYwfFWyltuMpPeEjbUuBvxXoOEeYTtyYyuUTtwNnjJjJlnNoOgGjJEzZymoKpPzZxXQqLMlLruQmMwWAaLwFfGzFfEJjauuUULFPAKjJxXQdDqRrqQqQTtdJXxjZzYwyfFYRroOGNXxKkbBnoOgWyjJDpdWwDlLHhPkuUTtdDdDnGTtgzfxXFuuUlLvVRrUoOZzZGgNnsdDYyMmyYFHhBbCcQqqQtSrRxDqQdOVvYyoVviIXjvVRqQrJtTrRokKOMmyYjWwJAqNnukfFdDKXxBJjBbMnNjJCjkKJtTOoqQKkKCcbpOLlLKsMmSHhrRLlkkCZzZvNAbBTtINsFfSWHFGgsrRSrRfhRzZPNXxVzayKkxEeXZzYmgGUIoiKkVESJjsMmtGgPpTQqYymyMFfeEXxmJjhKkHvVEeaLloEeOfFrRZzTAalIiLmfFMtqyYjfFtAauUYFfyMmfBhHbPpnNZzhHFMyvVmMxXcJjqQzZLltjJTPZMmidIXxitRrshHDSsdcCHhDwWXgGxmxXxTtXMluUqLdDbYDdyBUzVvdDWbBTOoPptMmnNZzeRrcCdhHDFHhYIiMUuYyUubBhHmSuuUaPpMUumixXeEaAIbwxJjXhHnNCUucstTSWwWKkrXxsUuSyoNnOQEEeequnNnNQqGGDgGoOLlUwWMphtfFTHNWCuBbiCcJFftTRrjEeMqWwXxQqKkREiIPPUaAuVgGTvRrEMmRZvVXKTtDUjwWazZuUYIiGgykGgEeLOoJBbBXaAEQqkKeifFIZoOzTtDdjJYIivfmMDTqFfQzNnHpmwlLWYHTFCcSdDsfFcCfvZzKGgQqiIkelLEqQueERlwJjDdvgGgGVmhxHhXHpTtoOPMTtRQqfqQDoOdqqQXRrXxiImMfnyYNFJcCSzZFyYqdRrDTEeBCcJjcCMmdTtDOoQDAiIMmcCCKkDZJjdDdDLiIXPcCpwWcCiiGNntHyYHhKkrRgjJpOnNoPrRufFUlWzCcHhVTthHvSsSlLuUbBgGUrbBRAaTtXSmAaMJjsoOFMmFLlfkQqXxsEIirRBbPpEeJjbBsqQpLcCNeAaEaAaAbyLlnNwWRlLrCcVvkwxXWKRrFXxbBpPfLUurlwzZcCaRGEeTLlgKkuNnOoqQNnYycCpfVvDtTdFfFRDdbBPpcCLlRrroMmjLlvVJMJjyYHhYyspSJwWaZkKIixXzAjJjkrvJZzPeHVvAadDlLhERrYFcytTYCYZBbLldBsShHAUvVuaBwWSsWyYxQOooOPpoOSrIcCiIxJjoCcOAVYyVvUBQqbWmIVxaAWkKwqQZaLUuwQqhHWXXxiIMmuJjKgGCcaACdYeExPzZMmZZIfvOoVXxkKiInNiBbELleRrRZPpWwzIiaxXAeExfFXvSGgsshHShuUMmHqQVcPpCJAbrqQwWgGBbzZTtXbBBbtTxytTgGYRwWHuUkdpPWjvaNAanxXAnrFkKzVSRcNniDdIhgGzZvVhHpPXxAaHCZzrsEeuUOoTfbBFtRtTmMbxXBriWwEkuUKNnQqEvVebBomMqBbQILGglyCPpMmSFfsdRrNnSzZwZzHhfFWfSsbBFIiLlsrayYKnBhHHhPzIiEewDDddWZCcTcCtVvMmgGtTlLhEaSzZNnYyNnsJjdDwVvCchZznvvVQuUqdDgXyYvDdVwODdoLlWxhHvVhiIPpNndcCDjJMmNaAnHheaAERsSOLlHhkKfFeoeaPpdRrEekdDjuUDavbBRrIiuuUIiMmNybBzZYgUukxXXxKCoOJjcEYyXXzMtTbUuBZVvmMKkTtzcczZCAxvVSAaCMmaAhaGgJjAEKOokehOoIiXxjJrRMlLlLmmgxKkMmxRrXiIJjIDdioTtyTpPCgQqGdFMmkwWIijJytTYKjTtJumbBZzMCcgGiyYBfkKFbIUDGMZzcCmuUgFfMmbBrdDtTPpTtbBgrJjBbLlaARdGgDtTuJjzHxXhYMmybjJBcCcQqeEYWWwwtTrRyyYmMhHCAarPpSoOSsoWOBbuUqQffljJXYyCcMAUuabBfFCzzZIQqijJMmZaIiGyIiYoOnNOqTbBHhXxwWgGmMZyYFfMPpBbZzmLsSeEnNlkKDjJUJVvjfFUutAaLzZlsJGwWgjQqKLlkkKcCZKkztTSwWUOouuUQqPpbBOoKkNqQhHOtTXxjJlKkuxXyDdjJOolLPuUpRYbBjqUvsCcxXsbBEeYykKBbIiWwvVZzFHgGhfbSdROorhWpPFIdDilSdDsDdLUzZOouFfCeESsDjJdjJpPXBbxDLlEeiIpPozZgGDdNqQnRrGQqYzTtukKMmdWwDGgWGgwUBbeAHBHEehSaAeEPpcnyayAaEeHhYArHRrhHhAzZiaHmMizZKkHKuUkBZqQzqQkRYyLlrKLEelbhHhYyhHdfFDIkKHhWTtPFfpEeOUMmARrKkpYEiCcXSsxITtXxeBPkJtBcCbTjnNqQKyzZFfbBxzyYZGuUuiIDuUdWQqwumNnMUVkvnNVLGglKvEAarRenNjlLJUvVaAgWPpwKjYvVyjetTEPpamMjJPpARMOKkozZsIqrqQzreEReQqEZNWwDdngGCcRLGgrEelwwWZzyYCgGjPpeETzZbBLlOiIouDXFfPRRrrLlitTIbrRrRYCclYpCcPXTFEcbumMkKwWaAUuUBtwDPohFiIwTtWUuAafSseQBbqELxXlsSIiBbqQGgpyYgGGhHgfmtTHGghFfMrRfFFPnNrRFfRbBrdVvKSRrskHhKnNkNnTtyOocswWlLTtzZStTCGwkFfgGSshbfwEeWFBuUnNQyfFUuiIrRsSVvZzBbrRwWBWwCcbBVvaAqQGmMgQrdDdDaARoOqUucCcZziIPpCWwbKkYTtVvjJjJLlbNnOHhPTtpRrqAaYyQLluSsHJjhhTtHjkKLFflHYZuUEeTtjEeJjJQqWOoXxpUuKkgYycOoCGONQhHChHcsSYyqkqQuoOaAULAaOolKHhIiAaAgGQqIhbKkzbBFftwWTCcwWZgQsShHFfbBkKYydDiIqcKkWJMmTtjQqeEvDdFfHhUuNxXSsmQqQOkGCjJPptlFDdzZHTtCLlcsevVJjEIiqQMmdDSsCFLlfvVWOowcnNkKKsSLlkbmMsaATtzZfaNnFfxXACyFfLlYEdDSsznbrRBmMWwCRrnkKOoczZlOoxXAOoQOoqoOasShDdMmHcCBbBfFbEsSetTnNbBAaAaxyYXSsABbapSvVsiIPLCQqhfFfFIoOiHjJqdyNEeyZzYpPnMdDNnAanNmYfFtTzwWZVjJLlvzYVHhoOmJEejMEexXBbIibBIKfFaWawWAwtTOryYzZRrCchHqUuWwQRfFHdzZZzfSsKkLWwAajjJqAaQJQJjzZlLQqmDfFdBndDlLNbCcuUpPfbBzZFcFfMmsxXqQSEeMmCMSsGgEexEeSsWkVvKlyYgGLwQQqJzWwZiKkIEVvxXejbjJBhHOoqQMmNySgGlLfFfFDYyLltbBXQyqQYqvVCcjJMmpPxWxXwwtTNnWaAPpzEeUuVvtUuqQsSTflMmLbBFVveEfFybUuzZDdIiIGgiTMdwcCWIilbBLmQAVvnDdcCNDdaOoepaAzjJZGgVbZzBvrRZXxBPQwWqXxAaqQBbGgmMFtKkJmgQerDdRZOozNlLyYZCcVvzJjsSnECcGgcCqQAGOodXxQqnqQNkKDtLAaiIaNfFnqQucCUCDdvHhahHJPplLzdDZtfEefFWwFzZXxtTMagGhmMHASCcsiIVvwuUWmTtHhjJtmyoFfOCngyYBmbkIiKKfsrRuUSFBbkoOUuJjlHgGPphLuUvVpPtdYynLHhTtoOlNrWwDtTdwWvVAdKkJfFfKkFjAaShHFfnLiIlegGTtEbcCxXuUSsOoMlHhLiYhHLOooOZuQqUMmnNuRrRrHfFUupPhGgkQqPCcEejTtJDPpdwXrXxkKFzZqLlKkZzQmUgrMvZsSCcIiwWzVgGBbRuUyYrkZzXbBxUDdugGyYfFGgCQXkKxLwJrRGBbgWwjlLCLlcmxXWwGeEGqjhEeDdNfeIiAartTRBbcCNnBbEoOFPpVvtAaLlTnEeuUWrSsSbBTGgtyYYwWfPpFBbeEyHKkgqLlQUuBbEeGVWwmMaAveEBUulLGgbmMHdDhkKLlXxQqWwZWwbBznNQqEedXjnNpJxXjBbPLyzZYlryYxjJYYyyXZhHMHhSsmjALKkuUlapPDddDFSsIiwcClhcCWwHdeEDehdDHpPyYCYyceNnZzdDaATtEoOgGnNBZzbNDZzdnOobBBZzChHcGgbKdDAakELeEWsRHhCMmOVvoFvVZzPpfFYyZznjJQqtDdTscHwWhCzuUuUZGZHhwjJqQRrOUuOPbBsSZzpZbBuGgUzrRfoSsOoQqxXOMxaAXCcmNnfdDFFGgPUupzZzyYsdnNoOHZzTthawZzWourRUKSdBbDxXjJBbeQqUrRmMOKkZEezoUTtMEemSsMzcYyIerZzRZznpuUvoHoOhLldDtTHhDdbtbBTMGVjJvcCwWgzCcEUueklLRTtWwXkLlKyYxVvoOQqoObBUuMmtbBAaTNasSAdDWpPwnSsMmLweRrwWEnNWnNpPlhHWwdWmMBbLtAaTNnMmnNdDtkKudDIlLLliPsKkslLDdSywWYjJYEdICPpnNHNnhMfFtblLBTbbBGghLlHBmFfaoOWwArcCAawWeEEGgedbBUuGHRrhYyCcpvjJERcCNnsmOomMAafFnNpzAaEeZcBbCKkyjuUrRbkKJYyjBkZzKpGgPpPixSsNHhnanxXNQqOorrfFRvVRhHAxXqmcEeCMQrRIpxxXXTVvFdNnVvcCDzkKEeiIixbBoOXiqQIwDqUMmuLGyWwbBTtyYYZzljkKJLDdfuyYUyYFFsSyYUmMiIxHqQfFYrRyauUnNqQbUutTdBCcbDNnGPpHhgUuEiILlYyOhHTtoAafFMFVvyYfeFflLlAabZsSAMmafqIijJiAPpEeadDIXnSsNkKQrmNLlMmtTBbhHEePMjmMBbKhHkxiIXJqQoEezZBbfFmUueyYcpPCuKkRrUVIcCiHhcoORDdrhTapPFiIfThyYHTtpDEeTKkQqvQqVOoSsGORHhxaAXUurziccCCAaxaAWiIwspPxXQqnhLlHNOoZzSlLsGgSDdcJqQQABbakKqNnMmFxXfjCSeESsbBsyYpPtFbBfTjJtfFmMTtjJIisSSSssCYGuUaAgoOyWCcwcwBbWuUJHhOoEewTtouUOrhQqpuUPHwEeBSsZzvVKkQolLOsDEedsSTdDtNnhkKHEsSMmeEeoMmbBObeENnBuUcYyEeJjEtTeHhEyYsSxXUuoOeKwdDMrRvVmOooyYIigGbBnnSsNncFfCNmMHcChPpzZNyKMXxmkGnNgxsqQSJjiIXRJjlhHXxrLGXxlLlRUrRuiILlrMmLmrRMlSsdDrRQqfPpFXxjJuUrRkKOoWwNnuFfWweEMmvsSVkKGMmgfFfFLlnNmMCgWwbIiSsBnNGWwAacOoFZPpzzlLZMmhXVhojJOHvSjJsSaAXxaAskKUuzDIiXLlxcFNnfpYyZzPjjJGgwWKZYymMzXEexkSreERsHKkEeGgKkYPpjZGgzJjvVJoEwzZWePpWrRwWBbgTjJtFfyYkKpPGwppPeEpPdDwWwWLmUVhNnHRrpPcCvQqTtFfQnVsSvrROTtTgGtJWwjxXQqCZzcePpWwENnoiIErRAaPbEFfeBVvRuxXlLUqQuXxvVCqQcxDdIiPpXCBJjbVYJkKjQyYqXxoOFBbfODyYdavVVvIiAoIBbjJiMdDTtxsSXPRrmMPpfFHGpPgRrPiIITLlvVjiIJOqQpPidDIYyxGgXCcoAabBCcKkQsSbBqTeFfEqQBbDvlLVdUCcuUuSstWzIiuUZBvhHVAahpPQqHvVPXxpfJjFrTtRoTthHOEMmRZzrmVvHhUupsSLlVrjJRyLFfxPgGjRrJpNRrnHhIiLnvVaANldDPzZzZpOaAbcCBohHXllQqLfFGgjJBwWbIigZzlYyLlLORBJjvVbWwrJoOZzjsStTeEiICJjvVuUcNndDAxXuUEhZzzZHhHeQqqMmDUudQeEZzZShHhHcCxMmMYnNyfFAaEezBbBbZAnuKkUNGvVgSmMbBsMqOomMQmaKJjZZzzYyndDhSGjJIigsvVmMPpHNkKKkVuULWwIilvmmMOWwoqQzyYCcKrRkPpoLeElOZnNxXbLlZzBIiayYAtTjgGRriIGmiIMgJbxXBvfFOobBMmVuUsbBOoOortTNnRdjJDwszZScCWSIiXxZpIiPXxOoKkzswnNWSkKMmMgGYyNXxOouUxXnNEeVvBbnKkNNqQnNnnNmMUuyYUuzZDEpPfFQPpqIXSsGgyYLluUxjyYJBbiHhpPsSqQbBwWXaAxBwaWwAeEDdWTFDdffFmMIEebBLliIiNntpSsPeGdDgTYytEoOZzPpztTOowWEgGPpIpHhPOoaqmMgGnNQYyxXNlLHhaAnfFpPhHIfcCQqFbmMOFrRuUVGgvfEefFoZzsSeHhEBVQqcCGgxXFbsSIiBaAHhHDdXxhlsSLvVZzkKXXHhxNnnNxfvYyiaAiIVZzTtIivAgGGUiISszZXxCeEcYyuFfFfnykKEeYKkQtTExXxXeqewWwWvgGEeViIEAaeElLNLlFfgijLlJwGgWNxXnxXUmwAETteaWMBbuubwWBiIPdrRiwWIkKCcDpUuKkUOoSsOoDtTsSQVjJvmMZsScPpCzQuxXnNWwUHhPpJjRrRrNLltTDhHvVBbpPdnqSCSIdDkKiscMmqQlKkIimkRrKMDdXxzZsSftTFgBYyZzbGLSIiPZzkKjnNJpszOoZqRjJrQzPzZpTtZrRBbCPpMTtFfqtTvECcYaAyeVbBQDZdDzPpRrdzZGmMmXxxXMlnNzZLlphHPVdUujJtRPpCczzqQZHfFoFfOWwAahXxVJOojXxTtvZZzJNncCccCCzZNnyYQTtqlLXxjFvVYyCEeJjlLcjcCJfyYbwWBYXxZzMmAafdDkXQqxMmKCwKkWmnNaAKUuaAqKvVkQkzgGZJsBpBbBbYRreEygZWwYIiyzGlLygfDdFBPYypGgaNnnlLNAVaKaAnNkUIiYTteEmMyuPpXXxnNxJPpzrMNnmRhHdumMKkUjXxJtTDwWHBbdDhIuUBIitTVzZBbQqvIilqkUuKQmMLbWwjJZzkWsSVFfDKhHkdTteEPAapVOovvZzwvMmqQVxHnNhwfFWKkXdDzcCZhHCbBEeEwWmMEeezZNqBTtbRCcFfoZBbsSaAmjJMVvJjlLzAaVvUuKZzViIoOOovhHkdDdFwWpIiUuPaAffonDdNgGtWyrRYyQqYwVvBYlLdDyiITpAQqcCuUadDkKPRruUReVAavEGgkKGgrEXxetTNnrRshHBMmwGgrRSpjJeExXdDdDvVPKZzktTZMmzkKRBbrcCPpDdpuUPifFOosSgGzhHZsMmSUuIoCMmcORuOxXOoqQiIJyYyFfYWwOoDdAacCkJjRrGgcgDdGgGCWpyYPwjJKZfTtFzeEjqQLlWwuYyrRnLlmDUQqudmMMAaXgGxYpPViYyzZIfsSOovVFSsIiyKTtkRrYbBJjkUuKiIWOowvIiPpIWwitrRvVmMTkKCcntTNEeQqcOGgoIiOoOoCrEegGxhHXRkKFfsMGgmLlSDdwLQqCMmdDYZzycEeXxCcJjtRrYykKpPTNnlyYbBRrnpPZzeEhHNehLhHSsljJHoOJlpPBbtIiMwAaWmTzGXxgDYydZLMmMmjPpRrwWvVvVNMvaAVmeExXzZkKnNniIksSKNHlLEuEeUuUevFfVFfSshbnNBRrHhnaAVvEeYyEKbBksSWDmMduUQvYyPpVqLTtdVFYylLKkfvzZIiDRjJrlEesSyoAaVJaAjaAoiTdDtOogGPpdDpIiPNnOwWzaAZlLTtoIwxiICLlcXWOIiRrcTeEtCsSoOGsSXxeEgYeEiIjdDJEeyHhrRrUuRHhfgBbyYGbnXxeEuzYyBbZmMJkdDKjFUuflLTeEtkKoOkKrRZzRIiCcGgGVvCcVvYaWwBBbNnbBmMXxbeEXxWwlZaAtTzLAyRrSBoOqiIuUQwxXWCcMgQqeEKkPWwpGmyYkmCcRrMKaTyYSsBbtMPQqpcbBCmdDzZwWOWwoKOoXxklLAIUuCcGgiNnUBwWcCrRrRbuBPDdrRRrpiaAIGgrOoRbWwvVxxXXbyxXYaUGgLllLuHzZKkWwhAhZcCJoOjXxxwWCwWBbcuUeEzPpZJjsCcSCcXRFRiIruUiIEeUBbSsQquZLUuUulHVvhwWHhVvPSspZBxXbbBzzMxDdXmZlLyYXAaIiTtKkxWJqQjcCwOoOjJdDlLSsNYQqyqUQquQhHJlLjnrRJBWjkKqQJwbNnhHlQqLiIYyOojbBTzZtwWoOLqQlTkKRrWwDMUSsumrRdtTtISszZJAOoHhaKkjitTJjZaeEAPaXxFfAfFhHUEethHTuKkLuxXUHBbhwWDtThHdJjAaJjhfFnNnNXxHaAAalUuZzeCcvVxXEhTtHQqCsSIEePpizKkuUGgnWwTtCcNWwzjJFfydDYtOogGTtmaAMTUuIiZZcinhHNiIJjTfFFfFftTtbBfSsFImbjJsnNRrSOovbBVQYUusSysQqSPpqPpHBnNblLyJjYyIiDdYTtgGhOoazZAsrRSdoODBDedDEdYnmMNUkKIiVQqrRrMmRvDduYyTVvtfFBbwrREeZzdDhHviIVbBfFQmMoOLlAayCcyYyYYqQNMRrmirRTtTtInwWySeEsYNuUpPnCWwGLlgcZAazoOALlWwanYyNloOLZzoOhFfgGHhtBnNbTqQHiqoOQCcInNFAoFfdAayVvYKCcaKkVvAOoRrkxyYXTzsSZcmMCtDyYpPOPpZvbBKkVzGDwGgPpoOJjLlWtTfFM
diff --git a/src/05/part1 b/src/05/part1
new file mode 100644
index 0000000..969c1a7
--- /dev/null
+++ b/src/05/part1
@@ -0,0 +1,40 @@
+--- Day 5: Alchemical Reduction ---
+
+You've managed to sneak in to the prototype suit manufacturing lab. The Elves are making decent
+progress, but are still struggling with the suit's size reduction capabilities.
+
+While the very latest in 1518 alchemical technology might have solved their problem eventually, you
+can do better. You scan the chemical composition of the suit's material and discover that it is
+formed by extremely long polymers (one of which is available as your puzzle input).
+
+The polymer is formed by smaller units which, when triggered, react with each other such that two
+adjacent units of the same type and opposite polarity are destroyed. Units' types are represented by
+letters; units' polarity is represented by capitalization. For instance, r and R are units with the
+same type but opposite polarity, whereas r and s are entirely different types and do not react.
+
+For example:
+
+
+ - In aA, a and A react, leaving nothing behind.
+
+ - In abBA, bB destroys itself, leaving aA. As above, this then destroys itself, leaving nothing.
+
+ - In abAB, no two adjacent units are of the same type, and so nothing happens.
+
+ - In aabAAB, even though aa and AA are of the same type, their polarities match, and so nothing
+happens.
+
+
+Now, consider a larger example, dabAcCaCBAcCcaDA:
+
+dabAcCaCBAcCcaDA The first 'cC' is removed.
+dabAaCBAcCcaDA This creates 'Aa', which is removed.
+dabCBAcCcaDA Either 'cC' or 'Cc' are removed (the result is the same).
+dabCBAcaDA No further actions can be taken.
+
+After all possible reactions, the resulting polymer contains 10 units.
+
+How many units remain after fully reacting the polymer you scanned? (Note: in this puzzle and
+others, the input is large; if you copy/paste your input, make sure you get the whole thing.)
+
+
diff --git a/src/05/part2 b/src/05/part2
new file mode 100644
index 0000000..fce9042
--- /dev/null
+++ b/src/05/part2
@@ -0,0 +1,75 @@
+--- Part Two ---
+
+The air conditioner comes online! Its cold air feels good for a while, but then the TEST alarms
+start to go off. Since the air conditioner can't vent its heat anywhere but back into the
+spacecraft, it's actually making the air inside the ship warmer.
+
+Instead, you'll need to use the TEST to extend the thermal radiators. Fortunately, the diagnostic
+program (your puzzle input) is already equipped for this. Unfortunately, your Intcode computer is
+not.
+
+Your computer is only missing a few opcodes:
+
+
+ - Opcode 5 is jump-if-true: if the first parameter is non-zero, it sets the instruction pointer to
+the value from the second parameter. Otherwise, it does nothing.
+
+ - Opcode 6 is jump-if-false: if the first parameter is zero, it sets the instruction pointer to the
+value from the second parameter. Otherwise, it does nothing.
+
+ - Opcode 7 is less than: if the first parameter is less than the second parameter, it stores 1 in
+the position given by the third parameter. Otherwise, it stores 0.
+
+ - Opcode 8 is equals: if the first parameter is equal to the second parameter, it stores 1 in the
+position given by the third parameter. Otherwise, it stores 0.
+
+
+Like all instructions, these instructions need to support parameter modes as described above.
+
+Normally, after an instruction is finished, the instruction pointer increases by the number of
+values in that instruction. However, if the instruction modifies the instruction pointer, that value
+is used and the instruction pointer is not automatically increased.
+
+For example, here are several programs that take one input, compare it to the value 8, and then
+produce one output:
+
+
+ - 3,9,8,9,10,9,4,9,99,-1,8 - Using position mode, consider whether the input is equal to 8; output
+1 (if it is) or 0 (if it is not).
+
+ - 3,9,7,9,10,9,4,9,99,-1,8 - Using position mode, consider whether the input is less than 8; output
+1 (if it is) or 0 (if it is not).
+
+ - 3,3,1108,-1,8,3,4,3,99 - Using immediate mode, consider whether the input is equal to 8; output 1
+(if it is) or 0 (if it is not).
+
+ - 3,3,1107,-1,8,3,4,3,99 - Using immediate mode, consider whether the input is less than 8; output
+1 (if it is) or 0 (if it is not).
+
+
+Here are some jump tests that take an input, then output 0 if the input was zero or 1 if the input
+was non-zero:
+
+
+ - 3,12,6,12,15,1,13,14,13,4,13,99,-1,0,1,9 (using position mode)
+
+ - 3,3,1105,-1,9,1101,0,0,12,4,12,99,1 (using immediate mode)
+
+
+Here's a larger example:
+
+3,21,1008,21,8,20,1005,20,22,107,8,21,20,1006,20,31,
+1106,0,36,98,0,0,1002,21,125,20,4,20,1105,1,46,104,
+999,1105,1,46,1101,1000,1,20,4,20,1105,1,46,98,99
+
+The above example program uses an input instruction to ask for a single number. The program will
+then output 999 if the input value is below 8, output 1000 if the input value is equal to 8, or
+output 1001 if the input value is greater than 8.
+
+This time, when the TEST diagnostic program runs its input instruction to get the ID of the system
+to test, provide it 5, the ID for the ship's thermal radiator controller. This diagnostic test suite
+only outputs one number, the diagnostic code.
+
+What is the diagnostic code for system ID 5?
+
+
diff --git a/src/05/solve.py b/src/05/solve.py
new file mode 100644
index 0000000..263f9fd
--- /dev/null
+++ b/src/05/solve.py
@@ -0,0 +1,30 @@
+import sys
+sys.path.append("../common")
+import aoc
+
+data = aoc.data
+
+def react(s):
+ i = 0
+ while i < len(s)-1:
+ cs = "".join(s[i:i+2])
+ csl = cs.lower()
+ if csl[0] == csl[1] and cs[0] != cs[1]:
+ s.pop(i)
+ s.pop(i)
+ if i > 0:
+ i -= 1
+ else:
+ i += 1
+
+ return len(s)
+
+def solve1(args):
+ return react(list(data))
+
+def solve2(args):
+ react_wo = lambda x : react(list(data.replace(x, "").replace(x.upper(), "")))
+ alph = "abcdefghijklmnopqrstuvwxyz"
+ return min((react_wo(c) for c in alph))
+
+aoc.run(solve1, solve2, sols=[11364, 4212])