aboutsummaryrefslogtreecommitdiff
path: root/day05
diff options
context:
space:
mode:
authorNat Lasseter <user@4574.co.uk>2018-12-05 10:08:04 +0000
committerNat Lasseter <user@4574.co.uk>2018-12-05 10:08:04 +0000
commitcd5acc649c31f299f16ec1e205a752e19b908bc5 (patch)
treedfdf3e54969f88cf73b6d6bdbfe721c27ba0dc96 /day05
parent76056832683da277b2c68794cd49897da711d456 (diff)
[day05] done, naïve and slow
Diffstat (limited to 'day05')
-rw-r--r--day05/Dockerfile7
-rw-r--r--day05/Makefile17
-rwxr-xr-xday05/entrypoint13
-rw-r--r--day05/input1
-rwxr-xr-xday05/part127
-rwxr-xr-xday05/part234
6 files changed, 99 insertions, 0 deletions
diff --git a/day05/Dockerfile b/day05/Dockerfile
new file mode 100644
index 0000000..5e0a8b7
--- /dev/null
+++ b/day05/Dockerfile
@@ -0,0 +1,7 @@
+FROM ruby:2.5-slim
+
+WORKDIR /opt
+
+COPY . .
+
+ENTRYPOINT ["./entrypoint"]
diff --git a/day05/Makefile b/day05/Makefile
new file mode 100644
index 0000000..07dec9a
--- /dev/null
+++ b/day05/Makefile
@@ -0,0 +1,17 @@
+DAY = 05
+
+.PHONY: run clean push
+
+run: build
+ docker run -it --rm aoc2018day$(DAY)
+
+build: part* input
+ docker build -t aoc2018day$(DAY) .
+ touch build
+
+clean:
+ rm -f build
+
+push: build
+ docker tag aoc2018day$(DAY) advent.4574.co.uk/aoc2018day$(DAY)
+ docker push advent.4574.co.uk/aoc2018day$(DAY)
diff --git a/day05/entrypoint b/day05/entrypoint
new file mode 100755
index 0000000..8982d21
--- /dev/null
+++ b/day05/entrypoint
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+if [ -x part1 ] ; then
+ echo -ne "Part 1:\n\t"
+ time ./part1 < input
+fi
+if [ -x part1 -a -x part2 ] ; then
+ echo
+fi
+if [ -x part2 ] ; then
+ echo -ne "Part 2:\n\t"
+ time ./part2 < input
+fi
diff --git a/day05/input b/day05/input
new file mode 100644
index 0000000..7de7072
--- /dev/null
+++ b/day05/input
@@ -0,0 +1 @@
+bBCRGgrwgKknNGWnNWUuwHoeEtTOvEeVhYZzrZJjFfzNnpPHtTgGhNtTxBeEbxXqVvwWhjJHQuUnNXGgvsYySOPphHKaAkoXxVQtTqQJmMjqVvzZHhOodDhHocHhbFfBHhKkGwWghCcHnNCvVOztTTQqtLlvVZzsSZnOuUfFiIHBbbBoEeOfFhHpPhDHwWMmgGhAaJUujqQMmdKkoRDdoOrNnReEUigAazZfFOFforyYOOoOooPpfWwFRqQFfiEeVvIVvGlLbBIGgroORqpnNPQoOohbBHOkNnKaASJkSsLlfFKwWjJgxXGuUMNnmYWsSOCcowywWvVyGNnQEeqgYxXyOZzoaAVvUoOQquSsyiIPpNnZzCcNnYsDKkdShebBEfCcFdcCuUDmMHDdWwLfFzZIilYIUubZrRYyzBiPpxXfLlFPpjBMmPfFeEpmfXxFMbQqTtuUsSVvJjxtCcTXHafNnFlLAlLVGgNnoMIiLlmOLqQnNoDdOlgPpGvVWwknNWwKQqKkiITtnNiIVvrsSrRuURvpPgGeENnzZKkPpLlqQLlSswWjJlOoaAxBbXkKSAaGgPbBxXpkkKqhHQqHhXxQQuUqKwgkKGEeWwFfCIictnSNnsqQNuUbHwWhBlWwvVYyeERrLwWTnNcCzZtThwWHLlSFfNfFXxEoOeQqnsaAUujJhHfFsSWDdgcCjsSsSJoOGQOoqOoDDdIidvFfuYyUVzbYyBsPpSsSEesufFUSUAatTgGSsuSLqQEelCcRrRrsMmowcZzKkcYyCbBCNnWwYWwGgzRrZNEerRsLXxluUSPprnNOoSsRYyRrnFZXxzfSsmMrQqFfOWwIiOTtHGghuUooQXrRxqRXBbxGCcDdgTLuUXxZCczlPpiIpYyZzPCctxtTXuxXFfUwWwWbBFHhZDdzmMCcusRreESfFUfFXiIlgGLsScpPCxAnNaOTwWuUmMtowWIzZSsZmMlLzyqQYiwWlLjJsSfsEtTejJSppPPxUuXgGyFpBbHWwhfGKkXwWxhsSHgFPKkIihkmMKJjHcCiIzzHfFqQOohgGkKZXxyYBbZBbafmgGMaAsSXxFWwSsSAhRPprMmbBmkKMHaTtPNnpIiyyYbBYWwstTjGLlgJOgGLlokgDdTtGhHKxXQqAtoOUuZzTJjinNSsqQqQILZzaAcNnCVvRJjJxXgGjrPpDdtTXxaAIvVgGiWwllLIiEeEecWwRkKtCcTrvVXKklPpLxlLyuUYVKpPqwWNnQkkKvlLVvnNOOLloRrkKvVEeoAAaCcsSHAahAaFQqfwGbBUugWarRdNQZzqoeEOQwhHWqWgGkKmMwNfFnLlTzZtoOZzvVcCvVuLlUQqsnNSnDJjbLlBvVWwPmMpaLjJlhHrRAeAaEDaIiAmMSFfsdeEfaAFqQfFXZrRzcDIipPoOdMFbBfeEmzZlLoOdaADLltTQMmCcqQqYybBvVWLlJjwXxkKVweUuEzZlqQQhHLlqpbBPLGgoGgOoObvVByGgYWWwmFRrBbYyrRnNxUMmhHuXfBbEeMmKkYtkKjJrRtTRrBwWbTpkvVaAKYyoeEOlLPQRrjJqSsfVwWvnNeESBbsFYybcCBMrmMRmNncCLlCKkcAJcCjKkaDuNkKnMmBbOLlRroBbvVWYqQywWwhHcdDCGgWEewyUrRuYRrlLWVvwLlzZGBBbPyhLRrlMmpPHYMmAapPzZRrJsSRrUubuJsGgSGghOoHjAagGUVvFfsSblKkLBfgGSMmsSsFWiqWyxXPpPpxXYZzoWwkKOwcFTtjSsJfCbBxXrDQqdFQqfRVvHvgGnNVhkKpbBVvbBVvPIFfpPFJJjJjjlLoOmMnqyYQNfHSslLqQoVvOUAauhkKOoChHkKcHhbPpaAzZvVBhHirRcFftTtTCxXyYUuxXbwWBtoOiIYkZzeEKTtEBbenNCcIAaoOjJiKkxXrBbZzQXxqREeoUuOvZzVeEyNYRryqQJjkKpPeEpPyYpDeEdPnUMmusgGSvqQVKkeiIEGeEJjDdirDdsAaxzcCZaXoOLlxAUJjrAafFRbNnBEejJuWNnHhnXxEwWebBNNeEnSsBbwYyRVvrnXxUuIHhDdPphyYLlRQqrHoOvzZIyYiVfTtVmMWAVeEvawvRrIiFPkKpIMmiKkElLoOevvVcCRrsLlGgKzZLbGgBDdlzZkeESHlLhUCHhcMnNBbJjUuesFfSqQEfFRrjJkKaTtAaAGgOoViBbHhrRKkHhIZzZzeErRfSAaSwWPkKpsCNncIipPejiIJxXQzZqEzMoEeiIKkHhjJOlVjJHhvSsUueELKknNtWwTmRrZfFkJjQqKWwzPpSFfIisjJlLuYyUwWZAvVeYyEcCSyaADdlLYlSfHhFCcnCcNsAaLLlYyzZiIkKfFWbdDiIByYGgwaAQqkfFKbIEeiKkHhKkBKkshHqYSssSyzZlLQCaAAacFqQgPGgpGfaJjoiIRrOteEwWOoTtDbBdiILlLlPpVnDSsdXxNDsFfMlLmSdAaRraAMoWwOUucjJtoOTfFCmTgGNnOFfoEetZxOoXUusSZzXxoOnGgNzOobBOyYgPpGIsSiuUDdeeEHhdjJDviIDBbLlaAdwWyqQYJYHhqQvVOoOoLlIiTtzZYySlLsySsjndDNUuunNkyYKUVfGEwWepPgFUuaALlHJjMmAqQaVoONnvyYTtovOHULlYyuhHmxXMiIhXxZzdDXFfxDdSYysRTtPpcCBcCyYbNnrIHpVNnvkcCKodIVvidDDQqKkHkKuTtUsvVSpFfPVhHvLlkwWKDcUuCsSAaFfNndYyNnazZAhhHkKIiHiIcChHwWxXBbMmKkyYIsLlnNEevFxqQXFdDoOiIVvGgfxXEeEbLiIlKkeEodeFfEoOTzZtLOolDSsOZtTzCcLeaAEPHhplwWmKkTtMUuSOosUuRtTrsSFXpPxvuUAaVSspPQqnNoOFwWaZzSsvtTVaLhHlVvApPhSvVkvJsSjdfFGgrRDANwWjJVNnXHhxvgGGgKtUuAaThVJtTlLXxDdsSpPjpxXPvHdheEHGZzMmgNeEYjVvYyiSXZTtLMmlzxWwksnNSKhPpHkKAaAuaAUbZzBHhXxBbAaHhajxdDEeXJgGlZGgKkzRrYyxmMAXxaSsmvVMNnoOHhXwlKkurRULWZzOoQqqQJjOuUobBFqQEyYefkzYyIiZKEAabJjBWwnNeHhhzZNnHsSJqIibOrMmVQyYqbBhcCALlKkCcrTtRaHxXvFCcfMmRBESsqqQQeeEiIblTtmCZzcMXtTxDdeEqQLJjoHQkKPpBVYyvbalLyYGgFZoOzYyAqQCcxfFXaAGIoOHhisSpPgCuQqNSsdDxXmMnVNnNnvezZEiIVNnXxeEvLwBegkKeEGEbWboOZzaABmmMwWMpPKkAiIIfFxXksSTtRVaAnNvwEeZGgSszzYoOMmyGCfFcgnNoOjNnJrRoyYdaAxVvXDeEVvKkOLvqIisSHhcCQbBzNEUueuUzQMGggPpGmqDdREepPzZiQqIrgGDdZlGgmMLIiBBbbCcxXneEjOoDdJZFfBrRbeECcIiYaAXCkJbhHBjJjumwWMFfNQqnXxoOrtTxtTXOoRUFLkKvVGgdYyyeEYDsSVjJJjwVWwRrCcVeEsSzZvcCeEXxvfFWqzZQCmMgmMGONnoCcSsBbDbBHhdqzjJHLlhXxZSsQGgQNniIGgAamMXxCcyWwHFfsSyBZhlLHGgRrsdDSzRiIdDwWtThHhHlLxXrxnNXbYKkUAaRWwWwKkaAwWEEeErReVvgGlDpPtToOowNJjnbsSBIipPWpPOPRrpxoOXAaQXxCcqYydCEyfFYecwcQLlqRrhHbSLfFluUsShdDHzZgRlLrGjJpPRrsScVvCDdovTQqtsSaAPpjAaKkcFfhlLUuiInNHiIPpbDMNxXTtzZnskiIiIMmKmMrsSgGRnNnKkNSpPoxXZzOopOoPRrzsSYyZOukKaACTbBtcUVKlLXCcKkxUWwuBJjaAvsqQSdJjZzgeEeQqZzoOMmwWNnkjXwyNnYtTMmXAaWwsSoUZzuwJjOcAaColCcdDOjJAaoUQOoqoOteEURrjgvCcxXFfJjFfVQoOqhvVHxXGvVwzRrZmuUMCaAcwzZWmaAMXQqtBbNnSaMmpPcqQCyYAsaKQqkGgXxEdBKkbDTwWMmMmteXxhHJUxXkKMmTtujBTmMoOWwaQqAnNYytuUcjJHMmhCRVvrjRvVrPIipKkyVvYtTUuLiXxItTNniRrIGFAaLlfyYaAknNKONnoglgLlrlpsSPUuLeEQqldEemMFyYfgpPGmPptTjJKHZpPjJzQRrqfmMYypPutTdDwWUluUQqIiyzkKZMmUuadDyYHhFfJjHYyYjJyhlFfLpHLDdkFfvVWwnNEqQeRrKIOoxXZyYIwWqQqQizpiIAaOMmxXaobeEBbBaElLwWesSAOASyYsPpwBLlIisSuUAuUeEwJjWaSQqLlsWwoZghHGiyYSsIDJiIjrRaQqAIOEeFFfKkmMQqeEJjsnDdNwWNnJjpAaPStaRrbBAuEekKUMZzmlbBLTwWfPvVpjUuAaPpRrWwJoEeLljPpIiIsSEfFewWfFaARrQXRrxunNUuOoZZoOlLIFfQqgGXoONvqQaSsWXWzZztTKkZwoOpTMMmmPgdDGpMwOaAqdDQBTtbBjvVTQqtJTGKSsRVvrkgtqQtTfPpFDdzZeEOozZWwImkAVvaQcCqYmMpJjIipPeEWwdDGTNNSsLlnnmpPizZIMAaLlHfVdDvFhlLQrXxRAaQqsSqaoOAkZwfMzZljJLiZmbBxXfFgNhzZHquUQYyTYyXxTtSsZzuUtPyRrFJPpjvcUuGgCRhHrVFqQfXaqQFtOoTvVHhIilLXUPpufFxFfBlLbUpgfFGffFIikabBASLDdAaHhMmwUuWogGSsCTtUJjaAuBpPsSlLQqKbBwWkKiILlDdqQBbJjklYfDdFEeOMmEebBBCFfhLlMmZzHUurwCNtTGzcSsCfFTtZAaeDdhSRpPrslGgLHEzZXSUusVvWfFPnNgqQGzpPOopCxXqaAQqEeQcixzZfFXLDdlHhIwnNWPgGzZfFyJjIjJTeEtoSCcNFvlLVIuUMAxEekKXKZqOoOoKeEMmkxgGdAvVdDaHhHHhhdDoIlNcCnrRLiMmvVAaCchvMmUusTtbqQOEeIiTtaAVvUjJKkuUzZljJVvcxmMoOVGgvFROcCzZoYZzyrcCpyyYGlLszZrReECcYyMRWwrmSgyjJYDbBbBoOHhdYZziunNtTUXOEeoWOocChIiyYwWHYDdyTjsSJlSVPpSiLauoOiIUyNnXbBrRtgGTOoxJjPpHhYjoOEeyYRrSskKnNDMmddDjdDJTaABbbBddfFBbLlDRrvVWwiIDsKkStOomrCcuURMWwAaXxZzTtIdaNnANnmMlLDiinCcaANwyYWwXQqkKpPiIFfknDdtTalLyYTeEhfFhrRHHqxXCcjJQNntdwWhmBbMHAawTEetEemdDQqMEmMJsIicpUuPvvrRVQEeqVWbBwfuUFCRrGoOWARraxXnNwqQUulWMIiNnmmMmAasSIiXxsOlnYyNgGHhLPpWwoPpUufFeTtuaAUEiKsSkRoOlLZzpPrVvvVkKAaJbiIFfqlLQqQhhHVvMzAaAaMmkwfFtNnWYSsyHhwcCTtbQqWMmCcFfieEIwujJKioxLQqDdljJXFffMmFbBVVvvBbOPEenNlLIgGBjJbBEnNebiJQqMmVvuUjJjivwQFfqtgIJjvANnkKQqgGIiIoOuUiQBbqUuEeabxtzZIiGgTXuURrBimMIEATtXxaLNnYYyIivVYIFcCxSsXpmMtTpPPfGMmNCcngWZpzZPaPANnRrkKQcCvMNnUuJjmaAWnOcCzZoTdDtUuNuGgUwVvfeEFVqQpNjJgGnPiQqJdDiIQaAqYyAaLlIuxXUieoOieBXxbvVBbrREIIioHhOUJjuQZlLCuUcYGgGGDdjjJnNJbBDXbBdDfFxgyrJCczdJjDHVaAuUvlIinNLSswWSshPpozZOolLtTpPGkKEqQPGgadDAFcCFfFfWwfOofFplLRdNnDbBrcVvKCUucAmMaZzKkEoOFfVRrjmpPMXhHwpPnNdDmMWGJjSsmNVvuUwWBODdoFfTtbnMgxQLlUuqQGgshHMXxJKTtFUGguKkMmqQfIexdDvyYieEIOoVvoGgOVGgvJjHUHuUBbSslPprRhhOoLxrRXlNnCcHRcJpFfeEzZPasYFjJokoDdOqQKXxhHKkAanukKEeQYGYygoOynQIiqNFfCBbcgSsWdDMmwGFOXOZWwzkuUKoUkYXxyTjhvwWuZzHgGmCcMrRsSbBhMCcYnpwWPHhFfiJjmMIoRSsreqQEOmsSRrSsMOEeafFlkHhLtTlKLWwACzEOTtrHhxwRmMrWlLkOoOUzwrebcGgvVfdRrDFZzIJjiiaAeEImMmMdDzZzpPZuMmFfuUqQePKkNnDdpEzZtTecCEShHSssbBUuRrdDbPnNpbBfFJAamYyMjHhuUBAKkaSxXbBseECcSpBzpPSsGghBbrRUuxXsSOrRoSnNnjJOqQgMmGyyRjJToOCcMmivVIOotXXCcxlXxcxoOXlLnNIWPbBxdDuUyYXpxXEhvVzBodDxXHMdDAaJNnhHjkOHhoLlInNoOiNBbErAaFBbQqwvVOopAaaAzhJjyYjJUuvwWwWDdspVvZFfDYoOpRryqQiIYPqQOonqQNevVoieEIVHXxqQhPWPsSIKkdQqkKzZotTbdDBOTtcmMCDFcQxXbBrxXRJrJvVjRGLvJHgcCGkXXxxZzKgGWsSlLwhQOnNqQVuUvoaUuABbQZzSsPZmMGNnzcCZgfsSHhsSVvFWwztlLljyfFOWWwwosAXIixaHoRrOcJjbPpcCRwWwWzOIlLifUvVuQyxbBIHhFWwfkBbKMmQqiubacCABUyKgzuUZGkZziIUJzZuhQqjJMvVuUMmUuDdgUuYgiIGMmwWlnNnOoNeEbEeBPFVvQqfGgqoOXMHhjJZzcYZocCXUuxkKHhfsSFhnNmgGfdDFqjJLeEeEnuKkVvuXeExeEoOrRWoOJjnNJMmjbUsyAaYMbBQqwzZHhWhHcCJcCyMkCcdzZDsSPCbBcXkKZzyYDdxcCRrqQfkqQKHhsSVvWwZAyYfFirYyqyYsdjbBrRiHSslhHxKkXLFfcCpPHcChZHXZmMzpDdPYydDxZyIiYtTCSFfnNsckCUKkuuwXxWjqNnjJmyYMnNfFHhQqQDRrsSIpPiTKkFIeEPELlyYeNdRXqQeExHzZuUDdpKkzVvZygfFhYyOmMaAGOaSsrRAQnsSnNXxoKJfFjkDdxsHsShPpSHmMEBbDdkUuooOOCcjJKMIimXOoxIiMmphHPUPpGgsShHQIVDdGPbBRNnrSmMwBbbBWQseEyeEeOoEIjkKQUudDbhHhHBdDTsEemWwfAatLlMmAaeEdDYeEycLlCzmMZdLcChhwTHhtwWoOmMWFNWwnHhtTGzTtpMmkyNMmnoOQhHqovSCSsckfFPTtHhBbKkoOwKqQiKktTLloXxOVvRcqcCaAEeCcWwTttToYyMClPwRXxzZhfyADJjDqXxYSsyQzZaAiIdJhHtTEmMPVvdbmSJEAhHHtTBdDbpPegGEOolLXNnySsqQPIiuWwhmZzMefJjppPjJjJxdDyHKkcZzLlCzZYeEyRrHhtOojJcClLtobQKkLlqQvVvWwCcVCcqgroOCIicZYJjBbcClLTPRrLFmMfgZpPzsIiZsSlLrRLtTtYyTSNzZnzxXZRDdrOoxWwXrRGgNnknNKNnSySBAapPttTAnNaLllTjJCcrRAzRrZXPpxvVHYybBhjJaSsbxWwXqJoBbOqYyMmbTtqEeHnNJtCkKrqQRcUPpTttaAiIoOKkTdDQHhMIiwtBbvYQqyXxlFfLAKkJjdDUCIiUGgTnNzZtuEekkqQzZvhHXKkRrSssSxtwjqQJuUTlrRaBbXxAbzZBRdOoDXUuLlxvVHhrLfFlykKXxWwgMMlPpYyLtqQToEemkKpPBbMcLlBvVfmMWZUuSxXSPpwbCcFJEifFwWBbJGgRmMrZzGCXmMxVxXngGnNLlYMJjmQxfFXnNMeMmiIlLEZzmqSsyPpwWXoOSNGgyWYywPpnNXJjUuxavTorRwuUWqrLlsPpSgGOEWbBwegfaAHhkKuBbYyyOoHhYgCcmtTUiIfqRrRrsSpPjEegGJtySEDFFIiffmMFbTtsXxSVvBUtkKjgGEeJddkKVnMzZmtTLlwiGTtiIGgcTEetCTeEtdoOgOmMoMmdDkKdDUuVvzyYdyYBbDZGyaAYJjfFMmEenOglLGADpPxXdXFfqxXWbNnoDuUyYAEndeEDvVNADdaWwRxOWwgGocCTjJUBbjJNnNnPJtpeEkKPgpPGtAUuhHCcNnaiIPWwpTmASsQqKTtkYNZzntTHhczdDOoqDdQsSZOoCHyYhkKlLmMHhvqQMmVaAYyytTwzBaADmcCGsHhtcCwWrgGRDeZpyYPUfFuJzqlLlLXxQnNZfHceECOohpyYPFZiqHhoCcUeEnNYylLulLzIiZTvVtzfFZAZwhaAHuPkKlsSnwWNLmNnrRBbuBEwSjJsWKkvVxKAzZaIFXDdxSZPpxXzsMmuUfcFfCDdFfjPwWUIiuIiBYEjJqQeMmgNnZDHCchdONKkociLJfORrIiodDFVvNdYJjzAbTtJjBDKkdbByRrYaqfFQGcCBbPpglZjZwWKkzvVJHPphlYyJOxmMmutPplLKxCiIBDdbcgTtqmlLMCbLlZzMmlLGLlIigBwKoOGIhHoOaAyVYyvhnNpPYZzyfFtTKkYfnaANTtFKkHUqQAawWyEsSURGgrobiEeAXxaFGAaTtjhaApPXdDECcmMqQcCQqHhoXxEeXaAthHTIiKkzBbuUNnXxGgjJZgqDyYrRtXxtuUWgGwogdTtrRBgGXxMmiIWwgGLMYymlnYyNYnvViWwvQqVvdDZzViIAacCxXNnSGgAbBrRasnYcTtNnnkKRrFcJjrAaRdDygIhHiGYkXqQmMOocCnNSsXxRrolLqgsbBJjAaSlseEfFkjQqQqjRrJBULcClbBZzrRGmMwWgubJOotTzlLBrRbNIinZGkKCcgqqQwWAWeEozZOQqaADdBHhbdDSyYswaxnNfFxhtTVvnNuVvnLlNSThHurEeRUlCcqQbBLmMEenNoOxSfFskKxgmMGXxgaHuUDdkPHhppPeuGgICcxXOWVlUubBJUuxXjFfEezUubkKYLbAaBlypPhWCcwQKkqBqSYynyTtqUuQYioOIEeYyoOFLlzdrRLBRXxziIZSFfsSsjONbbBLdCcIZziFfLpIiPIPhiIHaAALlrRYyansxXmMpPQqYZWwzOwxXdDUOotpPIiwPpzZvVPBxDfQqdAaDzaAZAaFrTtvVmMuOmMVvQqmEpXxPkKPgGpeGghNnaAFGDQmaAZzIiMwWquULDdldJYyjUuDdEexXaAnKkNtgWeEvVwaUunNGjwEonNOeNnrRWBsSWwaqDdjJQkKEeYOovAaVyIKXxmKjxXMiOoGgxXKkIuUxoOVvXgacCFHBbhrRoOffIFfipKkPDueEFfIwQqIZzuUipSsPWIqQiDRXBrRlLTttvVBbTbltTLZzxBbRoOtTZTBocCckbByxXYfFfKmMjJlLkFXxJjTtjEehYQFczZJjCRKDNbBnoOdAaiifFeEftHvVbQqBbTXxteEeEtpPTtzpPkKFXQqGgZTtiyYIPpIiQumMnNKvVKkkwrRKyuMmUQqhHVvYJjdnXxSsndDZJjzJiIWNdDnwZzxjWFxXfFfVvwfLlCKOokcRrUuHguUSsGhHmpPJtbBqQczZCJjTvVjCccCWwWVvwPparRAZFfzckKvVCRrJAaSKkuGjJSsgAaZjPpZWwlLzJzfFjedDECnNcJkKkKaAoOkrEzkAagGURruQbpEePjMhRrHMcFfLloONnruURcCoOnNFfmMnqiyhHuxXFfYyUGLlgzUTtEHhYOUulZSsjJrBZWbBwrHhnYysuUSZpGeYAtTnNCVuyYyYLAaltnPpNPSstInCcgGNnkVxXvcXxwWxXrRJDdrxqQGgGJcZbDdBzpPyKNwWnqXxQRrJJVvysPpSxlLXPpVzZiISuLlodDAacCVwAaWDbBbBowWGgOtyYTdTtXLlxRiIfoOogGguPpaTtYyQQqGgcoOzZgXxzZgBbGdiIDGLAaMmPplFfvlnNLcCVBwHoOhmMWUudPpzZWwDduUIiZzrRnNVOOoHObsDdfaiIAOWGgwocAaKiQqIUuzZgyGGnNRSdTtlnLlNLmKDkyYhHRgGrcCKzZINnilMmmMZzmMLVvAVvadLUuVyYvxZNnhOoSsGgQhHEeqWcCOowDdRUujJjJWiVtXzZEeWVvdsSSGyUuYsSqkaAKQgWwXxpPcCWTtqQdDSseEYhXMmxJbBjdDlTQiICeEuUDdeESuxXUJjqQRebiXxIzZDdBbzZaAOolLyYgGBbAqQFIifFeXjlVvLwzBbWMgGwWnRrZzNSsaAsSVvvVnSslLAaUuyOxAXLxRYxXzsSZWwzJjisSZzyTXzsSpPwWSsYXvVOoxyalvVjJLeEKkcCOorRrbrUuRBFfsGpjJXVitTLlIqnLlNAhHFftToOFpPnNqQnURrutNnVvxXdAaDyyYpPuHLoOcZnNhHzgGvVPaVvAtTQMrHhQqXxhrReJjNjCUucEeJsKksaJrRjewWoiIrnNRbBmMuUhHXxbBuDdgGCcUlLyDwWuUrqQvlLRqQqQzvVkYyOneENgvVLBDGgVbZzAjJXNnCwWcVvhHUuFVvfxXpqQElLTEeBXxbtoOleVvEFZzhHVuUvfMsiVwcCKCcKIiKkKkWwtpPTtTmSsMyYXxMdDmDdhHaATtdcCwWLqQjJNRXxEBlLfSsoOpGgdDsSzMpPmbBcMmYxXqQyJMmPphHdoOteEKkTzhHTtiIZaOoDdwWKKktVWwznNvVZNnDdzwWjJZhHTtlLgWwGZzgRbBwWdDyYFcCgGJkKtTjTtgzOdDxEeXoNnxXkKvViIuohkKOvVSspfNJjBbjpPpPjJpQqsSPFfMyZOoinNIbBVvuAgGaDQtPpGgHhJjeEpNbAuUNnmMopsSKkPGgqQgGqQLzZlSyYsvVOlMmLvVNnvaAmtrGQiiIIPncHhBbCuUwTHfBbFkGgKaLjJlAwPphHgPIiOoYyqprReEMFfpPlLmWxXwhRoOlfFLZzlLmMrKkPiYLlyXxtTIpzcCEdYyxdUEeuBbnnvVNZzPpNsSGgkKvVPnNaAaATPqpPGgXCcxWwQvIoOikKSnNsUcdvVDyfwWgGFLVvyGvVCctTOohFfSsoLlOtNnIiNnFERraAejsYyfFbtTByYTtSsSEeqQHdDgrPpkKptTtCptTPclEeLMmvbBBbXxSscCQqKkeEkLlHRrAxXDlKeEkLNTkKEVEHDdheEMmjJxXxqQaiMmvUOouXxVGpKkvanTtvokZzKLlvVHhXxHwhsYyvVVkKvAavVWTtIiwSChHfFcSsuUiTXxtpIiDdzZJwWoOjRBPRJjrKhrxrRneWwcQqoGKklZJjjJLXLlCpPSscgGzZqQyYFfqPHTshHbBSIjJAMmsaACcEnSuUPTtqDdWZkYyKznwwWeEkFJkXZzkKnFfoOhgsKkSFmAaMdmlWTtgGofFnoOdmMfFDzKkZNrROxyYXVvnNwZrRzLMmmMIahHunDrqjuUJGgvVGBLlVvbgYjkgbBGKdDIVgGvZzZYYBWTtwxKkcClPEepMmwbSINnglLGiIinrbVvSpcCQINbkKzyYZmMmMcHhDTtWwnbGgFQqcCTZcrRQwGgkFAafDEDTkKpPVzZiCQqesWwSFzZfFkluUQVvNnBbwbBNhKWjJQCfFcNvVmMnqpOoPZSRHxwWpPXstTSaKBbPpkAzZgkKGoOiILlMCPkqHhQlbBbBrbPnNUuHXxhnJNnjosSscyYiFftTOPWcCZzLlmtTlNaAkKiInDduUymUudJjcmlNkKMmnlxKkLaAlXREeUeEhnNbMCcmbeQWfFwhHrRBBbjsSJTLlWwTtjJPeRrOovVbBEmMwtTuUvxYMFfemMEvMmVMmvBbVSsmnzZluCcGGgEegGoPYypSnNqtIfFuUOlLcLlCdLOnfFNUuRRrcsEedDShHRYyjJNnZzvQqhHIJjizZWwGgNnQqAaBbiIFwWIifVxLQpAxXaAqrtcCTRtoOAaeqIiGZzaAgYmbwWBFLqyvpNnPMfFWHaRJjmCkKcMrSsYyAtWfzZFsSSsDeEeLyYdDgyYwWyYtkKToCBNneESEeuUAkNuEdIiDeytITtiDZiOoIzdYPzmbBMUuhHGgqQEeZiIPyoOEeQoOUnzZVvsSkKNhHcCcChWwMdRLlrJYoOtTyWGMKkgkKZEezUuGmfUusSTtFbTAaZBYyjJNnZzTtoODduUvVIiBbbBxXhoOQqgPLnaoOArrkKRZzYyiIzZUUEeutIiwWTFfFfBbuuSsKkHhOpxwWeEaAAasCOoUufFRJjIiHjMkKaIiOoAqORfFWwOVvonhHYyNWLlfWfFwVveRJopPnNOqQeEUEedaNnLtTjgGebBjJGytUuAioaHzEJwtUvVuUufFPpsIpPHhiyYSsSzZGgxcCXsrNqQndDRNnSwVczZvVTmMTlLLsSMmPrRWCnDdKkNyYfFcHPoJFOoJjyhuUHdxXDwWpYgbhHvLlrRxXbBaAVmMnNOoINzZMOGgUoOuohjJHyCcYyAaTtYWGgwoOQPpqUuUwWoWnydoOMmmMLlzxZzpPNNnZzMrRJdjpmMPoOyYvVTIIiifqQeEtnHhNTEwGRrvVPpXCVzKuUbRrUsSjTJUbWEewmMKkgUeEpxIPdUuwWwWDBsWwhIiHmLlMRriIXdrPpResSLBOoVafTtSGgstTqIfFiTtDdYyltTLrfFRIizhHzeEdDQGgvVqzZdDlTtFfRFvnNJyYjTEedvVDkKtmSWwAlAaLaxCcKuUjJfFOashGwYyWjJuIiSsJjAaqezmMCcZEKkQUWwFUSsuCclXxIiCrRsScaAxaZEuxXXxVvYygiXxyssiUuLRGyCcFfKkeEHEehTtSIVKTtkqQryYWcCpPgQWwCceuhjJFfaAytpPoOTLlBHhboiIPoOFcdDCSMmKLDMCIiTteDCeiIrRkKSGEegcqQyYQqzCcEeZCtTjLJjlJeEsEwouwWUWvVqJIvVmQuUqMCcsSeBbwuUOoitTNkQuEpPjhBbHAaSsbMMEeIiMmmXQFgGEDddoODsRrSrRMdDpNnPPLyJZKkzhwiIpzZxXRGOOkCcAaAahxPpxeJDdxXbBSfRPjkKJzDdHhcLwWwJjPOqCsScSsiUuIUuQyLlEInNnXxFfHgaAGhAIfFPuXxiIkKpetThGgOXxszsSZSuUiWwLlIkKbccOsSMgJjxzOCcUuoZXOoGmocCCFfJjjJBbHhaAFVvNneIicTWwpPtnbiIaABXiIxUuEeQqIAngVtTBbcEzmfFZzDdYyfNnOqDdweuAZzwWeTZMmLisSOhHPBxXpPAxycoOCYqvVBbjJjJpDAadDIJjHhTVUuvtTKAaHhSsYyXxSyiDdWBFuUCcfFRrqrRLoAefFWRrkmzqQZuuUTZzTUuZGgeEWuYfNnZkIPobUlxLTmMvVGnNcLuIOodykWEewZzKRrDnNdpISsicCKkWwPYDitwKkmFuQhuNnFfsSOvVfsCPgGEeJjpcZzDdggYnNfklKkpPbukeeEeEEkdkmMHxXoNnOhUNZzzqQqQOoSsffbBIeEVvFfcCjJkblLodZdtTesSEvVpGpaAzGBsSbKgGGBvZMUuPfFnEkXYyxfFdYPDhJjEjIiIdphHPCSxCcGgFJjcCDsSgWXtTuUXxPpvvgYeEyGLNnuKguUdDQBbIFdDEKkexXweUoWwrReEHhUDduOuUpXgroPUPZTtmvdvcCVUuDgdamOYjJtQqVWJjWwwKknNgxLFYEeFZfDQqdbyYBFzfaAfFeElyYgoOLlfxXAaQqFjgGSdFcCbqQwADUbdDjpPJBVvQjJIMrbBQnPcCSspxXNgwkKeTthgGaAVATvwWDMwWsSVvvVmAjkaAuUKJKLTYySsgGtlnVzBVvbXRrKDfzZFqdDQYySCcaNmwWMBuPWwuUivVsSNWuUdTCUuXTtxcLxXZzlvaALwAaWIMtRrbOGVvCcAaxsSUrQGgqFaSsBbfsHpPxjVvOoCcJrRXQbBEeqwWXkrRKuEeIiHhUEjJDdDdsSRrMzZuDdLHfFhjidHIihnNBvkKVbxXCbKfMmHhMqWoORSWwiLcPXbNnMgGmSJhHBbjmMLlsBJvfFKprRHhsSpAassSyYIiokKyqQYPqQNnjutUHIibcxNnIScCsiusqOxioOmMLlUuYydKfvXnoXQRukKrEeWwRTtOLDMhHZznwWUuCcNCzZcbZfFJAayYeVvErlhWwhHIiEYjZXlfFLDEsSRoOrBTtbkQlJjWwlLXxisnNcvNnEcPTAaTtEekHhiLlrRsKbBSsRXxiuKJzXYyNntyGgikVVhlTBfSsjBbBbJFABbNnZzTJjUnNuVvtkKJjIcrRrRrWwAaQqqQRHGdDhHvVfFvBiWwqOUTcmMKoqiIXDdgGxUpPuQnNBEoAaNlxXGgBmVOovUNnujJMWfFedDWNHaAeAfTtAsSPpvVSXqUMcXSHpFmkKyjmkTLgZdDzHEqsLlSmxIPuiLBblIrJoOIiWUNhHFffsSAaFSvzZIcCbXMynQYSsnNyMOosRTBbAayMmVAHlvWGgDdwfFESMunNUpmMBbPWcsSBhHonPpNDKkdKKFfIiiIkzJUujxvEeFxnfFAEvzZVsSMvVmeaxXNCnNcXfuUgMjcCJkKhHOoNxXjJncwmVXcCxvsuFfeeRIHhjJhAaHiXxOsQyYKFkaAAaUuvYRfFraAyVbmWvCHhbMmBbBAAaAaacVTtoOwoRPJfFMmZzZwnRoOlLFfsSqSQmbMmRmMWNUnzzZjtEehzJrnNqwIiehTtOHhoKSrRirgGXuHWvVkfIUPpgVvGbUuXYyQXlLgGNtVMJjtXoJWRrAZzHeENjSsgVvGslLkEVOovpPepQqqSsPDkNnuUcvvVVXqFfIOoipPFWwfQjLlPAOoKLlkxpmAaMPIyYgGWqQXxpPCcLKkrWwOoRfjpJjHCcJPrRmZAaqTkUnzZxuaAkkjtIKKYCtTAacjeWsSwSsELcYOoqFfOZKkaAiIqrGgOAaDBbFfdQqCcoOWOowxgGjJSlLxrEenCGOyKkaAYogcsEuxXxDdaAmxXcCbWyYDYynPpNnNnKkHBUuWFdcCDSskCDlTtLFfUaXlLYysSUuPLRrCnzxGgGSpCccCPjJIhPpHDSsMGgHxkKiIyqZzQvALlaJcgEKkvVrXxIzEeZeQqlcfFCzZNIxoiVvWwmMZrRLlRDdrzGggYONHEeNVKkvnQRrqYyXGUXmMlStrRaZJtzZAaTlLDduUeEXvaAVxSLgGXxFBeqjJwWUuQFoOhHUqQPpuslPlBbtcCTFfvEeVWeEKAysSnNlLMmVPLUTkKBbVrrBbRsAawTLpTtHlCqQqQaeEslsCcaFfAFfSlIkvaFJvVfWrRHbndoOZTtwWzwWsWTtPjiIJRLlrDVcCKrwWsJjpNbBnVvMSsDdHhrRzZmEeFfKmNWSRrsOfbarxSZbBoOHKkwWwWfUutAPpNnpxXPUndgYRbFzZfsSDUTtBbiAkKaXfFxIGfeEFZzauUugfFckKGiIaABYynlLJoesLDVINnPpIiaxXapMgLhJjJjXtTrRanNADduUxYyFsjJtTqyCzZzhHInpPyRrYNNKRrjJAHhLlayVvYkIHhivigwWrJjIEeMlbQFmzjKkJdQUuGghqAaQHqMlLmMWwVduUBbubBCbBaAAQNnqzUuZafmVhGOsScMmClLQGkEeKhHrREhOmZKvHUuyYhVAaVZztfvOoxRrjxmFfFrVvWhHwXxgGINBIiigLlGbBIusKkIbHhBlLlPpvVFfLYyiDdSIijJMmjJZlbptTPeEmMiVvYNnyfoOiEeIayYADDdfFeEQqYRJldIivAaznidDyYIFwWbBNWIZPMyqQxAarNnZurZGgDdigVuUBbUuxlLXqQtnzZcajJfFexWnNyGgKkiRrUieCcvVEPLlQMmjJsjJZzSqFsAwWwWQqBBDzHhzguPpGdDbBGdeTtmPBbplpDdBiOPMmpYyMeEwWtoOfHSsOKklkKJiJjdqQhZznJCHuUwWiXVLllLdDZzZhzaAffFGgFiIiDUgDFqQBbfdKCDdyYoObSUuvMiImVMmAsUaAKkJrRPIzXxZiAaAVXmMQqqXSKGdDDjJdVfFFKkWwMmfNzZZzfoywWYbRtTroOHfFPsmMirBFfYLlYyoOHHhehUWdDwzZCcqZzfFkKTtfLbVTtaUnNdCJjchjJwGqSBrnNyEyAiIaeMisaAQyYodDOgBzhAqQBbaAJjRropvVqGhlVeEvVvHVjuqSXxsfFlLoaKkVvZzzZlaQLlqSdDsnJjmLfFMIiFfADdaXJjxVvpXLlxfFOWwyjgDJjmRdOHbBnNUNDipPmMQjJTTrxqQanNPfFpDdfjJwBYveEVvmMVlLJjqWUukrWiIBDWwdqQgXIUutzmvrmxCGqQlvVtIiTwWjJeKkNPJVvTLHhmMTqQtltAzwDKbpPBZznVvtTNsSNnGgtToOHhIRriOCmIZFoOfziMcibfbtTqkkKKDXuCcUxdJjBpXxuPpxOXxoOGgZibBNnEexXxWzcAavaOOJjiRotTOEemeyYzZlHhgGoOPptTFfbBqGzZlLgiIjaAJbBeEjJQQHXxmlWwwNKkFfybBYEeUKNZeEjeiIYyETtsSxHwWkKhQfFqXqcvhHVwWKowKkDIGnQzZqTTmjvRrMmVJQAPpadDqMHhmOoBLdDlbJzZjNbBqQOVvYrKfFgGsSgGpAkKnZzyYMufFIbBIzqQZSyzZGguUXxYyYQpPEesSuUHhuUugvjJfFSbtluzrgsSGEevVRZUoORBbrDdxMmPpFfkCLltTcKMmrkcFfnlLsTtSeCccCENyYqohHHhXxOkGWgGwVvqeNxXkKnEnCpPHjlmtTMLJlLhGgKnfNqQgGhFfoHhAlLpPmCRSscZzJNZnNzNcKVbXxxCcqQxEeJjDbBdDsoFXxEYyfFevVedaARJmRcnntTetWroOmfbbfHhFBzlpmEeYWwfsSFyYsuUjnhiIWwFplnNjJSfJjyWwYeBkKbJaUJjeEspPSzqQZVLlJIijMQwXIgeEpmYtJjKLlDPpjJRrdJuQqrRUKmMkMkKUcCtTKkequkyYKTtUjJHCnNwWzWGRFLlYcdkeIiEsSvZpSFjmMJFfjAaaARDSKGwWihHzZercCWGZiDdRrIQkNbqUjJujSIAXxUuAacCLSsyNLlnNpPBfqmWaGBKkiIBKzAaJAqIivNhHKkTHhaBnOJwKPgbNfakKBbdDdDAnUyidDdMjeIYBbnlLpHhDJpPFfwVvoGgpbfNqDuVviqannoUurWwzZNjjJQagSsGmOoBbMDdXrRitTQhHPpmEeqQrxFfXCdIiDmWwmNSsSHuUrgDdGpdzAawxSiIxXmMsnNXZlyqZlkKBbdLpHxXbWsScCWbdyYDTtFpPVJjaRrdDiIhHwWxdpPaNntjJgXWwxwWQEdDjZlMNnpseEhHUZzuhHODUPAYrRHPGeEgydVNlVfsSwLlXxsSSTtWZGjfUorfkTtfsgZnfAPrRpJDaAyYdyeZuXxsSaviOorsICEeciGeHRSrRVQlLIiQqcCYybswWsUNnuVuqQSRiIQqKkVvYWYixXKVhHjnNOoNLMwWmVfFvJnNVvjPfYyFxXxQqBbXfCmMXoRnNOoGJuUnHhWMCGgdcQqCRrbDdeEFfqoORwWLrjJptcCscsatHrRXxDdoOhKktxkPpKcaEyFfYfrRjJlLsYjJnNgGyYHhUueIeEIOoZzZFEEeYwkGpJancCWMmwgnhrBbRHNAmgmrRaczsKkUBIibpnNXVlOonNLaciIXMGnwgYWwsMzZnNmhHrkHhPLdDbTFOoOvVGMmzGCBWwXIixoONSdbvkNCPySsaAPpbBevwXxAiINsSnaqGhVvSuUsgfALFfqdDiawWKAWtxPrdbOeEOooYiIPMTxXrReEGlLKHhOoyYVvyYxXkxXTYfGUubcCoASszQqZBBAYyIODdLzhHFBDdboOWOoqQmLleEdZtvVrDheYyoOuUdXxgGpPvxjJXfFjJuFEeffFzZyZzZPpzYyYgMiIJfmMuqQSsgyMfpPFmtTPpjJGgBeDnNvVdJjKiZmxXKkMhHgGPpdLHhmgGQfqsRGQtTLpLxXNIinYyWwzZwKsQqTUKsSndlBDDqgGeGLoOjrrRZZeEIYpqgGoOQgcpziEepDdxxjJXJjAaRrfFgGnYCsSckKJAaPphRQVgCtTcSsRrHFAKIPpqyTAatnWwjKkkLlKzBbzOoIiZuyYlSsLGgHWKQqfFCckMXGgdDyGKcCeNsSTEekERrVveEaKemMEkZUJQqjZqVGgfFvQiIpxsRrDRrddQqXEeMKFaAavVxPOfOofmMFGLlpPzZrPdDNiDZQcJjCwOonupGBnNjKkOoVqMyYolrtKkRfsmBEeSseiIIlkPpYnFfNuUFUTtalssSoOviIgKgGPpVMtzrhHRZPpgeEedGgvIbBqwfFTUwWDXxGoCnCcvVNFpGqQSFcCYJZZzzwWZUuggdIiDuLrRfAooIqIiWjJvtwWPpTPpeWwXPdDWTtgEiReaAEVBJjuTWvVwnkmqLChYUssxXQIRrQqGLlRKkJgHeQEGgIsSzUuzZAadGCmYwFqsSlLOrTfzZmMAnCyYcHRKmMcCkrhWwCcafFKkAkKnhHNlWQxVncCEeRYVsSaAqrRxXJOxIpPeEYyjJjJueYyMnWVviTtVuUxXFbvmmWwnByrRUuXaAsVwAafFkKNMmuUnwWPpovrRvgnxyJjoSkiJjWwJMyiOHhIXxHnNmMNsrRpqQnfFPpeaAmwtTwmFfhgcCHhTRrirvVHdhBlLbDoObhmGgLDHFfhFfvYbBPpFfCcZzZqIJeEjicCyYQznSsNytcVvpFfInxXMUifSsmuTMtTLvdnNhHYyxxXdBbqQxXzAyxjbBDdLlAaoOvVaXqQPmMBbmVZCcRUueLyYZzleEaAiJodDCcItVZztTvmsThAazYWwmZbBsfLsSvYRjSsEeJBbKxpbsSpPtJzZjxqNnFfLqAawWXxvDHhceEJjjMfFGlnZyqQYvUiIuVFaNxWWkHUCJjCUuqQOJvUdcaAyYUvoCVzZQZzqlLwmQFuUxvmVkmMaAiIUHtcOTaEfFMmtDsRhwXxKIRryYiUuWvPpeqtZzzdXFHTYyGdgcJjHwWPpkRrKlLkPiXxhHZzCnNKkcPpjSOLYSsSqsbjFfwsSDeEuUeEsSNCATzcPFfipbLqqwrWzQPpBeaAMCJiIuOjdiIAcCalrjSnPDxNpbBWwzZEeBVrCGXJncJTlibBXuUqQDdKfFAahjJapUuKmhCLlRrcnNHYVvyQqKkVHTEetlRHhIizSXFkKZrRzDdfbBybcCkKUcCAMmkxXOhHxiIwWJTttzXxZXTuLlFfulLyYqQgcCGJZTCxTtdyYaZEeQiIPaiIQLltdEbBhtbBJjSYiSsIysLltPwKQqHhkHFKFfvtMytKEMqIgAvVmMcruUFfuUGgRCwIiRKAfLMAPpahHmGBugxAupfOoFkuIiXcrnNAapPcRrCFfPpRcQHygdrlXEDTwfFgZeSknmQmMxNuUnCvVtzZCchHJTtkhNyyLyLdDlHhXAaPpfPpxCRGSsbVvADpiIPdPsrOmMoEeRSpmMmYbBxeEHaJqcCQDkKamIhHiUxRrrRbCcBCtTAORxbEYQqySaILliBPwieETtCcGnBTjsSFFffsSvauovhHVTrRrzEDRrnNwGmMwWTtPmMZsSzPpSxiIxKyYPUMiIzQiNnAaPpQqtQZFfdlLFRrbBjPpqQmcCcjrsEeyYSVzZwBEUoOcCNbvjUuiFUjJNnbBJyxRnLiIOHrRngSsIitfFTUDIiduNLVvNQqrPmMpfAHGgTllBKkbGXxQDOoTpPCSsaCezZvVVGjuxfFGgcabBANnTtCeQqErBhVvObBogkbBhgeSUeJeeViIpFMhBWlwWVTzZDzGgOeACdfFqkVfSdYEeEGgPpGaMmAUunrRNFfnNcMJjXxmDRbpPgSDIitQlLFfleoVpPSjJQvVjJqsxXmMkOoKvcCOyUCcMmeEBiICPpDFfdcpFBbghJtTMfEeJjWexXFLlHcChtTUuPpVvViXGrYRPprRPpUxQqCEegXelmMfFJbBDaTtAsSdAaDcCLlskGcSbwWdDmUueninNtjVgnBeQchHCLaNnADdyYyOtTJqQjwIiWNkJjBtTUXoOZzxbAylLAtwSbBCBaAAanwDdWNHhBbrjJiCTxoowfQqRrAaFUiRrIVvkwYyWMNnKkFuPQqptVUudSpWEPpewjJvMCEruUReohEeEedSqGLvtzZagjaRhoBbNbBoOcKkBqeLhRrHlrvVRSKaAoPJtaAhHOiVHmdDEvtTVRredDNWkMmeEDiuoOlHhLFflLyYpPvAwWfFiIFWIiwRQTtLcUuCvyFfZKaAkBlcrvFOorbBStTBQtxXjpPQqvVJDdPpztTLlJjZMDtTdTJXyUxzvDdgJIoOiTtjUuuAJRrjaXxSlxtTXHhHGclodrbHhBHhhCwqdgxXVvVBbjJvdDsFQBpliTtGslLQCdnNDmfFvMmVnROmMCrRcdBbkQqsSVvlOozZLxHSRgGOoxCcAAtyYTXUFfeElcvLGrRgtmKHIQqEeZzQZzqBgZPnNkDdiIKCkKXkKSWiVxXAbytkYyuDdYGWqdUuaqQBnGoDdnkEeKgBbgzZGWwByXxqhUqaAQycKfpPFkYjMIKYyBbsSjJTaZRrzAaJPPSVvVuIijsQaeYvNtrRFQBhPiHRFlQXIaPyYywWNWsShHRyYbVXZhMIWhdQqEenpPzpApPwWrRJkHhUVvBbLGzFfFZTYNnCZzkjJipCcCzYGgrRGuUgyKTxFlLnNpfqkwWrsSRNnWWwxFmcCcyxoZzOhHIiRMbkKBmaAriwWbMYkzbBpPdFffsGVvehvRyOMzGaRXxrNiIkKktUuGgDCAXxaznPRrnNZyCcYVRrvMZTtPzgEetTqQRwWuACFfzoSukKzvVZziperTOZzCTDwAaMlLlLiIlLWwGFEBKoEuUdDeQWwOohHqEWKLlnWwiPpwWQPpVYaAMSonVvNqFfuibgaCdIeFfpPZrRkzZKKKJjEvaAcCDHhzvuDcGNneEgCdfFZpPzrRBbXzCcenNMXxuOoqpEVYzZSQiFfbmoOKRrkkKhjycyDdkKkKxCcusLwYYydDMmmoiIHvCcVsjDLlKCqpPnnuBdDoLiKtKErolQqbdDRUuvYyOojJNYsOolsYxkKTSViTtNtMfAYCcKbsSjEnRPpYNsStTWwqQoJqQnNfWwFjHhOdDpdJIkTZzkKbsLJltTqQKvjghyYMNLlwgoNnvVlJjELlLvVwMmXxXkKWwGKBrQKkcMHhuyXxtkrXfwWiWSuUHPpRDaUnNHiIlNsSCcbySyHhzZYwhHTtxyMuimMcYnfFNdbwWCaPpARwlUuMJjzZMOYySJwzmyYLqtBDBbHZMKkwpPWQzZhHnNhXPccGZzjwWYBCcSHafXaAxFYyCOsSDOodVhHFfvUurRiheZqQuUuUUGUPSWKvdRrVvCYglNBcxXUYtiIxeqFfUjJQPUGFfguaUuAzZPBgGskRrjprYymBbjLHhioOkeMmjpzmpDooayJKCUFjshHnNSXwWeEzQdbQqFswCYyHhKErvTiIsSgGmibcCjjJwWRrjXsSxbCcBXLldvVDBbkZVvKkzKeOdDZhtTQCcphkKqYAajwyYAjjsCfFqxFfcotaAzBbZozKycOuvbVlLtnyYWgruyOolSzrJpjJPcUhLlmqOopPQVQqAcCutqQlLxHhXRRrRIrXYqQyHpxTCicGgCiSyrTewxRUVvuVHKlkKIHhLliHhLWuKkPUuUzdDjlzKRLlqIiQxBsRMrBbqfnoOuUSuGgUsqYmjJEHqXKkrIirRJiEeYvcCeEWzqaTlEhHjTOtPPpmRFUTKrLlsNvFLRwWnDaAxcCoMmtiFPpUodXxOUuoRZzBbIoOsSkKiSrRkmVKEekUyXyEjzZzsSRrRNhTcCardDhHOolLipWwrRuUeGgjJSKjJUxjaAVqyPyWwyYmHHVvkFfHIhYHhyUrSOXxomaAkjqQJfKWtTdaviezpPveBzZpuVWbiIDdKgGbtnNExTtXYEeyFoaHszlyYiTtOoSaATvVxOocIWwGRDdxDuUvVdAZblPNZTtvYCchZBXDdACfqkEqTtyLtmKkZzMmROLEUuelrfmMgVvIpPyYhHoZzOERxXLktoOkKoOwNtQqDdULluiIiumVvzZMLlhHgGTTCoaoOttvYlWwLbOooihbBwWbPBZWRPycGPSsLliCcCMxmQALrRhSszuUjaNnIiOhqPplhHfObEUPMmTtLlLtpPTddyAHfFsQylLVvCWRVvIyYPwnIXBbxdPPLlrHAXxarRAKkdIGSlMqgAaojcCQqJOecQqXQkrjSoOsJiIMOphVeEvHITNNnnSsEdDchekKPqxXFrCsSUucRfzFqDozGTCcRrWFcCbMYumNiwaadDwQheuPJNnkJcZJjYyiWwTtJjbdUuEwrRaAQcCnAiDGgdyYFdjJhtcCERenNgkqbGjJnwSsWNePkKNvOrcCRoKpPeEzBzZbZcCdLlYyEZKkpGlubmIGgAWtUuCcYyTtFtsBlaALNnSunueEUIvEUXulttTRrcCszpjhqQHJPTtPEgGebBATtuUxUutTUZzCxXcYyRxtlFxbduQlLmMzCcfFFfAaCcFpSUqTPzrGRrgRZteYnwxuUGlnUFUqmMxXQAaufbwUsBAcGeaHPpzQqlxqFGXvSsrKkPpaAbbQYZbBrlNgGnVvyYmrQvcCwNDdnKVMQqmLlvfiIeEHhoyYDdqQUgoOliKfFSklBAkKdDNFxqQJLlkKNEDddxXDwVveEhGAatbZYCHxuLlQGrYqfRRndjJWmMZzFEnndtCuNqGXxkKcCgMJolLbqSsBAaiyfyYTfFpVxpPiSNnPpbBbhhEnNmJjqlnuhMPpZzEemwgLqZgOVAWSgeIicFwfFKkYZaWBbBbwkeEKQKjLOIGwyPZsmUueERrYXmJuRgCcNBQqAatILgGZgkKRIwXxpuUfeEJxjWKkLjJExCcihldbNCLWUuzrfwWserphIKVvVQQoJxwWkKXyYOHWAhIgMRrKKUKSVqQjKEqVBgGtdVvHhVmDpmMPfROMKUhpcCqBbGZEMmFlsSMlwaAtWEtOXJvmlnCcCcNLwWlQqXQIiPRrIiDdIVnyEHhexXYEeBqQtWktGgTbBVGBzcCVvwKkskKuLlovoOVHwWuWDddDdaAMGzMaAlWUXUlxVbqWshqQUEeuoRWwrrMmRbXxNNdqBPdtToDFfPdxHfWwFmWAzjBqsZknvafRrDdqoOrhXxHRkKQrRKztTGFDdJlzZLVvMQIqNWyvVYKoeoOXZDIlkKAGeWaAHBCYYyycbhisgchJLiIrdfqQEeFdjSsBOtbBTOoVUuQsaAYysRrtTqQXxMmJYZzNIutAaTrRlnbeEBNLUBiUubiIBIJyAaYjkKXwhOIisuiwffaEAhAodRrhHDVvGmJRrjpPbNSPsWSsFfdAaisuWklFDdiuXxUKnqyDaAkKQaAqnBJkVbBYrhUuHRUucCcxmmGgGeOTGKtibBEMUtTumZNNbbyYGrRLAacWwsSxZfzZtTgvskhHNnbBJNOGhHfrDdfjJMmMaQOoPpjJdeJHMYklLkOLeEAdzLsSxXkKyWwmMcJHEgVrcCDHhsbvVBhHVjevwaUeEXwAwCYZWwGCmMFvKkeEVfGPcCpzqpCcnXYvHhVyYKBdZSBCTTeErRttKmRrLDSWkBsSKXIBwgGRjAszvKxyLuOnNMTFOynMUumWSswoXxlLrVwpCcPmrTOpQHEgGxQeHzREFfeLHUBtTSsgyYkyWSsuCcgXxkNdFfpIiiaAOwSIispAzktTCclLagcgdPpSsJlXBbxaDdxFFDdHhzWHhwZunNUkKaETtciqSZzsnGguDuWwgjAaoOJxjJJjaXxvVSBxwKERrVVOFfdXxoOVgGcCKOzHcWXszuUMmZrUORHoCSxCtTTZxXKQqzugGKqQkhXSnaAfiGgoWwoMrBEjJAALlSmNdlRIilMAoPCcuUpOchQMcsjJfFQqmMdDSCyYkdDhRVvSmdDMsImDdetTUppPAJJkKexqRdbLqmFfMAcVrRvpPKkrcswPCWuUcAOnNuUKOoeEkpBxXOCPpLPqUQTkzhWwAaHkCGgYMuHhtneYyWCcjJjvVJQPpDdZOnBnafFQNpqjtAGldDmAavFuFJjrVbBvKoLTwRryfcdYIiPXPpXqxsErMjpsJWsSwWwaIYkfScvVdDjJlgPpGRqxqQxAaVQxPoDdRqgiBqQeEJyYUuBZFfkzeEgSseOHRKwyYoOoFOhzBgGtTbZSsmMIYyiTxodkiAnNiIQtTVGyvVvVBPpBctTtiIWiEecWXxNWQnNIiGIYyvgGVYUOebYORZbBJZWnNQoOqYbIEUPpueVBqcCIxTtuJMaqhwSsqZzXxQWbPLwntVMVvPVDgghHUuGtpPMTNHNmMKMeHhdDMmRreEBbEmknhntaAmTKkdSsDsSdDGdvpmwWvTNsXGgDdxkNnkKKxXSlZzLWlwWpBHQAZGgzmjUTdDtXicCQuUbviBywTqQtBCcbzjzoOFfroyBEouyigqwnwTtCIhHwoWwODxXdTCbPpvVYywKkdMmvVDWbvVxXYgvqaaAIKDOXtpPHoRrfOWkrhEeowWEGZKSszbjYyvVbIGQrOpXAwWaqvXXQrLjJjJCsFKkKyiAjSPJAamcCReSXQxxpyDFfCKuUkFYWtwWlOkFfQpYMmyPqRpPfTkKZztUfVMLgZzvyYVawWTsSJQPnqANbNVSsXxvoziIqsSEefFwENTUOomycKZVvKoOtqqQuOoQplpPrRSrRscobGuUgPKkDdoaCwcpWSCRpRKkrPCpxnNXPaQlDKkdQqBDNnrQXXxCcEjjaPubkKBEMivGgGgVBMmbBbaAkKrHKZzzZmqHCamnNTtLrLDnMsyYahHaebRfFnNmmMOWwOIcCFHhNsxHUZKRrkmRrMJjkztgGWwcXscOqQqKkQhrouRSxwChZoknNvfFxXWwDdDovsSvQqwWekWXbsAXGaALlUdUNAamMAaQISsCelLAffXALFfjDJjGCGAOoKkKZaPWoIPDnKvVGaACfFcUwYKTtvdUuoODVGbuhlEerZhEqbBQqXRrehUuqPotRVvDdMWvROMmNdEeDYbBogGftmlLoURrlpPYXLgGlkVZSENZzneamNnMJrxGgGgXWbixkbKwsdlNyYnMkTtcbsRfFzZrzDbkyCcqQxVDdzeEZvNPIHhitTQZgcgnNzyVfFvcWMCcmHlqQLKkDmMdhaWxLluAWsSVEJlTtLvNEengGbBSMmdRvGehjCYEeSsOoOoxXlZDawWlovVKWgGwCcjJKymhjElLDOoqAfzZFPpmjJFRFgYyonBbjUuKSVqQGFdMyCcYLlmDzHhLIileEXpPClsSbBgBBUunnzeITkgtdDoEgMMXCyvKjbNdYQNkIuGgUfLKwUStTIDtTCcwSpsCcnBpPvVPpSsMgZznNkKsSOmMaHaekKFfAFFWIUSoHWxyYbtTinZzDdtTyjhHSSSsqEOoevojJfFbJHhBbDDRZzbRrEeBljHFfCGSIwxXEgoOnTtFfNaiILidzxxXOoEOkwnQiqmhHiIjfgZvVkFaAAVAaRrNKzaASgGbBDdQYyNnbJZawkKMfFfFhXDpdOflyCeYyEcaKkAdDYLFDpbQpPDngGnNnBTtOcCHSwQBjJvXLuuUxKkuwlGgLLmZYXuUxygmcCMmaEeIiAGgDwUhOUSWZqPOopQbgvdDtXDdFfxTKEiIewTbNvipqxLMVjxoTVxXvIiewTnNLlWLmSsLfezgJjQPHukKkmorFdMvDTbvxXQeSskJvskuwWyYkkNnmuRrUGgIgGiGiHawSshovVjOqqxXnNvkiZzHPRESFsSRZwlBbcnBSsDLFfmMHIXelpPwJrRXbBsSjFPWirGzlCcqQiTtWbBwTiIbnGrRrUjMxsSypOBboMSzpYWgiolOoJkqAzyMmzVvZDdUubBWfCEGFfswoOavvVoGzQWwlGWHUNvVLQxXMeHtTHBiIsIXvPtFYDdISsbQGgBlLOJjjgGmuUQnUcTDNNsSefwDNrrFQLlsjJSyRgqtTUXhcyzdDnKkNBIiTggGHWoOrRePGgpnjXTCctTtTtXUulLxfHvVhnabLKskILGeEuzRrZOoOiIyYnOousSUNiIFkcZzCWVCcCcqRIiMlLLRzyHsOoShOoqBWBbwWhHwBRVxgfQAawWXMKknNkKmYyLZhAEgCaCcbxXSuPpWBuNLcCgXWYyaAlDdqQLUuNzZGgyJJjjrRETKkzZptXxXxQsOoSuYysJfFXxhZQqzHLljXxPfVvZqUDBoOXfJjLTQqQqXkKruXKknSsNapgGZSTLUyYxXxuAaNneViNUslLbSTfTwKkaiMBULkUuKgPuUpPLNAanlznNeCcDpPkVnpEjJvVgBQKYyGEreTHeEDfIaNqQqvVWwWeDBFfFfIzCjKjpHhpPUEHqWAAWInMUywWVviImBKkfwSstgZOdQfZQaApEHCsSetiPoDdmRcxXiQqICBLlbyYKqqQEeCcCcxCEGQmLsgiDmMahRaVfFvAppDgGiNWpirwcYqSgGdUuDhaYDDlpuedDBoFUvVZzMmuLEADrRdaeQHoAJVvZHlakQqKqAaMDmMdXmcIplLgCYCcprwzbpBpPHIrROByjJVTTAOcttbBUIJjAaDdTnkKWoOTjJKRrFfjJtTlreiGFRorMqQTlYdDVvQeLxXlKjrRJQIWwiFcBbawWDdxJMmjbwWzHDdynNVznWwpLBzeEaQqCcXrgivjJVCzZXtsIDaAdLPcCpZShAwWOfeTBkBwXxvUnNXxKkwWjJPyYbEZzVZEIVAYyeEDRrwkeESsFKMsRwWuHQqAaXeExiMmhKDdhhMYaApYQvJGgXukUyYusEPOoIoOiIIiRALlCctHKksTtMmSnrTtZZzvkKVGgJeYxYuvMKwWsxdXYyxDXrpPDpPOuGrRgwWwWfITfFNlLJjnOXYydIiNrlfaAVnqQSRktpPufrMpOoTotJeLlLtNnAKLlwWkQZwUuLluUVyIjRxsSQhLleMyQNFQRmrSbXMmrXxkZLeTtEJZubBpLCclUwrRkhveErXDdWEDdtRYsIcCzZIVvcDdFfAazZttTXPhSsxRirrTUaXxvEeMLrRlmbBRVvrrDsSoOHhdRMHuCjaLlyYAdDRZsLYetTEUQqBbRzZGLlwNTvtTBsRrSVnVvQqNUDdoCnNYkyYZOTYaAyOCXFfjJQcSkKOoJeEuEeZzUJaWJyQHKRrJjdDkvVvVPqIiQuwWUcCqHzoExJSsJBIIiMtVXSsmMxReJjLlkzZpfFzgGCcZPcWSfBDqjJZgHhGNnxJFhHfuUfucTWwtklmMLjYAiIOgGOeuUEdPwWRwWrMZPJaAVnNvlLEKvPpVIBoOpPbuUlRrJMRPJKSbcCpvVpCQqcqjJuQqeEQOfFoEXxXiITEeOoYywWyuCvIKkiVbnLGZzyFeEXxfcFfDVvVBbkOowjuUJsfFpugSsuzEHIocAhHmMhsbyJHhgCCpxHgGzZqmzhdbTQlMZbBWSsjsoDzpIiPOGgoZdlLVvmnNhHmLWrXxcBDbBjJlLyCIUmQqYXCcWsYBBbrRnaALaAheEuAdrhswZzUuVvIqQFRfFLhVvFfHLlLllrxRKTYUXxmJjyYCrRqRbfBbRrFkgxWgGleLZzOPpGWnsPpSMObBoSsfQDdCcqFmmHGJVkrRLjlSBtzJjZKijDPnylLrNbBeJBfFTxXpPtkyaFmNrRUunVOoRNnrNnvTfFejJOMQjJkKWwqmoyYZzEnqkKQmMsSIvkKstBbXyBbSLCcSDdyTtjJfFnVrBgGLORFfekTXxkIsMmBBbbbBSlOuUOobUNNzZQcktTdJQqbBShOMLlyWjJlSUXYCfFYDdaAJHMBIqsylLvePDdQMmUTtmnuUNEZaAxUCcuRrUVZHqQhdVpPKkehHkIiPpkzEkFtTfKiDcAaApPGYyBIUtTQOdUWwuDTNUuntNnsmlFcCzZfLyUuvqNnvVINkwcCeAaOkbcCefxXgmWdtcZzKkotRtTbBEDVvdRMUumrLlPmMwWWwpPIZbBUsOwWZxXcaLlWwUrGOoZpzcChmMHmzLlpNZTtcCcdsSMSsmgGQqTpPKnAJjgZmoYrVCcHEQqiIgGgSFDRzZMmrZKytTmRrBJjIrcCcMmndDYyNCRfMmcCFIiXYCMIifXwEerRKpPQFPfNnXtkZzOoYYydDyUuZvVcfFPItTRrKNuUnqQcAaytzfZaAglRjJhHruKrRrRjaUuPZNxHGghXDAaHwimHzxvBrdDwdDnYzZpAKkixnNqLfPjJprhIpHYybqfcCTnAaVyEAqSJUvsbBMmuUppjAfALkKlaAaFtkiGKuUkgmJmMyKpPGgZzPpkJjuUOoCkWwKZzYuHQYbckKCGeESsNOgNbATtDQwgsSyUSsKTYBavIwsZzxMmcpzGISsibihkMeEJjPpTltTVCLeEaAFfuxaaMmWwXKUuKkkSiIkKrRsHhrshjwWJXAalOoLtTKDRrorNFfMcrRqtTZqQzSgYyILhHPbqfSGgGDQAaWfFcHRdDDOLChHgxXvVhlLleEjlLVvJLLiIHhsUGwWVZjJXuYxjuUtOoxXmcNnCPpTqbsRfeEzZVRCLbKkzYVvVlVvqrfaNnVlLmMQqnNUIdaAKwrRnWwDYydMhvIoSsTjpOkWwsEQbCnAaaACcNnOHkKrAnNJpPGhHjJATVlTtgyYQsDIipPHOcMmmVPsDvTHhHbBhUfmKRrHhuaAveEVWOOXtcIRbcsWTaYvVaBubKnCrRcPpoYlvVqEbNGvbBfFiIJTIEeuUNEMkKUuBsCgTtKSdPeEpjLExPpGcCcXurwWZzyRgxIvfEwpPFmjHGfIizZPbuYEyTtYLqTdsAaGBUurdxXiICgeyDsFvKQDcaEoZdmMcCtGgvWwLwbHmfPvEEUNnujEusEDdGHKGHbRVvXUJgvECKkccAcmMnNtPuUpgfFGdzZqgLLNnthcCXxaFQqREqQwWZlsSLzenoOlnmBbMYNnghHgGGyGNlLholAaNrXYjuRrlLfIJpKkPVBnuLlebWOovfQqegGSsEFoOCccrRCsLlSRJCMQqJfDzqTIqZSsmupkNDdnXXhHwxUuXmMubBUWwOoTtWsnNrjJRvVrRpjJnNgWdeZRtOUAVZzsSJtbNgIpoOPWTtNnpqBbQbAsVvZzUupPcMmCgGerRBXrzZoKkacXTtJMmjuMYyAdkKjKkFfAhXgGpPlLyMGnNguUVvwSsVvWlLDaoOAdgGafFCcBahHAgrcXEeFEePpxuYyUYzZlCcYUuYnHKkKVvjTvjJVhHctsRVvwWkKrjJSTXqMNKsEzVUUuuwWvGWTtJjtdbejJAaEnAXgGxaxpPXmMXxNBRrexLRDFftTGuUYhqCuUbBHhCwWxUKPUeEDdHhaXGUbglnNFhsSBbzZHakKkrWrRcaAXxeECmMamMhHGiQjJmVvevuMmPpUzxXZPppPXxdDVkAaTYmTdDRrjJVSsAMmMmakfnNZzhWNnpgGTLlTHeDTHhqCcAZzpqzADXctHMmhzjiIyJjYUttTwWlLTmMUniINJjtxjJTpPjXoKPpabBuBYUuxsTZbBsSztoSsmCcMxkOoKqQXOZyYhHruULnNhvMoOktTPAHkuLlUqQaAgGxGgILtjCAaNjxcCgcRvbPnXRrLldiIpNsuUJRLDNnJhHcCoUjOocmEbUuqZwYyQqRaALlWQQlBPIqQpCZtyYaGPpgcnTtdWJVvGgBSQHhsRryEelmnNMosJIpNHhnKzZhCGDgtAPpahfxDZMmqDdQPpvVTQIiEVwkWOqQUVvuoHvVrWwaAuUSdTuIiUeAtoCGgThuHhoOKvMVSfVvFjaAJsXucCYydWwDaAUfmMqMQqmMWLlvcrROVufFCDuVjocMGgVvmJQqjcRrXxuhKwwXnAfzNLgmHhJHmMhEeCdVQlQXVvTvcCVBjJeEPXkbBryVlFSAaEMmezcCMyhkKDRrdHZHWwiItSSsiPpLluUIMRrTiOFfjIrRESsrzvMpCcCmMckKxIiHhAJXVvYaZDXDVlWLlwmVvtYyUMpPWkKwFIumpPxfFXNIiuUiZzPrRCTLlVdlMvVHJjBdUuHDhkhHKRmMmMItGHMWWMENiWwIPSnhioIYmjIKsOdnNDMmYCcXhHHhNGVpPoYyOVOWvnNSFfJjxYbNwWMMVXxEeBfvIwNmoOEUJjleELfFiXxXojTtQvzZyrNvVvXqwLnpHhPNaANaFtRhHNmMnnOoFNnfNoxXgpPdfFDhHGQnNFffWyMqQcgDfFkKZieHhqEhGjrgyYuUYyiqSSsSuybrRBHclQMKNtUbnBebmMBEHtThbBlpPLbNvQaAqrKkIyrRYenNGaAwpXxxEJjtaAMmTVwQvVinNOZzLFflOaFAaKkOoIilQqUcHpFfYgGyHlIiGxXZzZzPpUuRhHwWraAFQqmMmBbNnMfgLhPhCGGzmdDdDMAajyfwWsgPfcOSsgdyAaYGUuguCctWQiKkRlLrOoVDECcCcqQfFfFhXxHGPpTmnNlGgJjLvBbaAkGVSLAuYyfynNMmsUuSKLiFfEFfyYBbRrZzbMSfFFrMmTRLbBOmQvWwgNIiLlnGLlZzwWHhKkJbgPUGgrRNWqzQuUqdInpRpvXxLKklVPguUMmrRFoDdYypXAfkmkOoKBbxXxDoOvVScCXPozxXJjZzmMuzAeoOKtnzZEkgEeYrRxmluXxULwhlLhMmHLlUJjsSZvXLlxiIVJNrRnNYQwfFcCWikaiIAafgbBGIihyOoYGvqrHjcCyNaADdiIPpXPIZPFfCGPyvVizzVvRjJJkKlgErRQAaddbUupPLDNkugGtSAakQuUqWlPlqgryYSQFqMlhHFfLUuaAlDzIBbkuUPpAaNnEbYGyeEYUQqMmFznTtNZjmGgGQqxXgGMmSsxXvVUMmVDEwWYyMmsSHfFdRTzDJjMwkKmMJjuUPXxpUuWwuUiIfZlopPiabAiIabcClLaOBgLlFyvVLltgNTttTtTnEeDdtmjEeJpyBDhHfFRpXTwGgfFtTaVvmMkAEeILlvVPpQhHlajJFbBGUuSlLsHgqQsSSEeuUsqQTCctQkKkmMOoKWEnNeVEgGQqSsYpcnKVBDaAnNDyYdrRmMscHhCnWtFfMmTwmMbcNEengZYygoGgpFfoOAaPftBlpKRSRJjEerKsYydDSrvnpeEPeENVRjJmMkyAcCaDGguUpPdHhGjJhHWtTzZNgDdmxuUCpPJjAvxPuKkShHZCAaAsXxrRSMGMaGNYvVyAjLlvVPBbglYyLKWyefuUziBbiXxZeEzEYyyWwScCFeBbQqAClLXTIOoiKlLLlCckTAIiSCBbyYUuAatsSTSTPJjKkRwWllLrQcCByYDdDcmwlhHLNjLlZzgrVvrROcCxcpPFpgGltTncCYyJIivkIOoywzZyoOMzZmlLrsUlLvSSBIilLqdDvsrRrhEnNgSRIHhVAUzEYDdjPpEeIivVaFNzXxGSSVYyvsUIiuFeEKFwpPWRQqDdOuFJgGgRVvrpPzwTxcKkCsSXIiVUuvtjJsTtiIpPJoOjWDdHhFGgvFfLdDnzZvDYphyapueEdoANnhHaqQXxZzSPmLzJZzeqXxCcGPpTFfwWXxAuUDlLXAcCvfYwWvVzZNEenyBwQqwBhPlDLzQYLTtzWIiZDPRhsnMMAacRtTMJjuUOoguUGNnqIxGgqQSsADdYyEeqJnBJjImMibRhHhAZzaGkKgHONNAqOxWwXoQYyQXxXxIUdQYynFBPOWjdHhgGPkKcCjJNyiEJqKkQRrmDIYuGgNFnBjJCckKYyGpkfFWjoNbvVAtnVyMmYQqQajZWwkbbfFgAwMQFfFSsbhKkHnYlEeaXxiZzhHHimMIhsJcCQGgBnKMmrRxxXjJXqzgLlwREqQIgPpfuUFnNksdrJfVfQqWbBAawVvPpKkQqFvsPzVKkKIiDCyfrgLlwZcJjhJjgNnGQEumMmjWwkJjGgTyMPGcpCcPoyYOCixnGgNWqmeEGgvzZuAjgGEFsLUYyuPfHeEIiDdNlLTRrtcCJSyYUuEEKHhFfkFpPfDdJjeLlWwegGWwymMMPLZsJjQqSBFMmMWwRwTEFfsStTpTtmMPeEsSNNCECcerXxIiMjrfFiIDxXEeEMeEmfsSOSdhcCHeEXXBJjyYvkCrRBeEoOZzbNnnnjCrcMaOHtGgTnFNksSxOolLXnNDdcdAaqQcCAaMmOoDNvVQDdgmMKFfMmQCKRXaAoOpPgGLTzpPZtTBsEejJhHKHdDhkVGUqsiSsHhiVvUmLlNaPsyYSgXgGlLkKxGkRyoiIqQnKkMTttJpPjbBtqQbBNgidWuuUUOkInNiftTFCQyYwWJHhznkugdDGnWGgZzLMVvpgGPhqaARrqQLEuHhdDUMrIKkoKkoHhAKMmkVCZgGJjPpkKwXiUupRJSsjrPIIzfPpLFflFNnoXUTbBOotkKPbtTLlQBHWwhFQqvVjJmMBXxIotNnTkmpPMdWoOZajpmMnEmsSMEePpXXSsxxLzZOoXxYyRbBsSrvVgcXMziIZRVMKkCcZTixGbwRKQqWAnNaduUrCcRYyQqDwwQybWFDWpPktTKwdMQqmAhHXRttCcqIdnuhiIcCoDrMgGdGJSdDsYoPBzOoZQqAabmBbcClMNALAOQUoOJvwWhLHgQPOaoOHZbFNnjJfGeEqiCcISRrImTbBtEYeOoYRZzbsQGgdQqDgoYyOWbHhNnVvBHDuAvBiIlFQnNqQMmhHGJjftKkTFgqQvVOouHBbHhERjJZzrhybRISphBAabBOFnvgVvksiIoDdOxXxQIiTHJjhLltxvafFzZpGgYyjlLuSaIisZIizBckGCcudIZHzXBbxvnNqQxIhdKkNnVIivDNnHhcjNHjJDISsjKkSsLoyYFMmfhFTmonCcbBuUIiNIbPeELMTtEDBbhHgDdBbtTFbmMBfgUjJGZGgZLTXxtldbgcCGQqbiIxXaSfzZprRIuIYwXEACNTLlEeMOosSmvGIzRUVvzaAqQXxhHDdRaAXWwqoRroRrOBboOnNOQRrGgqQYPpmfFpVLlvSszEeiwnflGgLZznNlXxSsLNZVAaqQzZPpDtTZzhzZwWmMNnHLjryiSsIdQqFIBoObBpPLfFzZzeEkKTtRrnNUFfmMQqLllLbniKkgQqGRrRfIiuUNnjJMXJXkKVFTvkpPyYzZzHfFGgfFhMoHegqzZogHvcyYCEwWmMesStTMFcUDvuUbBUumDvVZMdDfoOdDAaqVvCfFcBQqwWqQnNSsrRLmNniRGqQRrUSsuIRrVniZkKcYHhQoOHhNnOoSfwWHQXxqlGmPEwSsWeCcAAivdlSEOkKyYRroOjqQIiNbgCGUPoObBppPFIifEezZXxpLvVdDlPTtnmiIMNXxHhAJjSxXsRrgudRrBryGDNugPprRGhHgGyYaTFyMmrRsSYhzsXMmRRrAXxBFownFfMmvVMkYNWwuUdDyYnyCoOcYYyyFfKkPSRNCcnoUuOkvdsSUupwSZzhcqQCHwfFWDNBYyAanNDvVsSdhwKiIvVkPpFPpnNNnjfnXxNAVKizZLLSzBbZBbAFfcLrRhbBTtMmPlmMwWCctzZWSRwWvZztAauWwlpClLcvYakwJFfjLHhpLSftcCTbBWwdDEbflqQsuUgnNyYGjzATsLxugxhnoyGhHmNAaDdncCMgGIQqrRPpOXnNinLEikKrRRBbLlBbWweGCjVlLYXhmrRvPpVdteETBbisgXrRZNcqQlpxAudcKUZZzzuoOFzZffwbBbhNdwBMOoemPkKeEppPMbBEeEGsSgXUbBeSEeNRwkKcCsSWvVXsXQqxyfFVvYtTyYXTtRrFfohHRQsSzoQvVyaAsoOYySClJyGgqQkkiNGgIinTJKKUXvKkVNLluKwWrRtQAazMpjOpPSsozZhPJFZzKklweEyYipexXkKYyUuEPwCcWXapJxleELCxXHhKeExXRrbBGfFgdpeEoOQPbBKEeXxZzUuSoOJoOmTZztMnhZzaNnqQYaAywDdfFeEjOHhxTmvTOonxqCcgGxBujJiFKoORrasSnNAwhUxRoOWLlNnwhHiIrRIskHEoOCcjJaAWmMHlLhpPoOQMmDdjJRjRrZHuUTJjJZGgNubBnwrWSswXxBMqsQKkmMrPphVvHNWzNnaBbMmAiIOojzZUdDuRrpriIIiOMBlLKzZfkWwhHyYxyGgYBbVvXqUuSbBorAfFacCMeEmYyEErRUVvtTEmZzMepPSMWCmMmBbGEeVXhHZkObCxXwmqQsyYeVkKLhavYtrSmYSsTtyqNYNniImxhHHhBipPVsnurRTtwjRCcUpeElXxLiXMmxXMZVvgGzQeiaAIhGltKMJRrYvVnwWRfuUMmFpPrNMfEecCPhsPpxCgGmDdGglLaAuQxsSsaFmsSKkMYyaEMmAbJjBnNahnwEwDzoOZdbFfGkKrRgwWvVBbDdLlkKLnOfFeJQqOojNnlLpPJjbUeEiIuOOokwWCtuTtkKoQpPtTIbVgGgrRhChlLHiPIilLpLlTrRtTtaaAbtzlLZoOLtTHsSrRvvaAUudDYyKQqxXvVIoOYrRPZzpZzTMmxXmMtTxZiIjkUIrpPkwWWwSrRzZnNIKtpCeayYAVCwWSjSsJItTJGgjLqcVJjvCSsUuKguUQqJgGjbBGedkeEKpPxzJyeHLRsSeEjtTzBmdlfFoUSsGgrqCciIZzjJxONxoOVFgEehHQPpAaoOqcCGkfFDIOTtoXxiIbrIibOoBtTAaRBXoKkQSUIiXCBhuTdyYDUJhUuHpxXovVOOdDPMmpSCcRTtnoONrqtTRrrRQPPkfFVEeDEedjxpCYylIbBQquUstTzZBbrIieEwQmFkBcSsDZzIJliIUmexbBhSFQqhHAfFmMfRuKkXgoBTomMMmOgGmilVbBZztLlVvDwdrRDzNnZnOMmIpUbnCcAsXxJjdpPiqQIkwRrWxhHZvnNTtirRINKkkqYyQKkGjJgGgaCcdVPptDdavnNHEWOoGqRJjmJjiquEeQqdeEaWBWwffFDsbBHhJRrmMNnHhgGbeEzZqLluUpdDPwWQXxBZzNnhUuHtTwWGLHhMmSsyEeflXGYyvbBPpTyojJMoOAbBvVDSsGVMzBbpzZBWcCFfwbupVvOBbCcsShHRGxuUPWwYyxXuEWuUfiTUuoOteEZzqSsGkUkKlVTmMtVBbPpxwGdPpfuUNnXPpPpscvVDiJeAaaAHdpyDKeNpwWmzVgUPpuGbgkgZjJaxXAPgPDzcCDOBKNniPfFpFjzZJFBDdbZnuKKWwkPpyYVvDKKwWUgGBLVvKFpPyGGSFoAaUHsSWwqIiUhHfMCcWKkvVLlgGTqQUaADFbBfdlCgsSYyEetKklXTsStLuBzZWwOpiHhKyYzuUkdYyDsSKFykKUwziHhIOoQqtlLMmSsTWwtYytUIizijkKGgJlLIzZLlrRjJZMBbeEDdaASgGshHKLlwSPpsxXkYQqUTsStuyKEWwaOlQFfaAfQqbwiIFfIYEQqeyYsFMmfktTtLlHKkhyYKjDdJgGntTNkidPrRQXapPWwbpxXoIlzibCnNcahLldDsSHABcCIeEHpeEQqxXHOohaAPkKMsXxSmhCctEBbOoaUuUEWlLQoFxXMUuIiZyYeCvGNaQqiIiJjNWwCfvOoVdgGIipnNPcRrGGggGgxXCjJjKkJDCcHcAInNSsiaChFEfoOCBQQqcPpCqoHEPUUuGgpifFaNieYpPoNIiGgmVvEeIzZiJjGgGgMniIqQpWlCZprFkKsmMpPgGZhHzZzKkjEXeEXFfrRoOaACcHsSKvVvVrRooIiWwgOorPWNncCHoOBbcCjnNYFflpcpPCPpUuLlYIiyeEDwWdOomeOOooGgfqrRxldDLpPmzKkZcCHhIiBJBbeUqvVKnIOBoOtTbBIiHhuUwYyQqWXrCcRzZxbHhoWEPpidDWwiKkIcCjQIibBwOWGgSsuUcdEbBDdcgGmeEdlkRAaeEJjrzZIisfnNUuhHBwWMmuKkUxXbpOChHcreEReEYPBbpHwkKmMWUZzyYfFEkKVvyXxYCcqXxrRqVvQTtGvVlLwRvisqTtWwQYOogWwgVjJjJtTvGrlIiICcSSYHhIJjGJjiItQqlsRrSpPLNaAhHCcnJjTUefFTtzAXgGYyLBOobfgQSsGgqHCcSAuUzmaAMZEerRaXxvViIAmMokXdDJjYysJjNnMvVVMBbmJjfrsSLZLlZyYcCCclkXxiIJjKyYqQLQYyFNniIAGgvbyKkYWwlECccCboOCcBDgGCcBuUIiXcEeCxbxPpvZtTQqzVxXmMoOmIiPpxrRXLLllniINMDswWSvVdSbRreExXNXnNxnCcCcMmJjHhpYyiAaXPuGrRBEeujtYmkKMdDyJuEeOozRRJjruUrlLGgZBEeOBbokZOovXxcxVvOoNnBlLbgWeFtTtwWJyYnNaADZzKkfFjmnoeEhHvVhHOhHXDdKkZgYyPpJjUuGCcDsAaSFfYNwOYyYvVyubVwWvBwWGgcoOCUZzumniCcAaBgGZzGRryFeEfgGrRiIPyYzZYxXzZflLNnjOphwpHhvWwVltcCPpstTSHhUBbutCvqNnQvVWUjoOJcCuTWjrNnlLRJoOjbhHBeZhTtALVbJWwjBkqIiIiQyYKvNnlOIaKkZzTmMYgEJlADujrJjEFwroWwyVCcvYtTDdEeQqQhOoTtHaArRmeEJiIkLXxlKLlZaQqAzhrDduNnAagGUcCcSXPlLoArRIisSaSsyuZzUYBwWbURNnbBaAWwOoUuNsSlxXwWbBTBbtpGHshsKkSHHhSBbtTRrbSJjfFszAPpatCckKBgwDDdyYtlLTDdddEeDhHMmQqjeEYyDmUuHcCAzZauqYpmMhHmiIMpBbyIihHDdTPQldDLlLbBqtTpTtYJyYjUnKapPOgGosbVvcOGWwjDdJlEBbbBBSqvVzZpPEeQsbdvVwiITcChwmVYQJAaRrjLlLllEefMyWwQzhHZFfhHAaEtTTJyYjQEeDIiQqHhxXdAaMmaUuPqlFfXrCFfrHhodEeDdDRLlromvVMAwWaOxaANnXSpPoOPpslDoXiIxSPpnNsieERmMNnrxXnNpPtTTSsfHhFkKQUuUlLusPpOgUOoLqQNQdDOoqDdyXZzVNnaAvHhVYyPpNnHLKklhWptbqEBkKkKzZBHAauXxFfrnNkegGEKNyYkmMKntOoTLmMsSLMCVQYyLlqvDMfFeEYCcLEeMGPpbOoBgwpoHheEeEFfICSPVSsvpOfFXxNKkphHByYRllrfFRLgUuYUrRmMuyGLLKkUBbuKpcmhEeVvBbrQqKksfFzVqDdQvwkHnWqLaAQhgnNGDdHqKjJuUfEehHEcIXxmsSMiIIivtFfdedBbaAgGEeKWqdDIiCzwwWWivVtTjJZzjJZzHhItfBgGPpNsVvpPSdCHcCsShvJjJDdjjJVEeBnTOotGgiqPkKpPwWrRsPpBKkRNslLbBqQBWnNMmHhDdBbLXbwWyyzMmeEkUuwWhgGHKqQiGgJyQREgGaAeXxdIiNwWTtUAipPcCMDSsUufFhHfGHNFfpPxxXKFfjfKZzLlPSBbsSspWpPNwvVxXQBbSEEeesnNpsNeKkSaiMGgmMmzZtUIiupPKkOohpsyYSjJQxlzLgJjosSOdDzIiFTtfFfiIZMmOClLENrRMmXRrYydDRhoOHHgGsSkpbraAGgPVvItrRTJNnjHzZzZWnNhLVcNnCpYyPvOoWwHhoOcCiITtpPlpPwWcYyCOVNQqAVgIiGUuPbyYBgoOIIiAXRrNnePfFpveMFfdDCcAcCaIUunNipqQyIiYBbhHPmuUWwDdaAtXxmMndgHhIDdiGgGwWeEAqQODdaAoaUmMkXSsxBbKuiIaFfDdihHSKksIWwBbhhHKEebBoBbOVCLhHlcbBEeTPaBbATtHhRGkjJKcChnNJNsSnfTXqQxvVJjoOcgGRrVvCHteLlEwRrWTgYOoEehHlYBbCubIiBaSsALaAlVptzZpMSsmBbZzXxEedDVvJjDEeXDeZqQHMmVlLEeLlMmvbBzjJZPwWQpRrGKKkkWhxXgIiGIOdDkKjJlLIcCioitdDWNnGgNpilLIqAaBbgRoQqOTnNMLKklVAzuUZroORaPXxpAZCcOozadYyDwWJUujzZaNnBnPUubBTqPMmpdxXXFfEeAaxzZruURmMcCUEejJzYmuUHhwWUuJnFtTIiPpPoEeDdHOUivVISsZUuGTDdttDdTJjJjfcCwWTtrTtuUgGKUukkVvKcGgCGvTXxEejJkruURAWwDHhjmMCZPGFNndxXDfcCjJZzgFbernDdvVKkPoOplnNDYykkWvWwVvICcSWwLGtTgRruUlmQqBGgbFfLHhBbePxaBvYvVjJydbxXlvVGoOoKZvHhVbPpSGgsBIirbBVRGNngdcwWCsSNnYJRrFgGfjOgGQqZzLlJaiIBbAjEbIiBtTPtTpBbWwnNzXxZAcEfFeCSxXSDdFfnEHRkKmqpCnNlpPhrRUmMQqUuAaYTNxXfaAdDacCQRrvxYVvyRrPgdDwWCcSbiIBRjCcJDdAZxkKtYIZyrXzAieExXIaZlxYydDakmMKXoYXxaOoANqQPpTtLlIiiIHhmwuULBblZWEeJxSsGRrUPpuglLEmGgNKknEeMVvfaGgFfBHsShEYyrgGsOoueEUCrRwWTTttyYAxXaAYyaceHMmhmnNMEsScqtLHyDdwNdDYynsQqDwkUuKxTvIRrwypPYrRrHpPeEoOkKlLzXQFfqUIiulDhUhHzZyYZzuHlKPpAaoLbBloOOkTtHhsSLTtdkMwWiIDsfFkKrggvVQqPRrQqrRpMmYGkCqQFSsPpTtMmcCSShHssSBomMhovoOJqjJQpPoZZztTzOjmMDbCMmqSsheEHAUGOAaPpFrinMmNIxXvgGfFZzXxOUZzsvNVvnBbccCCYIzZiUeEuZzjKkpQqPyYjbBpnNSsKkPkYCXxOoiIxiIRrKkyNnPpYXjEeyYgXCcRyYjMmzZEeAaCbBtqwWQTNntTTtKiINQqhaAHpPiTpsSRriIaAGgFfTUtTymMTtYHBbhvcayEhHXxgfFzZzZPeTtigGIigGIEzaOoApPNjJwWaAXtTxRznNbRzIiLozkKZygGeuZdDMmEeThHtnkKNPpYIMmDdTtHhQqQssSSqQKkNDdhHkhHKCiICsScLlzZgGmJwWplLPBqKZegGRKdDxnNXHhUsLljEAaRreuLlLlUMhlLFQJjqiIJAaXgGjoprRPONXxgGMmaAFfHRrhMmNCcDiYyktTUuKQqIAaNnRrWwiImMYykPpKkGgWKEekUlLAaqmMNsPpSBbnzxlZzLfnNZTsSqQaTmMtABhpPrRrRTFIIkfJjhHFrfqQqymJhHjXGgxMOosSLlHfFgGzZtTMmJKeXxqQEeEYqQMNXxnmpPyCWwObtVOovzoOgGSCcWwMOomsSsOorrqQdmMQoOqiXsSxUjJWwXxhHpYZzvVyPDdDddcCFZzAXxGLlEeDdDdmPpJkMkZziRrzZAhuUDJjdlLnqQNHbJzZVEevfFXxcCTtgHPphUuAVvGagGATgfrpPYyRqQyYHjDdJMyYoUDdTtiIRDdnNdVvXNnhPGnNaAgpfwWFHmjBbVvJMEeirRRrwWIuUbpBWwIyrRpPyYYibSsWwWSsTuWoQBbqEewWyCcRrMmSzZNdtTxXyYaADLNnlGnNrFYEmMeyfRgezZEpPAaCZzcpdDWwilDpPUuESszZbBcCEerRrRqTtQelBnorMmRwWJJjrblDiPpIKkZfNJjaAsQbqQbBFfaiIAbBHtTBZLmMSskKWweEIicCvwGgsAlLaSEAaeggKkGGOooZzhHFfiUEbJjBKhAGXbBLlSsjhHJYyoNnmbBMLlOwWXtzZhHOoKKkkRrqQgGsUrRHgGQqXeEwWCcXQGgNnKkjEeJnNKnNzZXxSXrRLlxjJeaAELlYlLyYyVvLGMmXxQOxIUuiKJnNjvVCSsfNCDdyNWwINygFfhHTtNneEGbDdPpDeEgGGOTTuUPNnpnNIiCcdQGxWwOIIiJjIiFfBBbKkbBoOrRbiIiepWGgwUuEePAaxgGsSHUuSseHhEJgfgGDoOdFfIGgQqmMBWwOkKFfmjJMNnSsgGrRuWwVvYyeYuhnNtTfFyRrRrHKZDXxduUquUjJQJXxCcjzkjJzZYiuUgDerREdLlkLldDEeWcQoOUuGXlLkxXTLAatTlgGiIUMXqQohHPpjLuonNOUeEzLNnfjJTGgVEevtFZnNjHhJjJjJmQqkKMmMqQnNyDntTIijuUlICusSUcCyXFfXxxtTYObBFfFftTnoPiIpPpzLcClGsSEmMegVvGlLJDdjTtjyYJyyBbYoOrRbsSpJiSrVvFfRHhKyTtYDdkskAaVvSsXzZebUbBEeMrRLluUDTtdYyDduUVLluURrvWwyYuhHbBUeEeVvEPvVpUuIixXUupLRrvVlsSUAUuTxXtaWgqQGVUuvbBzjJvVBbaDdLlOdDQqLlqXxQYyZzcPpCFHpPhfUuQoOIzeCcEbBeEjBeEbzELldRrTWwyYpPSyYNnuUgtTcCbBMdMmbZWUTtRrtTusSkKcCaMAaOoTjpPpIibEewTtGgWwWxXButXrHheKcQNnqCbBeEWwgGVvVsSqQOovQqKKkkkadOyYWwCcBtJjyYTwPpQWRpPrwZzxYRrmLlDdMFfDdyayKkGtTgQEeqBblLYkPpJjKeEoNDgILirFfRBbmMIlDdKkWAaXxBbNvDlLDTiIunNLlUufdbeEBeszZBbyYYWHhwOoaOoAmMbtTBTfFRrwfFWxXvVQqpEePQFuMGUhzQAaqpPZdDdDHLlYyHhwKkWFiINnGrRTtzGFfXxOLlKkogRrZRrcCzZYOoyUugGoRQOtVAYFwWHXxhdDENneAaSgGsWRrMmfFwqQSsLlfpPiKkInsrRpyYnNLlPAaxtTNBbNnHhJjSsvhHNnTLleEhHhHtcuUgjDdrRFfoLlOttTTnNaiIAtTBbqGgQICcejfBWmMEeEcrRCeqQsxXQqNnIisSxXsCorROclLzwpYyVvPFXFfIixPpHhbCOtNnTBbfFmmMfFnNmwWLxXlGgGGAagUuAdDaAaZzLlgGQMmqQqITtiYLQqtRrWoOMwGgWmUuTEeVKQoOqdKkDKFfcuaEelLxXVQqAawWuUMmTWNnSsmOlLtTtTobBHOoIibNnADdacCHhoPtTpqQOByaAdDYhVvuUMmpHgGMmLtTCclVvdDtThPqFVvfuaOoATeEPpufFUPpjhkwWKzZzZorROQXTtxKEhHeqNnNnQsSyYkBhHFfQDdQqnNxXAxqQKkXauUpaAmMPwWjEeMmbBQBtLjJeEQNnqaAzZTbsGgdDYsbuULlPpsSUuIYyiBcCsSsFpPTtfgGlzSGlptyzoOJPdzZDpMmwWjRzaJjAZGBOTvVTtTqNntTQhXxhHYXsSPMnNmIiaAFhHEzZHUPcCpMmptAaTYeEpXxPjaAAaBbCcxHhFfoOLlHhXJEQcCqexDduUhdDTCcCctakKeEejsUuMmMBDkKZzppOoyYPgDdfFHbBhSsGejvVRrsSdfsSxXRrFMaAKkmDCcdjJaTtYpPfdoOhZzHDQqFxnNDdLlXFuUjJBbXxHrWpLvPHhpVNncpPmOQMvwWVIiRfFroOmCrDdIWwBGgbZzXxkqQCcOocCWNnqQMKkTuUtJjlLmpKsQqVOYKPRrZeEgHfFhUgGXQqxjbBJuQqVvIBbiCqQcfpjJDdPHHiIjJkKgQqGlIiHhDBbdDcZzCIiBbTFMkKLlYyLligGIUdDuDdSgPpDdpPGtBPphHKkanNAbKkqJiYShHqscVvrVvcCcCRCIibBpgaoJjNnOTtAMeEmeEviquIiaJiIjAuiIUQqsSeqnNTtQFCcfhYybBXOUBbCcuPpGNnOogGTtrRgvwWFfVNreNaAnNnERqoOogoKkHPpSszxXZkKGaLlxXtTTtxXxXASQqoOtTCcctAaTCssSYlLPIihrOoRrDHhnpNnfGgCcFWwrRzZLliftLlDIiddrRJmtlLrGgoORTeNnEiIeEKTpPxXtdDkMrRUWwuUcKVmMvUuIiIizXEeiIAaHhgGTtDdTtxhdDdDzQqIitTsShIoOAPpagjNnZzJVvDJjIidqHhQCcGCcJAaDSQqQajJAQBbqRILlzQGgqHhCcZBbazHhdDkKDdFNgGntTtTplLKmYRrjFgGffHhJjJjFuULtyYTlfoERCcrlLeOFPpyqzZUuQYBbmSsCcqIJjiQaASsjJSFfVaAvqXxQuvVFyYfBwBBzZbBuUGgOoOEeolLJjbbUUNsBRrbSsYytTSsofFOSlQMHWwOfFzcTtCsSyCaAmxnNJjQpHnNnHhNhLYJjtTIRrtTixXyyGwWKkoOQGBbgqLlmHIiUjuYXqQEeYyjJYsSwPpWwWqFoZrBvYyAaVCUSsuhSZpMmPzsEeJjfFdDrUuRvVSJjYZzJPvGgVpYyeELTumMUBbaAzZpqBgGbquUjVkKtTAalCcDIidgkzZfFKjRrqCdzZDeErUuAaRQKcCkqvVEtTefipwpuUjJlqQLNrRnvWwaADnNdBsSuqQUuUVvzZPpXxbOpGmMgqQbBPdGkKIFfimMyLlYgDEAaeGgEydzBVvbPjJSeEwWxXVqQrRNnHZPIiLqQVvVvlWAKkdDaawWzZQqosvVkKSmMOAfRejJniIKYycqBbQCHhnNtTzZQHAahUaJjoOAiQqqKkbeEBQIOoZzZzuqqbBQfFmajJIiAhgCcGWwwbHJGZzgXxjhXxBcCJiIjSsTJvzZvVpPVGgjQqPptXxkKuUWAaOqQPpVvdDbRlLrEeZjgGJvVoOHeCcXxwCzZcLEelThHQqJjtiLvVlHfFIihCgGLVvxdOoiIDpPnNkKrYYbBoczSsZjoOJyYCNsVvRrhbAaIRFfrVpPvaPpAkKiBHHqaAyaAXxYYyQXxYCcycKkCcCMMmmSsZbiIPsLxOoXHEecCYyhlUqQCcCBEvVeEKkRWZuokKqMPpmQKSsmMXuUyYwWwWbBQCcqZzFfoORfFoVvaAaAeZcoSsGYygmqQARraMNYCcyysSmQqgTtGhHUVHHhJtoODdUZzHhuKuMmUuxofFGgWwfqUZzeEMmNFfoOGgOfwWySDhHdApPNnDdjUgGuCrZzpRrZMmJuUjzDdCcPUEeuHQqLhuhWwXvyDdYMmCcVMmxWwpPFfVuUXGgEHhaAHqQcCGgKkulLhHqLlQfaAFUhgGpPiJjrRMfFmxXRXxgGIirCcrRhSTDdtsiImMHxXkjBbmSUVzZPpvDducCTtqXEhHmMeNnfFeEvCcVQqRriIJjXdIiDYeEyFfxbBrRxoOJvaAlLeSsrReEEeoOtTVQlLqvkYyCkKevVPpXeECRrcxgxXNsSfEeFnOHSshZPpAaPpbBxXjYyRJAahwWYyHaoYyOXxAbuUBTtjYeEDdaAGXxTaAtiIYKcCkydggyzqOSsoKDdYyjiItTJfJjJrRjFkqQfFEeEjIqrDdtTaOoAlLCcSxXKksRWwJjajJpiIVXxMmvARrJjElLPpCcezzdDZNnwsSmMiyyAalzZCcOouXxUKKkBbkLubBiWwXxIpgGPqQUroORmMlGgewWOFfYvVyoVgGgGiDdwWGTPpPpIiWhHcDdCrRBPpyzHhZlPpLYbHhVkbBKklLKOXxbBdDtTNUYyunoXxVzKkqNnoOQAaZvsWwSJjIgzAaZGpZzIQgGkjJKXxqiNlLEentTHfFhKRrUukRoOrHUuhIkHhMmSslLXxpPCcUfFXxBcCjJPpTWKcCZmeEHEdDeAaBJdDjaAUuyYjrEeDdiJjLlxXPIipIWwqQLlCcRqQIKkBbSDdMyYgIiGwLdDTtbByYZzhHglSsvVDiIdgGLrRwcCcEsSeYYyyCEeKkWSjaArvVJjAaTtOoRHhdpPiIDeWmMCyYcFfNncChwWHDAJtTZzjBbNPUupKWwmMxRrWIwWjJmMISIisilLUuBbhHVYyKFfpSsPIikgSsGvCcfFJNnwbBWASsWwHVvhTtqQlIsvshHhHLpvVwSsWPWwtTZJjzkfFaAKoOrFfeEtTXFfxzmCcOoMuUZvVRBbtwHhxXcqeENnQtTCxgGIiIeUuEeEBbhHmgLllLzvVZGGgMcgGEeCdDPaAwfFWDdblLBAafvVXLlCCwWcXHhxrRVvLRruJLliIjMphHbBPmmMoBSKkhHzZeHhEOoMmVHFfLwWTtbBlIoiUsSuIaAsSOsSIRrijJBhHbfFSsEeiODXTtQvuUVzkzZnFfxXMmNRrMitTIChHWNnwNnCcKkcmamiZzlLEeiIjJFfVvfQSshHYyhswWcCSiIxyYXHqRrWVvwOPeZzEpobIiEZzeBgGNnuUnsrRrROiXNnhJjHitTIxTtTSstiIKkLlYrRfNnRLlOorDdFOoaAZcCpaApPaAGMYyfFBbMmXtTkKxCcmoOzlLiIZvVgwWzFfZwVxXBbjHhJZzfFWwtTjJDFfduUsSYyJjSsveEFfxHhtTghHhHScCsrRBbLlGmMCclsSLgncHhRrcENneCWROocbAayYoyLMBbwRwWrZzmbBtTlLMWrRWwlLLllLNnUsWqQjJwSlLujAaJmwWbAMmacPeEpOldDdOoTtVvfFDtTUusoUuOnNKdrRDFUNnYyurqQRZiIzPuXxfAxrwEeWGgRrYyQvVGgqMmZOouUzRqQAaboHhOsSBZAazaAQqSsbmMbBBvValLEeAfYjJBnQqNTtFfbXlLXuUxxddDDphHnGEeFfgGMzIoSsiIAaUvVuGgTOosSwWOotdDOuoONnUQqmFoOWoOzKMvVDdkvVQOoqKLDdUugGlXxmtFfTtgQqNnrRPiIfFmLlrRMwnNRTtaArIiZzjJSsWfyYFKkyjJKRrPBEebNrRnGgGlLzZgcCcCTwWcCnNtWwpMeESWwsGgcCWwQqgGiuUboVvWmtRQqIivbBVwWrsBbSrRGuUgPVvVvxWwNnwjJJjseAaEaAVvSVvAVKkKOLlwWoknWwiIBbcCAVvZzakgGKpPxvbSsBBOoFfBbbHzZRrhvVVpPiUMmujJzzDEedUNnKYyIiFfNnoUuOVgGvgIilnNSsaAmMLqQGhHkquUWwtTfKkFicCZzJiSsfkFQAaqfGfFgKFBbyYIiDddzEeaAziIZOlLjJmMdDVvtuUTZUuZzFfdWwDzmMXxbIBbiiIQqnNqQsSWHhaAjhHJxXRsSrEjJeoPNnstiIdDTaASlLBFpPnTtNfbdDrReBbQqJjIiOofFEePsSpHMmhHhfFeELlcCEiJjUuiCcIljJQqhPAIiPpYgGFBbfMvVbBgGuUmpPLDSsdjjJeEbEepPgGBJFdkKDgGBbhHEehwWkyYMkixXIKeENnPgoOGXxpfdDFDgGLbBRGhJjHTtnNjJyYJrROogSxXsDBbdGLlFfOobAFfTxrRBbzeEZWSsJDdBbcCuvVbrRvVWwBTHIihaAxRrXPFfnSsCcNuhGgHKkgGHhtEeTLFfWOxeEEyYVvejJWxJaTVJmMjgGvAaJXxjrRtVvAKgGFpPiIfVvEcCGIiceECtTDVcSsFfeErmMRKkCjSsJbGgkJdDIiYMmhHFfzZQqnNXxyjvtTmdWwPpmMIiLvVhHlWwjJVKMmkvZzdDDdTtTtYyZzweEWBrRXxeEuUbBCDdsSoOxaAzVvZjJXKkJVvVLldDrRmMOQqsOoBRpqPpaAQsHhSGxXiIgPiPFfdDpIFdDUuxXIiYyfmgGtTMdOoDrjhHJplLlLXZzxbYyBPtTLMmlCBbWPpBbSsnNwWTteELPvVpPmMBbuUpePpdDGgrmMmMuhPaAzZwWpXxEediIDYnNWwrRPHVvhprdDFiyYIJbBIijTtfFPpmMulLlmMLUDcCwWIidNnvCcVfOPpcDjJdCoRZDtVvTdzZztTqlLAadXxDOoyYHUuhyYdKkQqdDDofFOlLsSyYMaATtAacXxCmcdMmDvlBfFbneEtdDLmMBbXxkHhKuUqPpQlRrCcnRrpPNTMmIiNfzZxXJGgyTtYyeEBEebwWYEAaAaRrtTCcNnBbejvVKcHhSsDdxtTmMTtQjJqMmyzZVtyYTPpXWwxbBELlllLcCLelIDdiWSsrRwiIDMmdxBbXZnNyYfFeHhUuExXWrYyKvqQVeEiamuJjUMRrxXlUcryYRafFZzFffJHhdDjaAVvQqySyYsYFEZAaSszefAkZzKqhJXxpPjAaBNguUGnQAbBagJjGPpIygKkGjJnamMMmSsAfFNQbBqYMjMIimYEesSgGyJmipPsFfSjzdDZJnPpNcCeEnNTtnPOopByYbHhNDdjNnoOFfWwnkAawWKNLIisIiJjIeNndDPpTBbtelLEjJYyEvVUuZzcCjGaAGggSsyYJKZzkaAhOoHiIgYdDytTnNGJyFWwflLfFnXxCGgfFpPPpGgcrRtGgTiIrmtTMRpzZPmoNncCOMbBSSskKseEOoJjpPOodDwWsHhSMmNWwlGWwguULnDWYyJjRrCcjJOonNiIwkneEEeBcCbTCcQqtaBbYyFwWfrRnNVejJEKejJEzrRZsfFlTteIiELHvVfcCFNHhmMtTnAPpBapPAbKkchHWceEtTCwCLOohHlsZIictTCzSfYyAWwaRuUZzrAadDgGtTJmMPpjUFfDdPpJjDdBbusqQIfdDFVvlLiSeNnEfODdmMorRBeTtfrgtfFTGkWwKRfFjJFfYyzZBQquUMmbBbsSHqQhVXxzZvVyYTtuUUtTCcLnNluScCLlDdcCiigGHhTtISsHTUuthrRFYyhjJHfnNHfFhRriINnMTtaAmhCcbByYlLZhHzgGouUkKgeEGOvyqQtTYUuHhBbuUVOqkPpbBaAKQXxhHHqQhHhoOfFeLlOopPKkEPhEegGWnNPpPTtoOhHpWfiInNMmFnXxNwJjuXsSxUwRrioVxaAXtTHnNhmrReEMTtWwIbBiDdOFfdHhuUDUHhuoOhiIbyYBZzllsSLLEoviIbBVvxXQVvqTlLAsYybBSmMFfcjJCNntGgTCvPpVmSssSMckKpPQqVrRbBHhuUYnNiIyvroORbKvVEcjJlYyLOAaiIodDCxNnYyYyXMEemMmzcCZJVvuiIUySsdDYjNnQqtTCpPcwWitTISsUsSufFdDarRAedtSsTDIvViRrkQZzqnNfhHFwxXWBcCvVfjQqyXxYyYMmuGgJdDdDjhHfFUyYBAEeabJFjJZzaOoWkKpPwyBbYLfFliIsFvqQCcmgGuHhXxNFfEMmeBgeEcRrCGGIigbxXndDVGZzglKkLiCVvEegGczZyfFYcWmMXxZQqzwCNTauUnNATOdyYcCDoPpzNnZtTnNyYwvmMkKTtVBbGgWufFUugGdDkrRKUczZjJJjjzZLMmLllJaAGgrcCRcCiIUuCtQCtTcFfwWqQnPpNvKkVxrRMmjJjJXUCcukerREyYdDKqthHHPsSpVvaAhPpgGKkiXxIVwWSsvXUuxXgtTBbnNYyGpPSrQqReEeErRRPpcCIgTYyDdXxsZOozSYyLlQInNwsSZzznNZfFqQBbpPJjBFkKzZYyfrRiqIiQINnjSspAaKkiIsSbgkKqQpPGXxuzZdCcEeDkKgGwWUCcRlCcLrXdDRrxJMAmMamMWwmvVjjJUukLlZIFfWeEwiGgNngGbgGBzxJjXBBcClLgGsSSsbIpPiEebJBbjKyYDkKdgUEepPcCcCXxhVvgGGxpPPpXgHbuUxYyXMrRmtTrOMmoRwWedDajJyYAVgGRrvaAVvuUExXBVvnNUufAaFOoQLlqcCOofFkKeTtEjJdBkKbOiIxXMnNtrrrRrUuHhRRaARRrTmoaNnAhHadDSlLiUuIdQqqQDsCEeQqcAyEIhHiDdKkeXxEHMwWmhlLRZPpzrHheEHhHhGBqQbOogpPeGNnguUvrRSzZFfsYygGnRcCrqxZzXsSzRrZgLlGQoONChHWwxUjJuSsRYyLpPlmMurRPpXxqQQkKqXEexyyYeEzZYAGgPpkKwWakKnNoOjxIHhiXJAeEaJEeGgdxBbXDjpPULlrZzjLlgBHhbDxTtXdGtTOoJSVvoOmMfFsZBbxXMiIaAeEmhhHHYeENsSEenHhyMmYSkKMmsySuEenDdrRYyNvfGLlgFVJjUeEeRqLlQPpDaAdQqFfrwWmMEbBsgGzdDIiSsEXxeCcQaAMmvVqjEenwgGWNZzYyJFfnNCeEtNnAoOOoaTOowWQqfyYxXgKkGxZKkzXdDhgGtTHoTtQqwWOaPpdDAgdrnNRDkJjKQLbBVvlqXPgGtTFfpUMmhNAanHuQqMwUuWEeTUutuUmxnNGGiIgotTOvVaMmABbXTtxgXxgGyYeEQUuqCczZTtGDAadfFyNnYmCcMjJLlWLiIFfABbaRrImAaMEeHhafFAIishHDiIdCaAbBcmAarRLCclLloOKkqQMxOKkPpoXSbBSdDtTsXxhHcCyBbNnTtgnNGrRYiEevDfFRrdAaWrRaAwnyYTtNdNnDVlTtObpHNnhPnNVvWYyNnMwWmUukKSEZzesEZFfJPpjzltNnTLiLlIOwWfFjJoeKCckwIjVvJANzZiUqQuImMnavViBqQQCcMmqAaWwWwbBZsLSsDqQYdDyWcCwdvVhEetTpPQqEeIiNxXGgjJnfFKUuJJjjLAazZlkwXxVvNndDWJZzFfjNrRnQqlLrCcHhWwRdDLlWkKZCYyBbYycznbBiIBbNkKwmIipPAaKyYBbRrkmMaAjrRJMVvsfbBFjubxXBUPpJCWwkZzKYPpdDSEessdDSVyYvZqQzUIiuYNnNnyYyyMmcuVvCcCevVExXcUiIKPpkXrRxlLTtHhuYNnfFQqyKkzZWwGcAeEaCnNQBUPpnNudDjEeqQJbqOoaAwWZzXxgqmMzZDZzdQHnNxXwWrRSPpshzZfFNVvuhHUiInjJjJFZzfrRnNPpiIeEmeEMmMjpPQqJmMKCckSHctTCSsSshcwWCSssZIizHhyTtktFfTRrzZJjRrKLtuUgxXGTdDlSsKFytTYmMjbBRrLlJfBbWwuWwXjJoOnNdDyYVvxUCAoOackKvVhYyHImWwMiLFfclLClIjJRrJjKkhHiNnYyTVvBrRbjwWKkRrCcxXynNIiLluUYcCBbFfJoOtatTAOokUcCIiPpuc
diff --git a/day05/part1 b/day05/part1
new file mode 100755
index 0000000..4761380
--- /dev/null
+++ b/day05/part1
@@ -0,0 +1,27 @@
+#!/usr/bin/env ruby
+
+input = gets.chomp.chars
+
+l = input.length
+loop do
+ i = input.length - 1
+ loop do
+ break if i < 1
+
+ if input[i] == input[i-1].swapcase
+ input[i] = nil
+ input[i-1] = nil
+ i -= 2
+ else
+ i -= 1
+ end
+ end
+ input = input.compact
+ if input.length == l
+ break
+ else
+ l = input.length
+ end
+end
+
+puts input.length
diff --git a/day05/part2 b/day05/part2
new file mode 100755
index 0000000..b71d84e
--- /dev/null
+++ b/day05/part2
@@ -0,0 +1,34 @@
+#!/usr/bin/env ruby
+
+input = gets.chomp.chars
+
+units = input.map(&:downcase).uniq
+lengths = {}
+
+units.each do |unit|
+ polymer = input.dup
+ polymer.delete_if {|u| u == unit || u == unit.upcase}
+ l = polymer.length
+ loop do
+ i = polymer.length - 1
+ loop do
+ break if i < 1
+
+ if polymer[i] == polymer[i-1].swapcase
+ polymer.delete_at(i)
+ polymer.delete_at(i-1)
+ i -= 2
+ else
+ i -= 1
+ end
+ end
+ if polymer.length == l
+ break
+ else
+ l = polymer.length
+ end
+ end
+ lengths[unit] = polymer.length
+end
+
+puts lengths.values.min