Removed needless directory
authorNeil Smith <neil.git@njae.me.uk>
Fri, 23 Dec 2016 19:03:22 +0000 (19:03 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 23 Dec 2016 19:03:22 +0000 (19:03 +0000)
116 files changed:
Setup.hs [new file with mode: 0644]
adventofcode16.cabal [new file with mode: 0644]
adventofcode16/Setup.hs [deleted file]
adventofcode16/adventofcode16.cabal [deleted file]
adventofcode16/app/Main.hs [deleted file]
adventofcode16/app/advent01.hs [deleted file]
adventofcode16/app/advent02.hs [deleted file]
adventofcode16/app/advent03.hs [deleted file]
adventofcode16/app/advent04.hs [deleted file]
adventofcode16/app/advent05.hs [deleted file]
adventofcode16/app/advent06-old.hs [deleted file]
adventofcode16/app/advent06.hs [deleted file]
adventofcode16/app/advent07.hs [deleted file]
adventofcode16/app/advent08.hs [deleted file]
adventofcode16/app/advent09.hs [deleted file]
adventofcode16/app/advent10.hs [deleted file]
adventofcode16/app/advent11.hs [deleted file]
adventofcode16/app/advent11a.hs [deleted file]
adventofcode16/app/advent11h.hs [deleted file]
adventofcode16/app/advent11p.hs [deleted file]
adventofcode16/app/advent12.hs [deleted file]
adventofcode16/app/advent13.hs [deleted file]
adventofcode16/app/advent14.hs [deleted file]
adventofcode16/app/advent14c.hs [deleted file]
adventofcode16/app/advent14parallel.hs [deleted file]
adventofcode16/app/advent15.hs [deleted file]
adventofcode16/app/advent15l.hs [deleted file]
adventofcode16/app/advent16.hs [deleted file]
adventofcode16/app/advent16i.hs [deleted file]
adventofcode16/app/advent17.hs [deleted file]
adventofcode16/app/advent18.hs [deleted file]
adventofcode16/app/advent18f.hs [deleted file]
adventofcode16/app/advent19.hs [deleted file]
adventofcode16/app/advent20.hs [deleted file]
adventofcode16/app/advent21.hs [deleted file]
adventofcode16/app/advent22.hs [deleted file]
adventofcode16/app/advent22library.hs [deleted file]
adventofcode16/app/advent22search.hs [deleted file]
adventofcode16/app/advent22showgrid.hs [deleted file]
adventofcode16/app/advent23.hs [deleted file]
adventofcode16/data/advent01.txt [deleted file]
adventofcode16/data/advent02.txt [deleted file]
adventofcode16/data/advent03.txt [deleted file]
adventofcode16/data/advent04.txt [deleted file]
adventofcode16/data/advent06.txt [deleted file]
adventofcode16/data/advent07.txt [deleted file]
adventofcode16/data/advent08.txt [deleted file]
adventofcode16/data/advent09.txt [deleted file]
adventofcode16/data/advent10-test.txt [deleted file]
adventofcode16/data/advent10.txt [deleted file]
adventofcode16/data/advent12.txt [deleted file]
adventofcode16/data/advent15.test.txt [deleted file]
adventofcode16/data/advent15.txt [deleted file]
adventofcode16/data/advent20.txt [deleted file]
adventofcode16/data/advent21.txt [deleted file]
adventofcode16/data/advent22.txt [deleted file]
adventofcode16/data/advent23.txt [deleted file]
adventofcode16/src/Lib.hs [deleted file]
adventofcode16/stack.yaml [deleted file]
adventofcode16/test/Spec.hs [deleted file]
app/Main.hs [new file with mode: 0644]
app/advent01.hs [new file with mode: 0644]
app/advent02.hs [new file with mode: 0644]
app/advent03.hs [new file with mode: 0644]
app/advent04.hs [new file with mode: 0644]
app/advent05.hs [new file with mode: 0644]
app/advent06-old.hs [new file with mode: 0644]
app/advent06.hs [new file with mode: 0644]
app/advent07.hs [new file with mode: 0644]
app/advent08.hs [new file with mode: 0644]
app/advent09.hs [new file with mode: 0644]
app/advent10.hs [new file with mode: 0644]
app/advent11.hs [new file with mode: 0644]
app/advent11a.hs [new file with mode: 0644]
app/advent11h.hs [new file with mode: 0644]
app/advent11p.hs [new file with mode: 0644]
app/advent12.hs [new file with mode: 0644]
app/advent13.hs [new file with mode: 0644]
app/advent14.hs [new file with mode: 0644]
app/advent14c.hs [new file with mode: 0644]
app/advent14parallel.hs [new file with mode: 0644]
app/advent15.hs [new file with mode: 0644]
app/advent15l.hs [new file with mode: 0644]
app/advent16.hs [new file with mode: 0644]
app/advent16i.hs [new file with mode: 0644]
app/advent17.hs [new file with mode: 0644]
app/advent18.hs [new file with mode: 0644]
app/advent18f.hs [new file with mode: 0644]
app/advent19.hs [new file with mode: 0644]
app/advent20.hs [new file with mode: 0644]
app/advent21.hs [new file with mode: 0644]
app/advent22.hs [new file with mode: 0644]
app/advent22library.hs [new file with mode: 0644]
app/advent22search.hs [new file with mode: 0644]
app/advent22showgrid.hs [new file with mode: 0644]
app/advent23.hs [new file with mode: 0644]
data/advent01.txt [new file with mode: 0644]
data/advent02.txt [new file with mode: 0644]
data/advent03.txt [new file with mode: 0644]
data/advent04.txt [new file with mode: 0644]
data/advent06.txt [new file with mode: 0644]
data/advent07.txt [new file with mode: 0644]
data/advent08.txt [new file with mode: 0644]
data/advent09.txt [new file with mode: 0644]
data/advent10-test.txt [new file with mode: 0644]
data/advent10.txt [new file with mode: 0644]
data/advent12.txt [new file with mode: 0644]
data/advent15.test.txt [new file with mode: 0644]
data/advent15.txt [new file with mode: 0644]
data/advent20.txt [new file with mode: 0644]
data/advent21.txt [new file with mode: 0644]
data/advent22.txt [new file with mode: 0644]
data/advent23.txt [new file with mode: 0644]
src/Lib.hs [new file with mode: 0644]
stack.yaml [new file with mode: 0644]
test/Spec.hs [new file with mode: 0644]

diff --git a/Setup.hs b/Setup.hs
new file mode 100644 (file)
index 0000000..9a994af
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/adventofcode16.cabal b/adventofcode16.cabal
new file mode 100644 (file)
index 0000000..6216e51
--- /dev/null
@@ -0,0 +1,365 @@
+name:                adventofcode16
+version:             0.1.0.0
+synopsis:            Initial project template from stack
+description:         Please see README.md
+homepage:            https://github.com/neilnjae/adventofcode16#readme
+license:             BSD3
+license-file:        LICENSE
+author:              Neil Smith
+maintainer:          noone@njae.me.uk
+copyright:           2016 Neil Smith
+category:            None
+build-type:          Simple
+extra-source-files:  README.md
+cabal-version:       >=1.10
+
+library
+  hs-source-dirs:      src
+  exposed-modules:     Lib
+  build-depends:       base >= 4.7 && < 5
+  default-language:    Haskell2010
+
+executable advent01
+  hs-source-dirs:      app
+  main-is:             advent01.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+  default-language:    Haskell2010
+
+executable advent02
+  hs-source-dirs:      app
+  main-is:             advent02.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , array
+  default-language:    Haskell2010
+
+executable advent03
+  hs-source-dirs:      app
+  main-is:             advent03.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+  default-language:    Haskell2010
+
+executable advent04
+  hs-source-dirs:      app
+  main-is:             advent04.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+                     , containers
+  default-language:    Haskell2010
+
+executable advent05
+  hs-source-dirs:      app
+  main-is:             advent05.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , containers
+                     , MissingH
+  default-language:    Haskell2010
+
+executable advent06
+  hs-source-dirs:      app
+  main-is:             advent06.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent07
+  hs-source-dirs:      app
+  main-is:             advent07.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+  default-language:    Haskell2010
+
+executable advent08
+  hs-source-dirs:      app
+  main-is:             advent08.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , array
+                     , parsec
+  default-language:    Haskell2010
+
+executable advent09
+  hs-source-dirs:      app
+  main-is:             advent09.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , split
+  default-language:    Haskell2010
+
+executable advent10
+  hs-source-dirs:      app
+  main-is:             advent10.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , text
+                     , mtl
+  default-language:    Haskell2010
+
+executable advent11
+  hs-source-dirs:      app
+  main-is:             advent11.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent11a
+  hs-source-dirs:      app
+  main-is:             advent11a.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent11h
+  hs-source-dirs:      app
+  main-is:             advent11h.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent11p
+  hs-source-dirs:      app
+  main-is:             advent11p.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , pqueue
+  default-language:    Haskell2010
+
+executable advent12
+  hs-source-dirs:      app
+  main-is:             advent12.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+                     , mtl
+  default-language:    Haskell2010
+
+executable advent13
+  hs-source-dirs:      app
+  main-is:             advent13.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , MissingH
+  default-language:    Haskell2010
+
+executable advent14
+  hs-source-dirs:      app
+  main-is:             advent14.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , MissingH
+  default-language:    Haskell2010
+
+executable advent14c
+  hs-source-dirs:      app
+  main-is:             advent14c.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , bytestring
+                     , cryptonite
+  default-language:    Haskell2010
+
+executable advent14parallel
+  hs-source-dirs:      app
+  main-is:             advent14parallel.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parallel
+                     , bytestring
+                     , cryptonite
+  default-language:    Haskell2010
+
+executable advent15
+  hs-source-dirs:      app
+  main-is:             advent15.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent15l
+  hs-source-dirs:      app
+  main-is:             advent15l.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent16
+  hs-source-dirs:      app
+  main-is:             advent16.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent16i
+  hs-source-dirs:      app
+  main-is:             advent16i.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent17
+  hs-source-dirs:      app
+  main-is:             advent17.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , bytestring
+                     , cryptonite
+  default-language:    Haskell2010
+
+executable advent18
+  hs-source-dirs:      app
+  main-is:             advent18.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent18f
+  hs-source-dirs:      app
+  main-is:             advent18f.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+executable advent19
+  hs-source-dirs:      app
+  main-is:             advent19.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , containers
+  default-language:    Haskell2010
+
+executable advent20
+  hs-source-dirs:      app
+  main-is:             advent20.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent21
+  hs-source-dirs:      app
+  main-is:             advent21.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+                     , mtl
+  default-language:    Haskell2010
+
+executable advent22
+  hs-source-dirs:      app
+  main-is:             advent22.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent22search
+  hs-source-dirs:      app
+  main-is:             advent22search.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent22showgrid
+  hs-source-dirs:      app
+  main-is:             advent22showgrid.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+  default-language:    Haskell2010
+
+executable advent22library
+  hs-source-dirs:      app
+  main-is:             advent22library.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+                     , containers
+                     , astar
+                     , unordered-containers
+                     , hashable
+  default-language:    Haskell2010
+
+executable advent23
+  hs-source-dirs:      app
+  main-is:             advent23.hs
+  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+                     , parsec
+                     , parsec-numbers
+                     , mtl
+  default-language:    Haskell2010
+
+executable adventofcode16-exe
+  hs-source-dirs:      app
+  main-is:             Main.hs
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
+  build-depends:       base
+                     , adventofcode16
+  default-language:    Haskell2010
+
+test-suite adventofcode16-test
+  type:                exitcode-stdio-1.0
+  hs-source-dirs:      test
+  main-is:             Spec.hs
+  build-depends:       base
+                     , adventofcode16
+  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
+  default-language:    Haskell2010
+
+source-repository head
+  type:     git
+  location: https://github.com/neilnjae/adventofcode16
diff --git a/adventofcode16/Setup.hs b/adventofcode16/Setup.hs
deleted file mode 100644 (file)
index 9a994af..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/adventofcode16/adventofcode16.cabal b/adventofcode16/adventofcode16.cabal
deleted file mode 100644 (file)
index 6216e51..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-name:                adventofcode16
-version:             0.1.0.0
-synopsis:            Initial project template from stack
-description:         Please see README.md
-homepage:            https://github.com/neilnjae/adventofcode16#readme
-license:             BSD3
-license-file:        LICENSE
-author:              Neil Smith
-maintainer:          noone@njae.me.uk
-copyright:           2016 Neil Smith
-category:            None
-build-type:          Simple
-extra-source-files:  README.md
-cabal-version:       >=1.10
-
-library
-  hs-source-dirs:      src
-  exposed-modules:     Lib
-  build-depends:       base >= 4.7 && < 5
-  default-language:    Haskell2010
-
-executable advent01
-  hs-source-dirs:      app
-  main-is:             advent01.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , split
-  default-language:    Haskell2010
-
-executable advent02
-  hs-source-dirs:      app
-  main-is:             advent02.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , array
-  default-language:    Haskell2010
-
-executable advent03
-  hs-source-dirs:      app
-  main-is:             advent03.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , split
-  default-language:    Haskell2010
-
-executable advent04
-  hs-source-dirs:      app
-  main-is:             advent04.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , split
-                     , containers
-  default-language:    Haskell2010
-
-executable advent05
-  hs-source-dirs:      app
-  main-is:             advent05.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , containers
-                     , MissingH
-  default-language:    Haskell2010
-
-executable advent06
-  hs-source-dirs:      app
-  main-is:             advent06.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent07
-  hs-source-dirs:      app
-  main-is:             advent07.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-  default-language:    Haskell2010
-
-executable advent08
-  hs-source-dirs:      app
-  main-is:             advent08.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , array
-                     , parsec
-  default-language:    Haskell2010
-
-executable advent09
-  hs-source-dirs:      app
-  main-is:             advent09.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , split
-  default-language:    Haskell2010
-
-executable advent10
-  hs-source-dirs:      app
-  main-is:             advent10.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , text
-                     , mtl
-  default-language:    Haskell2010
-
-executable advent11
-  hs-source-dirs:      app
-  main-is:             advent11.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent11a
-  hs-source-dirs:      app
-  main-is:             advent11a.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent11h
-  hs-source-dirs:      app
-  main-is:             advent11h.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent11p
-  hs-source-dirs:      app
-  main-is:             advent11p.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , pqueue
-  default-language:    Haskell2010
-
-executable advent12
-  hs-source-dirs:      app
-  main-is:             advent12.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-                     , mtl
-  default-language:    Haskell2010
-
-executable advent13
-  hs-source-dirs:      app
-  main-is:             advent13.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , MissingH
-  default-language:    Haskell2010
-
-executable advent14
-  hs-source-dirs:      app
-  main-is:             advent14.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , MissingH
-  default-language:    Haskell2010
-
-executable advent14c
-  hs-source-dirs:      app
-  main-is:             advent14c.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , bytestring
-                     , cryptonite
-  default-language:    Haskell2010
-
-executable advent14parallel
-  hs-source-dirs:      app
-  main-is:             advent14parallel.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parallel
-                     , bytestring
-                     , cryptonite
-  default-language:    Haskell2010
-
-executable advent15
-  hs-source-dirs:      app
-  main-is:             advent15.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-  default-language:    Haskell2010
-
-executable advent15l
-  hs-source-dirs:      app
-  main-is:             advent15l.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-  default-language:    Haskell2010
-
-executable advent16
-  hs-source-dirs:      app
-  main-is:             advent16.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent16i
-  hs-source-dirs:      app
-  main-is:             advent16i.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent17
-  hs-source-dirs:      app
-  main-is:             advent17.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , bytestring
-                     , cryptonite
-  default-language:    Haskell2010
-
-executable advent18
-  hs-source-dirs:      app
-  main-is:             advent18.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent18f
-  hs-source-dirs:      app
-  main-is:             advent18f.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-executable advent19
-  hs-source-dirs:      app
-  main-is:             advent19.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , containers
-  default-language:    Haskell2010
-
-executable advent20
-  hs-source-dirs:      app
-  main-is:             advent20.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-  default-language:    Haskell2010
-
-executable advent21
-  hs-source-dirs:      app
-  main-is:             advent21.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-                     , mtl
-  default-language:    Haskell2010
-
-executable advent22
-  hs-source-dirs:      app
-  main-is:             advent22.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-  default-language:    Haskell2010
-
-executable advent22search
-  hs-source-dirs:      app
-  main-is:             advent22search.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-  default-language:    Haskell2010
-
-executable advent22showgrid
-  hs-source-dirs:      app
-  main-is:             advent22showgrid.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-  default-language:    Haskell2010
-
-executable advent22library
-  hs-source-dirs:      app
-  main-is:             advent22library.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-                     , containers
-                     , astar
-                     , unordered-containers
-                     , hashable
-  default-language:    Haskell2010
-
-executable advent23
-  hs-source-dirs:      app
-  main-is:             advent23.hs
-  ghc-options:         -O2 -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-                     , parsec
-                     , parsec-numbers
-                     , mtl
-  default-language:    Haskell2010
-
-executable adventofcode16-exe
-  hs-source-dirs:      app
-  main-is:             Main.hs
-  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
-  build-depends:       base
-                     , adventofcode16
-  default-language:    Haskell2010
-
-test-suite adventofcode16-test
-  type:                exitcode-stdio-1.0
-  hs-source-dirs:      test
-  main-is:             Spec.hs
-  build-depends:       base
-                     , adventofcode16
-  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
-  default-language:    Haskell2010
-
-source-repository head
-  type:     git
-  location: https://github.com/neilnjae/adventofcode16
diff --git a/adventofcode16/app/Main.hs b/adventofcode16/app/Main.hs
deleted file mode 100644 (file)
index de1c1ab..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Main where
-
-import Lib
-
-main :: IO ()
-main = someFunc
diff --git a/adventofcode16/app/advent01.hs b/adventofcode16/app/advent01.hs
deleted file mode 100644 (file)
index b76195d..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-module Main(main) where
-
-import Data.List (sort)
-import Data.List.Split (splitOn)
-
--- turn direction, number of steps
-data Step = Step Char Int deriving (Show)
-
-data Direction = North | East | South | West 
-    deriving (Enum, Show, Bounded, Eq)
-
--- direction, easting, northing
-data Position = Position Direction Int Int deriving (Show)
--- Two positions are the same if they're in the same place, 
--- regardless of facing
-instance Eq Position where
-    Position _ e n == Position _ e' n' = e == e' && n == n'
-
-main :: IO ()
-main = do 
-        instructions <- readFile "data/advent01.txt"
-        part1 instructions
-        part2 instructions
-
-part1 :: String -> IO ()
-part1 instructions = do
-        let answer = finalDistance $ last $ stepsFromStart $ steps instructions
-        print answer
-
-part2 :: String -> IO ()
-part2 instructions = do
-        let visited = finalDistance $ firstRepeat $ stepsFromStart $ expandSteps $ steps instructions
-        print visited
-
-
--- Extract the steps from the input string.
-steps :: String -> [Step]
-steps s = map readStep $ splitOn ", " s
-    where readStep (d:l) = Step d (read l)
-
--- Take steps from the starting position
-stepsFromStart :: [Step] -> [Position]
-stepsFromStart = takeSteps (Position North 0 0)
-
--- Calculate manhattan distance from start to this state
-finalDistance :: Position -> Int
-finalDistance (Position _ e n) = (abs e) + (abs n)
-
--- For part 2: convert one step of many spaces to many steps of one space each
-expandSteps :: [Step] -> [Step]
-expandSteps = 
-    concatMap expandStep
-    where expandStep (Step dir d) = (Step dir 1) : replicate (d - 1) (Step 'S' 1)
-
--- Execute a series of steps, keeping track of the positions after each step
-takeSteps :: Position -> [Step] -> [Position]
--- takeSteps pos steps = scanl move pos steps
-takeSteps = scanl move
-
--- Make one move, by updating direction then position
-move :: Position -> Step -> Position
-move (Position facing easting northing)
-    (Step turnInstr distance) = 
-    Position facing' easting' northing'
-    where facing' = turn turnInstr facing
-          (easting', northing') = takeStep facing' distance easting northing
-
--- Turn right, left, or straight
-turn :: Char -> Direction -> Direction
-turn 'R' direction = turnCW direction
-turn 'L' direction = turnACW direction
-turn 'S' direction = direction
-
--- Move in the current direction
-takeStep :: Direction -> Int -> Int -> Int -> (Int, Int)
-takeStep North d e n = (e, n+d)
-takeStep South d e n = (e, n-d)
-takeStep West  d e n = (e-d, n)
-takeStep East  d e n = (e+d, n)
-
-
--- | a `succ` that wraps 
-turnCW :: (Bounded a, Enum a, Eq a) => a -> a 
-turnCW dir | dir == maxBound = minBound
-         | otherwise = succ dir
-
--- | a `pred` that wraps
-turnACW :: (Bounded a, Enum a, Eq a) => a -> a
-turnACW dir | dir == minBound = maxBound
-            | otherwise = pred dir
-
--- All the prefixes of a list of items
-prefixes = scanl addTerm []
-    where addTerm ps t = ps ++ [t]
-
--- The first item that exists in a prefix of the list to that point
-firstRepeat positions = 
-    last $ head $ dropWhile (\p -> (last p) `notElem` (tail $ reverse p)) 
-                            (tail $ prefixes positions)
diff --git a/adventofcode16/app/advent02.hs b/adventofcode16/app/advent02.hs
deleted file mode 100644 (file)
index 747001d..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-module Main(main) where
-
-import Data.Array.IArray
-
--- Row 1 is top, column 1 is left
-type Position = (Int, Int)
-type Keyboard = Array Position Char
-
-kb1 = ["xxxxx", 
-       "x123x", 
-       "x456x",
-       "x789x",
-       "xxxxx"]
-
-kb2 = ["xxxxxxx",
-       "xxx1xxx",
-       "xx234xx",
-       "x56789x",
-       "xxABCxx",
-       "xxxDxxx",
-       "xxxxxxx"]
-
-enumerate = zip [0..]
-
-mkKeyboard :: [String] -> Keyboard
-mkKeyboard kb = array ((0, 0), (length kb - 1, length (kb!!0) - 1))
-    [((i, j), c) | (i, r) <- enumerate kb, (j, c) <- enumerate r]
-
-keyboard1 = mkKeyboard kb1
-keyboard2 = mkKeyboard kb2
-
-findKey :: Keyboard -> Char-> Position
-findKey kb c = fst $ head $ filter (\a -> (snd a) == c) $ assocs kb
-
--- data Coord = One | Two | Three
---     deriving (Read, Show, Eq, Ord, Enum, Bounded)
--- -- instance Bounded Coord where
--- --     minBound = Coord 1
--- --     maxBound = Coord 3
-
--- data Position = Position Coord Coord
---     deriving (Show, Eq)
-
-main :: IO ()
-main = do 
-        instrText <- readFile "data/advent02.txt" 
-        let instructions = lines instrText
-        part1 instructions
-        part2 instructions
-
-part1 :: [String] -> IO ()
-part1 instructions = do 
-        putStrLn $ followInstructions keyboard1 instructions
-
-
-part2 :: [String] -> IO ()
-part2 instructions = do 
-        putStrLn $ followInstructions keyboard2 instructions
-
-
-followInstructions :: Keyboard -> [String] -> String
-followInstructions kb instr = moveSeries kb (startPosition kb) instr
-
-
-startPosition :: Keyboard -> Position
-startPosition kb = findKey kb '5'
-
-moveSeries :: Keyboard -> Position -> [String] -> String
-moveSeries _ _ [] = []
-moveSeries kb p (i:is) = (n:ns)
-    where p' = makeMoves kb p i
-          n = kb ! p'
-          ns = moveSeries kb p' is
-
-makeMoves :: Keyboard -> Position -> [Char] -> Position
-makeMoves kb p ms = foldl (safeMove kb) p ms
-
-safeMove :: Keyboard -> Position -> Char -> Position
-safeMove kb pos dir = maybeRevert kb pos (move pos dir)
-
-move :: Position -> Char -> Position
-move (r, c) 'U' = (r-1, c)
-move (r, c) 'D' = (r+1, c)
-move (r, c) 'L' = (r, c-1)
-move (r, c) 'R' = (r, c+1)
-
-maybeRevert :: Keyboard -> Position -> Position -> Position
-maybeRevert kb oldPos newPos 
-    | kb ! newPos == 'x' = oldPos
-    | otherwise = newPos
diff --git a/adventofcode16/app/advent03.hs b/adventofcode16/app/advent03.hs
deleted file mode 100644 (file)
index ef40bcc..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-module Main(main) where
-
-import Data.List (transpose, sort)
-import Data.List.Split (splitOn, chunksOf)
-
-type Triple = [Integer]
-
-main :: IO ()
-main = do 
-        instrText <- readFile "data/advent03.txt" 
-        let triangles = map (parseLine) $ lines instrText
-        part1 triangles
-        part2 triangles
-
-
-part1 :: [Triple] -> IO ()
-part1 triangles = do 
-    print $ length $ filter (validTriangle) triangles 
-
-part2 :: [Triple] -> IO ()
-part2 triangles = do 
-    print $ length $ filter (validTriangle) $ byColumns triangles 
-
-
-parseLine :: String -> Triple
-parseLine = map (read) . filter (not . null) . splitOn " "
-
-validTriangle :: Triple -> Bool
-validTriangle triple = sortedTriple!!0 + sortedTriple!!1 > sortedTriple!!2
-    where sortedTriple = sort triple
-
-byColumns :: [[Integer]] -> [Triple]
-byColumns = chunksOf 3 . concat . transpose 
diff --git a/adventofcode16/app/advent04.hs b/adventofcode16/app/advent04.hs
deleted file mode 100644 (file)
index 85b7555..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-module Main(main) where
-
-import Data.List (last, intersperse, sortBy, intercalate, isInfixOf, init)
-import Data.List.Split (splitOn)
-import Data.Char (isLetter, ord, chr)
-import qualified Data.Map.Lazy as Map
-
-data Room = Room { name :: String
-                 , sector :: Int
-                 , checksum :: String
-                 } deriving (Show)
-
-main :: IO ()
-main = do 
-        instrText <- readFile "data/advent04.txt" 
-        let rooms = map (parseLine) $ lines instrText
-        part1 rooms
-        part2 rooms
-
-
-part1 :: [Room] -> IO ()
-part1 rooms = do 
-    print $ sum $ map (sector) validRooms
-    where 
-        validChecksum room = (checksum room) == makeChecksum (name room)
-        validRooms = filter (validChecksum) rooms
-
-part2 :: [Room] -> IO ()
-part2 rooms = do 
-    print $ fst $ head $ filter (\sn -> isInfixOf "north" (snd sn)) sectorNames
-    where 
-        validChecksum room = (checksum room) == makeChecksum (name room)
-        validRooms = filter (validChecksum) rooms
-        sectorNames = [((sector r),
-            shiftWord (sector r) (name r)) | r <- validRooms]
-
-
-parseLine :: String -> Room
-parseLine line = Room {name=name, sector=sector, checksum=checksum}
-    where components = splitOn "-" line
-          name = intercalate "-" $ init components
-          sector = read $ head $ splitOn "[" $ last components
-          checksum = filter (isLetter) $ last components
-
-countedLetters :: String -> [(Char, Int)]
-countedLetters name = sortBy sortCLetter $ unsortedCountedLetters name
-    where unsortedCountedLetters name = 
-            Map.toList $ Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
-
-sortCLetter :: (Char, Int) -> (Char, Int) -> Ordering
-sortCLetter (l1, n1) (l2, n2)
-    | n1 < n2 = GT
-    | n1 > n2 = LT
-    | n1 == n2 = compare l1 l2
-
-makeChecksum :: String -> String
-makeChecksum name = [l | (l, _) <- take 5 $ countedLetters name]
-
-
-shiftWord :: Int -> String -> String
-shiftWord shift letters = map (shiftLetter shift) letters
-
-shiftLetter :: Int -> Char -> Char
-shiftLetter shift letter
-    | isLetter letter = chr $ (ord letter - ord 'a' + shift) `mod` 26 + ord 'a'
-    | otherwise = ' '
diff --git a/adventofcode16/app/advent05.hs b/adventofcode16/app/advent05.hs
deleted file mode 100644 (file)
index 82a035e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-module Main(main) where
-
-import Data.Hash.MD5 (md5s, Str(..))
-import Data.List (isPrefixOf)
-import qualified Data.Map.Lazy as Map 
-
-type Password = Map.Map Integer Char
-
-input = "cxdnnyjw"
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-
-part1 :: IO ()
-part1 = do 
-    putStrLn $ take 8 [h!!5 | h <- filter (interesting) $ md5sequence input 0]
-
-part2 :: IO ()
-part2 = do 
-    putStrLn $ Map.foldr (:) [] password
-    where interestingHashes = 
-            [(read [h!!5], h!!6) | 
-              h <- filter (interesting) (md5sequence input 0), 
-              h!!5 `elem` "01234567"]
-          password = findPassword Map.empty interestingHashes
-
-
-md5sequence :: String -> Integer -> [String]
-md5sequence key i = (md5s (Str (key ++ show i))) : (md5sequence key (i+1))
-
-interesting :: String -> Bool
-interesting hash = "00000" `isPrefixOf` hash
-
-dontReplace :: (Integer, Char) -> Password -> Password
-dontReplace (k, v) = Map.insertWith (\_ v -> v) k v
-
-findPassword :: Password -> [(Integer, Char)] -> Password
-findPassword p (c:cs)
-  | Map.size p == 8 = p
-  | otherwise = findPassword p' cs
-      where p' = dontReplace c p
diff --git a/adventofcode16/app/advent06-old.hs b/adventofcode16/app/advent06-old.hs
deleted file mode 100644 (file)
index 77d4093..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-module Main(main) where
-
-import Data.List (transpose)
-import Data.Char (isLetter)
-import qualified Data.Map.Lazy as Map
-
-main :: IO ()
-main = do 
-    text <- readFile "advent06.txt" 
-    let message = lines text
-    part1 message
-    part2 message
-
-part1 :: [String] -> IO ()
-part1 message = do 
-    print $ map (fst) $ map (mostCommon) $ map (countedLetters) $ transpose message
-
-part2 :: [String] -> IO ()
-part2 message = do 
-    print $ map (fst) $ map (leastCommon) $ map (countedLetters) $ transpose message
-
-
-countedLetters :: String -> Map.Map Char Int
-countedLetters name = Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
-
-mostCommon = Map.foldlWithKey (mostCommonP) ('a', 0)
-
-mostCommonP (letter0, count0) letter count
-    | count > count0 = (letter, count)
-    | otherwise = (letter0, count0)
-
-leastCommon = Map.foldlWithKey (leastCommonP) ('a', maxBound :: Int)
-
-leastCommonP (letter0, count0) letter count
-    | count < count0 = (letter, count)
-    | otherwise = (letter0, count0)
\ No newline at end of file
diff --git a/adventofcode16/app/advent06.hs b/adventofcode16/app/advent06.hs
deleted file mode 100644 (file)
index 96c4aa2..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module Main(main) where
-
-import Data.List (transpose, maximum, minimum, sort, group)
-import Data.Tuple (swap)
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent06.txt" 
-    let message = lines text
-    part1 message
-    part2 message
-
-part1 :: [String] -> IO ()
-part1 message = do 
-    putStrLn $ map (snd . maximum . counts) $ transpose message
-
-part2 :: [String] -> IO ()
-part2 message = do 
-    putStrLn $ map (snd . minimum . counts) $ transpose message
-
-counts :: (Eq a, Ord a) => [a] -> [(Int, a)]
-counts = map (\g -> (length g, head g)) . group . sort
\ No newline at end of file
diff --git a/adventofcode16/app/advent07.hs b/adventofcode16/app/advent07.hs
deleted file mode 100644 (file)
index 8700958..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-module Main(main) where
-
-import Text.Parsec
-import Data.List (partition, union, intersect, tails)
-import Data.Char (isAlphaNum)
-
-data Chunk = Include String | Exclude String deriving (Show)
-data ChunkV = Includev Bool | Excludev Bool deriving (Show)
-
-chunkValue :: Chunk -> String
-chunkValue (Include v) = v
-chunkValue (Exclude v) = v
-
-isInclude :: Chunk -> Bool
-isInclude (Include _) = True
-isInclude (Exclude _) = False
-
-chunkValueV :: ChunkV -> Bool
-chunkValueV (Includev v) = v
-chunkValueV (Excludev v) = v
-
-isIncludeV :: ChunkV -> Bool
-isIncludeV (Includev _) = True
-isIncludeV (Excludev _) = False
-
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent07.txt" 
-    part1 text
-    part2 text
-
-
-part1 :: String -> IO ()
-part1 text = do 
-    print $ length $ filter (allowsAbba) $ successfulParse $ parseI7vf text
-
-
-part2 :: String -> IO ()
-part2 text = do 
-    print $ length $ filter (supportsSSL) $ successfulParse $ parseI7f text
-
-allowsAbba :: [ChunkV] -> Bool
-allowsAbba chunks = (any (chunkValueV) includeChunks) && (not (any (chunkValueV) excludeChunks))
-    where (includeChunks, excludeChunks) = partition (isIncludeV) chunks
-
-i7file = i7line `endBy` newline 
-i7line = many1 (includeChunk <|> excludeChunk)
-
-chunk = many1 alphaNum
-
-excludeChunk = Exclude <$> (between (char '[') (char ']') $ chunk)
-includeChunk = Include <$> chunk
-
-hasABBA = preambleAbba <* (many alphaNum)
-preambleAbba = (try abba) <|> (alphaNum >> preambleAbba)
-
--- abba = 
---     do  a <- alphaNum
---         b <- alphaNum
---         if a == b then
---             fail "Identical"
---         else do char b
---                 char a
---                 return [a, b, b, a]
-
-abba = 
-    do  a <- alphaNum
-        b <- noneOf [a]
-        char b
-        char a
-        return [a, b, b, a]
-
---         where
--- Â  firstChar = satisfy (\a -> isLetter a || a == '_')
--- Â  nonFirstChar = satisfy (\a -> isDigit a || isLetter a || a == '_')
-
-   -- b <- bChar
--- where bChar = satisfy (\l -> lsLetter l && l /= a)
-
-
-
-i7filev = i7linev `endBy` newline
-i7linev = many1 (includeChunkv <|> excludeChunkv)
-
-excludeChunkv = Excludev <$> (between (char '[') (char ']') $ hasABBAv)
-includeChunkv = Includev <$> hasABBAv
-
-hasABBAv = 
-    (try (id True <$ preambleAbba <* (many alphaNum)))
-    <|>
-    (id False <$ (many1 alphaNum))
-
-
-parseI7f :: String -> Either ParseError [[Chunk]]
-parseI7f input = parse i7file "(unknown)" input
-
-parseI7 :: String -> Either ParseError [Chunk]
-parseI7 input = parse i7line "(unknown)" input
-
-parseAbba :: String -> Either ParseError String
-parseAbba input = parse hasABBA "(unknown)" input
-
-parseI7v :: String -> Either ParseError [ChunkV]
-parseI7v input = parse i7linev "(unknown)" input
-
-parseI7vf :: String -> Either ParseError [[ChunkV]]
-parseI7vf input = parse i7filev "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
-
-
-allSubstrings :: Int -> [a] -> [[a]]
--- allSubstrings n es 
---     | length es < n = []
---     | otherwise = (take n es) : (allSubstrings n $ tail es)
-allSubstrings n e = filter (\s -> length s == n) $ map (take n) $ tails e
-
-
-ieCandidates :: [Chunk] -> ([String], [String])
-ieCandidates chunks = (includeCandidates, excludeCandidates)
-    where (includeChunks, excludeChunks) = partition (isInclude) chunks
-          isABA s = (s!!0 == s!!2) && (s!!0 /= s!!1)
-          candidates = (filter (isABA)) . (foldl (union) []) . (map ((allSubstrings 3) . chunkValue))
-          includeCandidates = candidates includeChunks
-          excludeCandidates = candidates excludeChunks
-          
-inverseABA :: String -> String
-inverseABA s = [s!!1, s!!0, s!!1]
-
-supportsSSL :: [Chunk] -> Bool
-supportsSSL chunks = not $ null $ intersect abas eabas
-    where (abas, babs) = ieCandidates chunks
-          eabas = map (inverseABA) babs
diff --git a/adventofcode16/app/advent08.hs b/adventofcode16/app/advent08.hs
deleted file mode 100644 (file)
index ccf2de0..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-module Main(main) where
-
-import Data.Array.IArray
-import Text.Parsec
-import Control.Monad (liftM, ap)
-
--- Row 1 is top, column 1 is left
-type Position = (Int, Int)
-type Screen = Array Position Bool
-
-data Direction = Row | Column deriving (Show)
-data Command = Rect Int Int | Rotate Direction Int Int deriving (Show)
-
-data ScState a = ScState (Screen -> (Screen, a))
-
-mkScreen :: Int -> Int -> Screen
-mkScreen w h = array ((0, 0), (h - 1, w - 1))
-    [((i, j), False) | i <- [0..(h-1)], j <- [0..(w-1)]]
-
-showScreen :: Screen -> String
-showScreen screen = unlines [showRow r | r <- [minRow..maxRow]]
-    where ((minRow, minCol), (maxRow, maxCol)) = bounds screen
-          showCell True  = '*'
-          showCell False = ' '
-          showRow r = [showCell (screen!(r, c)) | c <- [minCol..maxCol]]
-
-countLights :: Screen -> Int
-countLights screen = length $ filter (id) $ elems screen
-
-screen0 :: Screen
-screen0 = mkScreen 50 6
-
-
-main :: IO ()
-main = do
-    text <- readFile "data/advent08.txt"
-    let instrs = successfulParse $ parseCommands text
-    part1 instrs
-    part2 instrs
-
-part1 :: [Command] -> IO ()
-part1 commands =
-    print $ countLights $ (extractScreen . doCommands) commands
-
-part2 :: [Command] -> IO ()
-part2 commands = 
-    putStrLn $ showScreen $ (extractScreen . doCommands) commands
-
-
-instance Functor ScState where
-  fmap = liftM
-
-instance Applicative ScState where
-  pure  = return
-  (<*>) = ap
-
-instance Monad ScState where
-    return x = ScState (\screen -> (screen, x))
-
-    (ScState st) >>= f
-        = ScState (\screen -> let
-                            (newScreen, y) = st screen
-                            (ScState transformer) = f y
-                            in
-                            transformer newScreen)
-
-doCommands :: [Command] -> ScState (Int)
-doCommands [] = return 0
-doCommands (i:is) = 
-    do doCommand i
-       doCommands is
-       return 0
-
-doCommand :: Command -> ScState Int
-doCommand i = ScState (execute i)
-
-execute :: Command -> (Screen -> (Screen, Int))
-execute (Rect w h) screen = (rect screen w h, 0)
-execute (Rotate Column c n) screen = (rotateColumn screen c n, 0)
-execute (Rotate Row r n) screen = (rotateRow screen r n, 0)
-
-extractScreen :: ScState Int -> Screen
-extractScreen (ScState st) = fst (st screen0)
-
-
-
-parseCommands :: String -> Either ParseError [Command]
-parseCommands input = parse commandFile "(unknown)" input
-
-commandFile = commandLine `endBy` newline
-commandLine = (try rectCommand) <|> rotateCommand
-
-rectCommand = 
-    do  string "rect"
-        spaces
-        w <- (many1 digit)
-        char 'x'
-        h <- (many1 digit)
-        return (Rect (read w) (read h))
-
-rotateCommand = 
-    do  string "rotate"
-        spaces
-        direction <- (string "row" <|> string "column")
-        spaces
-        string "x=" <|> string "y="
-        index <- (many1 digit)
-        spaces
-        string "by"
-        spaces
-        distance <- (many1 digit)
-        return (buildCommand direction index distance)
-
-buildCommand "row" i d = Rotate Row (read i) (read d)
-buildCommand "column" i d = Rotate Column (read i) (read d)
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
-
-
-
-
-rect :: Screen -> Int -> Int -> Screen
-rect screen w h = screen // newBits
-    where newBits = [((i, j), True) | i <- [0..(h-1)], j <- [0..(w-1)]]
-
-rotateColumn :: Screen -> Int -> Int -> Screen
-rotateColumn screen column givenShift = screen // newCells
-    where 
-        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
-        colLength = 1 + maxRow - minRow
-        shift = givenShift `mod` colLength
-        offset = colLength - shift
-        column0 = [screen!(r, column) | r <- [minRow..maxRow]]
-        newColumn = (drop offset column0) ++ (take offset column0)
-        newCells = [((r, column), cell) | (r, cell) <- zip [minRow..maxRow] newColumn]
-
-rotateRow :: Screen -> Int -> Int -> Screen
-rotateRow screen row givenShift = screen // newCells
-    where 
-        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
-        rowLength = 1 + maxCol - minCol
-        shift = givenShift `mod` rowLength
-        offset = rowLength - shift
-        row0 = [screen!(row, c) | c <- [minCol..maxCol]]
-        newRow = (drop offset row0) ++ (take offset row0)
-        newCells = [((row, c), cell) | (c, cell) <- zip [minCol..maxCol] newRow]
diff --git a/adventofcode16/app/advent09.hs b/adventofcode16/app/advent09.hs
deleted file mode 100644 (file)
index a3ce495..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-module Main(main) where
-
-import Data.List.Split (splitOn)
-import Data.Char (isSpace)
-
-type Chunk = (Int, String)
-
-main :: IO ()
-main = do 
-        textL <- readFile "data/advent09.txt" 
-        let text = filter (not . isSpace) textL
-        part1 text
-        part2 text
-
-part1 :: String -> IO ()
-part1 text = do 
-    print $ cLength $ decompress text
-
-part2 :: String -> IO ()
-part2 text = do 
-    print $ cLength $ decompress2 text
-
-
-decompress :: String -> [Chunk]
-decompress text = 
-    if not (null msuf) 
-        then (1, pre):(num, chunk):drest
-        else [(1, pre)]
-    where 
-        (pre, msuf) = span ('(' /= ) text
-        (marker, suf) = span (')' /= ) msuf
-        ln = splitOn "x" (tail marker)
-        len = read (ln!!0) :: Int
-        num = read (ln!!1) :: Int
-        (chunk, remainder) = splitAt len (tail suf)
-        drest = decompress remainder
-
-decompress2 :: String -> [Chunk]
-decompress2 text = 
-    if not (null msuf) 
-        then [(1, pre)] ++ mulDchunks ++ drest
-        else [(1, pre)]
-    where 
-        (pre, msuf) = span ('(' /= ) text
-        (marker, suf) = span (')' /= ) msuf
-        ln = splitOn "x" (tail marker)
-        len = read (ln!!0) :: Int
-        num = read (ln!!1) :: Int
-        (chunk, remainder) = splitAt len (tail suf)
-        dchunks = decompress2 chunk
-        mulDchunks = [(dl * num, ds) | (dl, ds) <- dchunks]
-        drest = decompress2 remainder
-
-cLength :: [Chunk] -> Int
-cLength = sum . map (clen)
-    where clen (n, t) = n * (length t)
-
diff --git a/adventofcode16/app/advent10.hs b/adventofcode16/app/advent10.hs
deleted file mode 100644 (file)
index 70e80e0..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-import Text.Parsec hiding (State)
-import Data.Text (pack, unpack, toTitle)
-import Control.Monad.State.Lazy
-import Data.List (partition, findIndices, sort, find)
-import Data.Maybe (fromJust)
-
-data Destination = Bot | Output deriving (Show, Read, Eq)
--- Rule bot low-destination high-destination
--- Gift bot value
-data Instruction = Rule { ruleId :: Int 
-                        , lowDestType :: Destination
-                        , lowDestId :: Int
-                        , highDestType :: Destination
-                        , highDestId :: Int
-                        } | 
-                   Gift { giftId :: Int
-                        , value :: Int 
-                        }
-                   deriving (Show)
-
--- bod id [item1, item2]
-data Place = Place { placeId :: Int
-                   , placeType :: Destination
-                   , items :: [Int]} 
-                   deriving (Show)
-
--- delivery by bot of low-value and high-value
-data Event = Delivery { deliveryId :: Int
-                      , lowDelivery :: Int
-                      , highDelivery :: Int
-                      } | 
-             Update { updateId :: Int
-                    , updateType :: Destination
-                    , updateItem :: Int
-                    } deriving (Show)
-
-type Factory = ([Place], [Instruction], [Event]) 
--- data FactorySt History = FactorySt (Factory -> (Factory, History))
-
-emptyFactory :: Factory
-emptyFactory = ([], [], [])
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent10.txt" 
-    let instructions = successfulParse $ parseIfile text
-    part1 instructions
-    part2 instructions
-
-
-part1 :: [Instruction] -> IO ()
-part1 instructions = 
-    do  let (_, _, events) = snd $  runState (runFactory instructions) emptyFactory
-        -- let (places, instructions, events) = snd finalFactory
-        print $ deliveryId $ fromJust $ findDelivery events 17 61
-
-part2 :: [Instruction] -> IO ()
-part2 instructions = 
-    do  let (places, _, _) = snd $  runState (runFactory instructions) emptyFactory
-        let outs = findOutputs places [0, 1, 2]
-        let product = foldl1 (*) $ concatMap (items) outs
-        print $ product
-
-
-findDelivery :: [Event] -> Int -> Int -> Maybe Event
-findDelivery events lowItem highItem = find (delivery) events
-    where delivery Update {} = False
-          delivery Delivery {deliveryId = bot, lowDelivery = l, highDelivery = h} 
-            | l == lowItem && h == highItem = True
-            | otherwise = False
-
-findOutputs :: [Place] -> [Int] -> [Place]
-findOutputs outputs ids = filter (interesting) outputs
-    where interesting Place {placeId = p, placeType = t, items = i}
-            | (p `elem` ids) && t == Output = True
-            | otherwise = False
-
-
-runFactory :: [Instruction] -> State Factory ()
-runFactory instructions = do
-    addInstructions instructions
-    runInstructions instructions
-
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = ruleL <|> giftL
-
-
-ruleL = 
-    do (string "bot" >> spaces)
-       bot <- many1 digit
-       (spaces >> string "gives low to" >> spaces)
-       lowDestType <- (string "output" <|> string "bot")
-       spaces
-       lowDest <- many1 digit
-       (spaces >> string "and high to" >> spaces)
-       highDestType <- (string "output" <|> string "bot")
-       spaces
-       highDest <- many1 digit
-       let rule = Rule (read bot)
-                   (read $ unpack $ toTitle $ pack lowDestType)
-                   (read lowDest)
-                   (read $ unpack $ toTitle $ pack highDestType)
-                   (read highDest)
-       return rule
-
-giftL = 
-    do (string "value" >> spaces)
-       value <- many1 digit
-       (spaces >> string "goes to bot" >> spaces)
-       bot <- many1 digit
-       let gift = Gift (read bot) (read value)
-       return gift
-
-
-parseIfile :: String -> Either ParseError [Instruction]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Instruction
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
-
-
-
-
-addInstructions :: [Instruction] -> State Factory ()
-addInstructions [] = return ()
-addInstructions (i:is) = do
-    addInstruction i
-    addInstructions is
-
-
-addInstruction :: Instruction -> State Factory ()
-addInstruction r@(Rule {lowDestType = ld, lowDestId = li,
-                     highDestType = hd, highDestId = hi}) = 
-    do (places, rules, history) <- get
-       put (places, r:rules, history)
-       addPlace (Place {placeType = ld, placeId = li, items = []})
-       addPlace (Place {placeType = hd, placeId = hi, items = []})
-addInstruction Gift {giftId = g} = 
-    do addPlace (Place {placeType = Bot, placeId = g, items = []})
-
-
-addPlace :: Place -> State Factory ()
-addPlace place = 
-    do  (places, rules, history) <- get
-        if not $ placeElem place places
-            then put ((place:places), rules, history)
-        else return ()
-
-
-runInstructions :: [Instruction] -> State Factory ()
-runInstructions [] = return ()
-runInstructions (i:is) = 
-    do  runInstruction i
-        runInstructions is
-
-
-runInstruction :: Instruction -> State Factory ()
-runInstruction Rule {} = return ()
-runInstruction g@(Gift {}) = 
-    do  updatePlace (giftId g) Bot (value g)
-        propogateUpdates
-
-updatePlace :: Int -> Destination -> Int -> State Factory ()
-updatePlace b d i = 
-    do  (places, instructions, events) <- get
-        let (place0s, otherPlaces) = partition (samePlace (Place {placeId = b, placeType = d, items = []})) places
-        let place = head place0s
-        let place' = place {items = i:(items place)}
-        let update = Update {updateId = b, updateType = d, updateItem = i}
-        put (place':otherPlaces, instructions, update:events)
-  
-
-propogateUpdates :: State Factory ()
-propogateUpdates = 
-    do  (places, instructions, events) <- get
-        let (fullBots, otherPlaces) = fullRobots places
-        if (not . null) fullBots
-            then do let fullBot = head fullBots
-                    let maybeRule = findRule instructions (placeId fullBot)
-                    case maybeRule of
-                        Nothing -> propogateUpdates
-                        Just rule -> do let small:large:_ = sort $ items fullBot
-                                        let emptyBot = fullBot {items = []}
-                                        let delivery = Delivery { deliveryId = placeId fullBot
-                                                                , lowDelivery = small
-                                                                , highDelivery = large
-                                                                }
-                                        put (emptyBot:(tail fullBots) ++ otherPlaces,
-                                             instructions, 
-                                             delivery:events)
-                                        updatePlace (lowDestId rule) (lowDestType rule) small
-                                        updatePlace (highDestId rule) (highDestType rule) large
-                                        propogateUpdates
-            else return ()
-
-
-placeElem :: Place -> [Place] -> Bool
-placeElem place places = (not . null) $ findIndices (samePlace place) places
-
-samePlace :: Place -> Place -> Bool
-samePlace p1 p2 = (placeId p1 == placeId p2) && (placeType p1 == placeType p2)
-
-fullRobots :: [Place] -> ([Place], [Place])
-fullRobots places = partition (\p -> placeType p == Bot && length (items p) >= 2) places
-
-findRule :: [Instruction] -> Int -> Maybe Instruction
-findRule instructions bot = find ruleForBot instructions
-    where ruleForBot Gift {} = False
-          ruleForBot Rule {ruleId = b}
-            | b == bot = True
-            | otherwise = False
diff --git a/adventofcode16/app/advent11.hs b/adventofcode16/app/advent11.hs
deleted file mode 100644 (file)
index 0286d77..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-module Main(main) where
-
-import Data.List (subsequences, (\\), sort, sortBy)
-import Data.Ord (comparing)
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
--- part1 = print $ length $ init $ extractJust $ hillClimb [[buildingTest]] []
-part1 = print $ length $ init $ extractJust $ hillClimb [[building1]] []
--- part1 = print $ length $ init $ extractJust $ aStar [[building1]] []
-
-part2 :: IO ()
-part2 = print $ length $ init $ extractJust $ hillClimb [[building2]] []
-
-
-extractJust :: Maybe [a] -> [a]
-extractJust Nothing = []
-extractJust (Just x) = x
-
-hillClimb :: [[Building]] -> [Building] -> Maybe [Building]
-hillClimb [] _ = Nothing
-hillClimb (currentTrail:trails) closed = 
-    if isGoal (head currentTrail) then Just currentTrail
-    else hillClimb newAgenda ((head currentTrail): closed) 
-    where newAgenda = 
-            sortBy (\t1 t2 -> (head t1) `compare` (head t2)) $ 
-            trails ++ (candidates currentTrail closed)
-
-aStar :: [[Building]] -> [Building] -> Maybe [Building]
-aStar [] _ = Nothing
-aStar (currentTrail:trails) closed = 
-    if isGoal (head currentTrail) then Just currentTrail
-    else aStar newAgenda ((head currentTrail): closed) 
-    where newAgenda = 
-            sortBy (\t1 t2 -> (trailCost t1) `compare` (trailCost t2)) $ 
-            trails ++ (candidates currentTrail closed)
-          trailCost t = estimateCost (head t) + length t - 1
-
-
-candidates :: [Building] -> [Building] -> [[Building]]
-candidates currentTrail closed = newCandidates
-    where
-        (candidate:trail) = currentTrail
-        succs = legalSuccessors $ successors candidate
-        nonloops = (succs \\ trail) \\ closed
-        newCandidates = map (\n -> n:candidate:trail) nonloops
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/adventofcode16/app/advent11a.hs b/adventofcode16/app/advent11a.hs
deleted file mode 100644 (file)
index c5349c8..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
--- Using the idea of canonical representation of buildings from
--- https://andars.github.io/aoc_day11.html by Andrew Foote,
--- plus my extension of represening the pairs as an integer.
-
--- This version is A* search, using a list for the agenda.
-
-module Main(main) where
-
-import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
-import Data.Ord (comparing)
-import Data.Char (isDigit)
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-data CBuilding = CBuilding Int Integer deriving (Show, Eq)
-data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building0 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-canonical :: Building -> CBuilding
-canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
-    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
-          floorOf (Generator g) = head (findIndices 
-                                                (\fl -> (Generator g) `elem` fl) 
-                                                floors)
-          floorOf (Microchip g) = head (findIndices 
-                                                (\fl -> (Microchip g) `elem` fl) 
-                                                floors)
-          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
-
-
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
-part1 = print $ length $ trail $ aStar (initAgenda building1) []
-
-part2 :: IO ()
-part2 = print $ length $ trail $aStar (initAgenda building2) []
-
-initAgenda :: Building -> [Agendum]
-initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
-
-
-aStar :: [Agendum] -> [CBuilding] -> Agendum
-aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
-aStar (currentAgendum:agenda) closed = 
-    if isGoal reached then currentAgendum
-    else if creached `elem` closed 
-        then aStar agenda closed
-        else aStar newAgenda (creached:closed) 
-    where 
-        reached = current currentAgendum
-        creached = canonical reached
-        newAgenda = 
-            sortOn (cost) $ 
-            agenda ++ (candidates currentAgendum closed)
-
-
-candidates :: Agendum -> [CBuilding] -> [Agendum]
-candidates agendum closed = newCandidates
-    where
-        candidate = current agendum
-        previous = trail agendum
-        succs = legalSuccessors $ successors candidate
-        excludable = previous ++ closed
-        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
-        newCandidates = map (\n -> makeAgendum n) nonloops
-        makeAgendum new = Agendum {current = new, 
-                                    trail = (canonical candidate):previous, 
-                                    cost = estimateCost new + length previous + 1}
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/adventofcode16/app/advent11h.hs b/adventofcode16/app/advent11h.hs
deleted file mode 100644 (file)
index d362ee8..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
--- Using the idea of canonical representation of buildings from
--- https://andars.github.io/aoc_day11.html by Andrew Foote,
--- plus my extension of represening the pairs as an integer.
-
--- This version is hillclimbing search, using a list for the agenda.
-module Main(main) where
-    
-import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
-import Data.Ord (comparing)
-import Data.Char (isDigit)
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-data CBuilding = CBuilding Int Integer deriving (Show, Eq)
-data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building0 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-canonical :: Building -> CBuilding
-canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
-    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
-          floorOf (Generator g) = head (findIndices 
-                                                (\fl -> (Generator g) `elem` fl) 
-                                                floors)
-          floorOf (Microchip g) = head (findIndices 
-                                                (\fl -> (Microchip g) `elem` fl) 
-                                                floors)
-          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
-
-
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
-part1 = print $ length $ trail $ hillClimb (initAgenda building1) []
-
-part2 :: IO ()
-part2 = print $ length $ trail $ hillClimb (initAgenda building2) []
-
-initAgenda :: Building -> [Agendum]
-initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
-
-hillClimb :: [Agendum] -> [CBuilding] -> Agendum
-hillClimb [] _ = Agendum {current=buildingTest, trail=[], cost=0}
-hillClimb (currentAgendum:agenda) closed = 
-    if isGoal reached then currentAgendum
-    else if creached `elem` closed 
-        then hillClimb agenda closed
-        else hillClimb newAgenda (creached:closed) 
-    where 
-        reached = current currentAgendum
-        creached = canonical reached
-        newAgenda = 
-            sortOn (cost) $ 
-            agenda ++ (candidates currentAgendum closed)
-
-
-candidates :: Agendum -> [CBuilding] -> [Agendum]
-candidates agendum closed = newCandidates
-    where
-        candidate = current agendum
-        previous = trail agendum
-        succs = legalSuccessors $ successors candidate
-        excludable = previous ++ closed
-        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
-        newCandidates = map (\n -> makeAgendum n) nonloops
-        makeAgendum new = Agendum {current = new, 
-                                    trail = (canonical candidate):previous, 
-                                    cost = estimateCost new}
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/adventofcode16/app/advent11p.hs b/adventofcode16/app/advent11p.hs
deleted file mode 100644 (file)
index 4136e8f..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
--- Using the idea of canonical representation of buildings from
--- https://andars.github.io/aoc_day11.html by Andrew Foote,
--- plus my extension of represening the pairs as an integer.
-
--- This version is A* search, using a priority queue for the agenda.
-
-module Main(main) where
-
-import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
-import Data.Ord (comparing)
-import Data.Char (isDigit)
-import Data.Maybe (fromMaybe)
-import qualified Data.PQueue.Prio.Min as P
-
-data Item = Generator String | Microchip String deriving (Show, Eq)
-type Floor = [Item]
-data Building = Building Int [Floor] deriving (Show, Eq)
-data CBuilding = CBuilding Int Integer deriving (Show, Eq)
-data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
-type Agenda = P.MinPQueue Int Agendum
-
-instance Ord Item where
-    compare (Generator a) (Generator b) = compare a b
-    compare (Microchip a) (Microchip b) = compare a b
-    compare (Generator _) (Microchip _) = LT
-    compare (Microchip _) (Generator _) = GT
-
-instance Ord Building where
-    compare b1 b2 = comparing estimateCost b1 b2
-
-building1 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building0 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-building2 = Building 0 [
-    (sort [Generator "polonium", Generator "thulium", 
-     Microchip "thulium", Generator "promethium", Generator "ruthenium",
-     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
-     Generator "elerium", Microchip "elerium",
-     Generator "dilithium", Microchip "dilithium"]),
-    (sort [Microchip "polonium", Microchip "promethium"]),
-    [],
-    []
-    ]
-
-
-buildingTest = Building 0 [
-    sort([Microchip "hydrogen", Microchip "lithium"]),
-    [Generator "hydrogen"],
-    [Generator "lithium"],
-    []]
-
-canonical :: Building -> CBuilding
-canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
-    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
-          floorOf (Generator g) = head (findIndices 
-                                                (\fl -> (Generator g) `elem` fl) 
-                                                floors)
-          floorOf (Microchip g) = head (findIndices 
-                                                (\fl -> (Microchip g) `elem` fl) 
-                                                floors)
-          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
-
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-part1 :: IO ()
-part1 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building1) []
-
-part2 :: IO ()
-part2 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building2) []
-
-initAgenda :: Building -> Agenda
-initAgenda b = P.singleton (estimateCost b) Agendum {current = b, trail=[], cost = estimateCost b}
-
-
-aStar :: Agenda -> [CBuilding] -> Maybe Agendum
--- aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
-aStar agenda closed 
-    | P.null agenda = Nothing
-    | otherwise = 
-        if isGoal reached then Just currentAgendum
-        else if creached `elem` closed 
-            then aStar (P.deleteMin agenda) closed
-            else aStar newAgenda (creached:closed) 
-        where 
-            (_, currentAgendum) = P.findMin agenda
-            reached = current currentAgendum
-            creached = canonical reached
-            newAgenda = P.union (P.deleteMin agenda) 
-                                (P.fromList $ candidates currentAgendum closed)
-
-
-candidates :: Agendum -> [CBuilding] -> [(Int, Agendum)]
-candidates agendum closed = newCandidates
-    where
-        candidate = current agendum
-        previous = trail agendum
-        succs = legalSuccessors $ successors candidate
-        nonloops = filter (\s -> not $ (canonical s) `elem` closed) succs
-        newCandidates = map (\a -> (cost a, a)) $ map (\n -> makeAgendum n) nonloops
-        makeAgendum new = Agendum {current = new, 
-                                    trail = (canonical candidate):previous, 
-                                    cost = estimateCost new + length previous + 1}
-
-isGoal :: Building -> Bool
-isGoal (Building f floors) =
-    f+1 == height && (all (null) $ take f floors)
-    where height = length floors
-
-isLegal :: Building -> Bool
-isLegal (Building f floors) = 
-    null floor 
-    ||
-    not (any (isGenerator) floor)
-    ||
-    any (safePair) pairs
-    where floor = floors!!f
-          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
-          safePair (Generator e, Microchip f) = e == f
-          safePair (Generator _, Generator _) = False
-
-isGenerator :: Item -> Bool
-isGenerator (Generator _) = True
-isGenerator (Microchip _) = False
-
-successors :: Building -> [Building]
-successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
-    where 
-        floor = floors!!f
-        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
-        nextFloors = if f == 0 then [1]
-                     else if f+1 == length floors then [f-1]
-                     else [f+1, f-1]
-
-legalSuccessors :: [Building] -> [Building]
-legalSuccessors = filter (isLegal)
-
-updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
-updateBuilding oldF oldFloors newF items = Building newF newFloors
-    where newFloors = map (updateFloor) $ zip [0..] oldFloors
-          updateFloor (f, fl) 
-            | f == oldF = sort $ fl \\ items
-            | f == newF = sort $ items ++ fl
-            | otherwise = fl
-
-estimateCost :: Building -> Int
-estimateCost (Building _ floors) = 
-    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
-
diff --git a/adventofcode16/app/advent12.hs b/adventofcode16/app/advent12.hs
deleted file mode 100644 (file)
index 906c185..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-module Main(main) where
-
-import Text.Parsec hiding (State)
-import Text.ParserCombinators.Parsec.Number
-import Data.List (partition, union, intersect, tails)
-import Data.Char (isDigit)
-import Control.Monad.State.Lazy
-
-data Location = Literal Int | Register Char deriving (Show)
-data Instruction = Cpy Location Location | 
-                   Inc Location |
-                   Dec Location | 
-                   Jnz Location Int
-                   deriving (Show)
-
-data Machine = Machine { a :: Int
-                       , b :: Int
-                       , c :: Int
-                       , d :: Int
-                       , pc :: Int
-                       , instructions :: [Instruction]} 
-               deriving (Show)
-
-emptyMachine :: Machine
-emptyMachine = Machine {a=0, b=0, c=0, d=0, pc=0, instructions=[]}
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent12.txt" 
-    let instructions = successfulParse $ parseIfile text
-    part1 instructions
-    part2 instructions
-
-
-part1 :: [Instruction] -> IO ()
-part1 instrs = 
-    do  let m0 = emptyMachine {instructions=instrs}
-        let mf = snd $ runState runMachine m0
-        print (a mf)
-
-part2 :: [Instruction] -> IO ()
-part2 instrs = 
-    do  let m0 = emptyMachine {instructions=instrs, c=1}
-        let mf = snd $ runState runMachine m0
-        print (a mf)
-
-
-
-runMachine :: State Machine ()
-runMachine = 
-    do  m <- get
-        if (pc m) >= (length $ instructions m)
-            then return ()
-            else do executeStep
-                    runMachine
-
-executeStep :: State Machine ()
-executeStep = 
-    do  m <- get
-        let i = (instructions m)!!(pc m)
-        put (executeInstruction i m)
-
-executeInstruction :: Instruction -> Machine -> Machine
-executeInstruction (Inc (Register r)) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m (Register r)
-          m' = writeValue m (Register r) (v+1)
-executeInstruction (Dec (Register r)) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m (Register r)
-          m' = writeValue m (Register r) (v-1)
-executeInstruction (Cpy s d) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m s
-          m' = writeValue m d v
-executeInstruction (Jnz s d) m 
-    | v == 0 = m {pc=pc1}
-    | otherwise = m {pc=pcj}
-    where pc1 = (pc m) + 1
-          pcj = (pc m) + d
-          v = evaluate m s
-          
-
-evaluate :: Machine -> Location -> Int
-evaluate _ (Literal i) = i
-evaluate m (Register r) = 
-    case r of
-        'a' -> (a m)
-        'b' -> (b m)
-        'c' -> (c m)
-        'd' -> (d m)
-
-writeValue :: Machine -> Location -> Int -> Machine
-writeValue m (Literal i) _ = m
-writeValue m (Register r) v =
-    case r of 
-        'a' -> m {a=v}
-        'b' -> m {b=v}
-        'c' -> m {c=v}
-        'd' -> m {d=v}
-
-
-instructionFile = instructionLine `endBy` newline 
--- instructionLine = choice [cpyL, incL, decL, jnzL]
-instructionLine = incL <|> decL <|> cpyL <|> jnzL
-
-incL = incify <$> (string "inc" *> spaces *> (oneOf "abcd"))
-        where incify r = Inc (Register r)
-decL = decify <$> (string "dec" *> spaces *> (oneOf "abcd"))
-        where decify r = Dec (Register r)
-cpyL = cpyify <$> (string "cpy" *> spaces *> ((many1 letter) <|> (many1 digit))) 
-                  <*> (spaces *> (oneOf "abcd"))
-        where cpyify s r = Cpy (readLocation s) (Register r)
-jnzL = jnzify <$> (string "jnz" *> spaces *> ((many1 letter) <|> (many1 digit))) 
-                  <*> (spaces *> int)
-        where jnzify r d = Jnz (readLocation r) d
-
-
-readLocation :: String -> Location
-readLocation l
-    | all (isDigit) l = Literal (read l)
-    | otherwise = Register (head l)
-
-
-
-parseIfile :: String -> Either ParseError [Instruction]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Instruction
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
\ No newline at end of file
diff --git a/adventofcode16/app/advent13.hs b/adventofcode16/app/advent13.hs
deleted file mode 100644 (file)
index 86981df..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-module Main(main) where
-
-import Data.List ((\\), nub, sortOn)
-import Data.Bits (popCount)
-import Data.Maybe (fromMaybe)
-
-type Pos = (Int, Int)
-
-seed = 1362
-
-goal1 = (31, 39)
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-
-part1 :: IO ()
-part1 = print $ length $ tail $ fromMaybe [] $ aStar [[(1, 1)]] []
-
-part2 :: IO ()
-part2 = do print $ length $ tail $ edl 50 [[(1, 1)]] []
-           putStrLn $ showRoomR 30 25 $ edl 50 [[(1, 1)]] []
-
-
--- extractJust :: Maybe [a] -> [a]
--- extractJust Nothing = []
--- extractJust (Just x) = x
-isWall :: Int -> Int -> Bool
-isWall x y = odd $ popCount n
-    where 
-        n = x*x + 3*x + 2*x*y + y + y*y + seed
-
-
-showRoom w h = showRoomR w h []
-
-showRoomR w h reached = unlines rows
-    where 
-        rows = [row x | x <- [0..h]]
-        row x = [showCell x y | y <- [0..w]]
-        showCell x y = if (isWall x y) 
-            then '#' 
-            else if (x, y) `elem` reached 
-                then 'O'
-                else '.'
-
-
-aStar :: [[Pos]] -> [Pos] -> Maybe [Pos]
-aStar [] _ = Nothing
-aStar (currentTrail:trails) closed = 
-    if isGoal (head currentTrail) then Just currentTrail
-    else if (head currentTrail) `elem` closed then aStar trails closed
-         else aStar newAgenda ((head currentTrail): closed) 
-    where newAgenda = 
-            sortOn (\a -> trailCost a) $ 
-            trails ++ (candidates currentTrail closed)
-          trailCost t = estimateCost (head t) + length t - 1
-
-
--- exhaustive depth-limited
-edl :: Int -> [[Pos]] -> [Pos] -> [Pos]
-edl _ [] closed = nub closed
-edl limit (currentTrail:trails) closed = 
-    if (length currentTrail) > (limit+1) then edl limit trails ((head currentTrail):closed)
-    else if (head currentTrail) `elem` closed then edl limit trails closed
-         else edl limit newAgenda ((head currentTrail):closed) 
-    where newAgenda = trails ++ (candidates currentTrail closed)
-
-candidates :: [Pos] -> [Pos] -> [[Pos]]
-candidates currentTrail closed = newCandidates
-    where
-        (candidate:trail) = currentTrail
-        succs = legalSuccessors $ successors candidate
-        nonloops = (succs \\ trail) \\ closed
-        newCandidates = map (\n -> n:candidate:trail) nonloops
-
-isGoal :: Pos -> Bool
-isGoal p = p == goal1
-
-isLegal :: Pos -> Bool
-isLegal (x, y) = 
-    x >= 0 && y >= 0 && (not $ isWall x y)
-
-successors :: Pos -> [Pos]
-successors (x, y) = [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]
-
-legalSuccessors :: [Pos] -> [Pos]
-legalSuccessors = filter (isLegal)
-
-estimateCost :: Pos -> Int
-estimateCost (x, y) = abs (x - gx) + abs (y - gy)
-    where (gx, gy) = goal1
-
diff --git a/adventofcode16/app/advent14.hs b/adventofcode16/app/advent14.hs
deleted file mode 100644 (file)
index c6c092e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-module Main(main) where
-
-import Data.List (nub, tails, null)
-import Data.Hash.MD5 (md5s, Str(..))
-
-salt = "yjdafjpo"
--- salt = "abc"
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequence
-
-part2 :: IO ()
-part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequenceS
-
-md5sequence :: [String]
-md5sequence = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = md5s (Str (salt ++ show i))
-
-md5sequenceS :: [String]
-md5sequenceS = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = stretch $ md5s (Str (salt ++ show i)) 
-          stretch h0 = foldr (\_ h -> md5s (Str h)) h0 [1..2016]
-
-possibleKey :: [String] -> Int-> Bool
-possibleKey s = not . null . repeats 3 . ((!!) s)
-
-confirmKey :: [String] -> Int -> Bool
-confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
-    where c = head $ repeats 3 $ s!!i
-          confirmation m = c `elem` (repeats 5 m)
-
-repeats :: Int -> String -> [String]
-repeats n = filter (null . tail) . map (nub) . substrings n
-
-substrings :: Int -> [a] -> [[a]]
-substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/adventofcode16/app/advent14c.hs b/adventofcode16/app/advent14c.hs
deleted file mode 100644 (file)
index ea699ed..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-module Main(main) where
-
-import Data.List (nub, tails)
-import Data.ByteString.Char8 (pack)
-import Crypto.Hash (hash, Digest, MD5)
-
-salt = "yjdafjpo"
--- salt = "abc"
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequence
-
-part2 :: IO ()
-part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequenceS
-
-getHash :: String -> String
-getHash bs = show (hash $ pack bs :: Digest MD5)
-
-md5sequence :: [String]
-md5sequence = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = getHash (salt ++ show i)
-
-md5sequenceS :: [String]
-md5sequenceS = [makeMd5 i | i <- [0..]]
-    where makeMd5 i = stretch $ getHash (salt ++ show i)
-          stretch h0 = foldr (\_ h -> getHash h) h0 [1..2016]
-
-possibleKey :: [String] -> Int-> Bool
-possibleKey s = not . null . repeats 3 . ((!!) s)
-
-confirmKey :: [String] -> Int -> Bool
-confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
-    where c = head $ repeats 3 $ s!!i
-          confirmation m = c `elem` (repeats 5 m)
-                              
-repeats :: Int -> String -> [String]
-repeats n = filter (null . tail) . map (nub) . substrings n
-
-substrings :: Int -> [a] -> [[a]]
-substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/adventofcode16/app/advent14parallel.hs b/adventofcode16/app/advent14parallel.hs
deleted file mode 100644 (file)
index b0ca781..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-module Main(main) where
-
-import Data.List (nub, tails)
-import Data.ByteString.Char8 (pack)
-import Crypto.Hash (hash, Digest, MD5)
-import Control.Parallel.Strategies (withStrategy, parBuffer, rdeepseq)
-
-salt = "yjdafjpo"
--- salt = "abc"
-
-stretch_factor = [1..2016]
--- stretch_factor = [1..100]
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequence
-
-part2 :: IO ()
-part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
-    where sq = md5sequenceS
-
-getHash :: String -> String
-getHash bs = show (hash $ pack bs :: Digest MD5)
-
-md5sequence :: [String]
--- md5sequence = [makeMd5 i | i <- [0..]]
-md5sequence = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
-    where makeMd5 i = getHash (salt ++ show i)
-
-md5sequenceS :: [String]
--- md5sequenceS = [makeMd5 i | i <- [0..]]
-md5sequenceS = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
-    where makeMd5 i = stretch $ getHash (salt ++ show i)
-          stretch h0 = foldr (\_ h -> getHash h) h0 stretch_factor
-
-possibleKey :: [String] -> Int-> Bool
-possibleKey s = not . null . repeats 3 . ((!!) s)
-
-confirmKey :: [String] -> Int -> Bool
-confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
-    where c = head $ repeats 3 $ s!!i
-          confirmation m = c `elem` (repeats 5 m)
-                              
-repeats :: Int -> String -> [String]
-repeats n = filter (null . tail) . map (nub) . substrings n
-
-substrings :: Int -> [a] -> [[a]]
-substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/adventofcode16/app/advent15.hs b/adventofcode16/app/advent15.hs
deleted file mode 100644 (file)
index 5970bd6..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-module Main(main) where
-
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-
-type Disk = (Int -> Bool)
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent15.txt" 
-    let disks = successfulParse $ parseIfile text
-    part1 disks
-    part2 disks
-
-part1 :: [Disk] -> IO ()
-part1 disks = print $ head $ filter (canFall disks) [0..]
-
-part2 :: [Disk] -> IO ()
-part2 disks = print $ head $ filter (canFall disks2) [0..]
-    where disks2 = disks ++ [diskify 7 11 0]
-
-canFall :: [Disk] -> Int -> Bool
-canFall ds i = all (\d -> (d i)) ds
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = diskify <$> (string "Disc #" *> int) 
-                          <*> (string " has " *> int)
-                          <*> (string " positions; at time=0, it is at position " *> int)
-                          <*  (string ".")
-
-diskify :: Int -> Int -> Int -> (Int -> Bool)
-diskify n size pos0 = (\i -> (size + n + pos0 + i) `mod` size == 0)
-
-parseIfile :: String -> Either ParseError [Disk]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Disk
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent15l.hs b/adventofcode16/app/advent15l.hs
deleted file mode 100644 (file)
index 67e2ac0..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-module Main(main) where
-
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent15.txt" 
-    let disks = successfulParse $ parseIfile text
-    part1 disks
-    part2 disks
-
-part1 :: [[Int]] -> IO ()
-part1 disks = print $ head $ filter (canFall disks) [0..]
-
-part2 :: [[Int]] -> IO ()
-part2 disks = print $ head $ filter (canFall disks2) [0..]
-    where disks2 = disks ++ [drop 7 $ drop 0 $ cycle [0..(11-1)]]
-
-canFall :: [[Int]] -> Int -> Bool
-canFall ds i = all (\d -> (d!!i) == 0) ds
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = diskify <$> (string "Disc #" *> int) 
-                          <*> (string " has " *> int)
-                          <*> (string " positions; at time=0, it is at position " *> int)
-                          <*  (string ".")
-                    where diskify n size pos0 = drop n $ drop pos0 $ cycle [0..(size-1)]
-
-parseIfile :: String -> Either ParseError [[Int]]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError [Int]
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent16.hs b/adventofcode16/app/advent16.hs
deleted file mode 100644 (file)
index 88b8b59..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-module Main(main) where
-
-import Data.List (nub)
-
-input = "11100010111110100"
-disk1length = 272
-disk2length = 35651584
-
--- input = "10000"
--- disk1length = 20
-
-main :: IO ()
-main = do 
-    part1 
-    part2
-
-part1 :: IO ()
-part1 = putStrLn $ checksum $ take disk1length $ expand disk1length input
-
-part2 :: IO ()
-part2 = putStrLn $ checksum $ take disk2length $ expand disk2length input
-
-
-expand :: Int -> String -> String
-expand len a
-    | length a >= len = a
-    | otherwise = expand len $ a ++ "0" ++ b
-        where b = map (invert) $ reverse a
-              invert '0' = '1'
-              invert '1' = '0'
-
-checksum :: String -> String
-checksum digits
-    | odd $ length digits = digits
-    | otherwise = checksum $ map (checksumPair) $ pairs digits
-        where checksumPair p = if (length $ nub p) == 1 then '1' else '0'
-
-
-pairs :: [a] -> [[a]]
-pairs [] = []
-pairs xs = [p] ++ (pairs ys)
-    where (p, ys) = splitAt 2 xs 
diff --git a/adventofcode16/app/advent16i.hs b/adventofcode16/app/advent16i.hs
deleted file mode 100644 (file)
index 897559d..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-module Main(main) where
-
-input = "11100010111110100"
-disk1length = 272
-disk2length = 35651584
-
--- input = "10000"
--- disk1length = 20
-
-main :: IO ()
-main = do 
-    part1 
-    part2
-
-part1 :: IO ()
-part1 = print $ fill disk1length input
-
-part2 :: IO ()
-part2 = print $ fill disk2length input
-
-fill :: Int -> String -> String
-fill len filler = deBool $ checksum $ take len $ expand len $ enBool filler
-
-enBool :: String -> [Bool]
-enBool = map (== '1')
-
-deBool :: [Bool] -> String
-deBool = map (\b -> if b then '1' else '0')
-
-
-expand :: Int -> [Bool] -> [Bool]
-expand len = head . dropWhile ((<= len) . length) . iterate expandStep
-
-expandStep :: [Bool] -> [Bool]
-expandStep a = a ++ [False] ++ b
-        where b = map (not) $ reverse a
-
-checksum :: [Bool] -> [Bool]
-checksum = head . dropWhile (even . length) . iterate checksumStep 
-
-checksumStep :: [Bool] -> [Bool]
-checksumStep [] = []
-checksumStep [x] = [x]
-checksumStep (x:y:xs) = (x==y):(checksumStep xs)
-
diff --git a/adventofcode16/app/advent17.hs b/adventofcode16/app/advent17.hs
deleted file mode 100644 (file)
index e757def..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-module Main(main) where
-
-import Data.ByteString.Char8 (pack)
-import qualified Crypto.Hash as C
-
-type Position = (Int, Int)
-data Agendum = Agendum {position :: Position, path :: String, hash :: String} deriving (Show, Eq)
-type Agenda = [Agendum]
-
--- input = "hijkl"
--- input = "ihgpwlah"
-
-input = "qljzarfv" -- my input
-
-main :: IO ()
-main = do 
-    part1 
-    part2 
-
-part1 :: IO ()
-part1 = putStrLn $ path $ extractJust $ bfs initialAgenda
-
-part2 :: IO ()
-part2 = print $ bfs2 initialAgenda 0
-
-initialAgenda :: Agenda
-initialAgenda = [Agendum {position=(1, 1), path="", hash=(getHash "")}]
-
-getHash :: String -> String
-getHash path = show (C.hash $ pack (input ++ path) :: C.Digest C.MD5)
-
-extractJust :: Maybe Agendum -> Agendum
-extractJust Nothing = head initialAgenda
-extractJust (Just x) = x
-
-bfs :: Agenda -> Maybe Agendum
-bfs [] = Nothing
-bfs (current:agenda) = 
-    if isGoal current then Just current
-    else bfs (agenda ++ (successors current))
-
-bfs2 :: Agenda -> Int -> Int
-bfs2 [] l = l
-bfs2 (current:agenda) l = 
-    if isGoal current then bfs2 agenda (length $ path $ current)
-    else bfs2 (agenda ++ (successors current)) l
-
-isGoal :: Agendum -> Bool
-isGoal agendum = (position agendum) == (4, 4)
-
-isLegalPos :: Position -> Bool
-isLegalPos p = fst p >= 1 && fst p <= 4 && snd p >= 1 && snd p <= 4
-
-successors :: Agendum -> Agenda
-successors state = [Agendum {position = step p0 ld, 
-                             path = path0 ++ [ld],
-                             hash = getHash (path0 ++ [ld])} | ld <- legalDoors ]
-    where 
-        p0 = position state
-        path0 = path state
-        h0 = hash state
-        doors = openDoors h0
-        legalDoors = filter (isLegalPos . (step p0)) doors
-
-openDoors :: String -> String
-openDoors h = up ++ down ++ left ++ right
-    where
-        up    = if h!!0 `elem` "bcdef" then "U" else ""
-        down  = if h!!1 `elem` "bcdef" then "D" else ""
-        left  = if h!!2 `elem` "bcdef" then "L" else ""
-        right = if h!!3 `elem` "bcdef" then "R" else ""
-
-step :: Position -> Char -> Position
-step (r, c) 'U' = (r-1, c)
-step (r, c) 'D' = (r+1, c)
-step (r, c) 'L' = (r, c-1)
-step (r, c) 'R' = (r, c+1)
diff --git a/adventofcode16/app/advent18.hs b/adventofcode16/app/advent18.hs
deleted file mode 100644 (file)
index 2b1462f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-module Main(main) where
-
-import Data.List (tails)
-
--- input = "..^^."
--- input = ".^^.^.^^^^"
-input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
--- part1 = putStrLn $ unlines $ map (showRow) $ take 10 $ iterate nextRow $ readRow input
-part1 = print $ length $ filter (not) $ concat $ take 40 $ iterate nextRow $ readRow input
-
-part2 :: IO ()
-part2 = print $ length $ filter (not) $ concat $ take 400000 $ iterate nextRow $ readRow input
-
-readRow :: String -> [Bool]
-readRow = map (=='^')
-
-showRow :: [Bool] -> String
-showRow = map (\c -> if c then '^' else '.')
-
-extended :: [Bool] -> [Bool]
-extended row = [False] ++ row ++ [False]
-
-nextRow :: [Bool] -> [Bool]
-nextRow = map (isTrap) . segments . extended
-
-segments :: [a] -> [[a]]
-segments = filter ((==3) . length) . map (take 3) . tails
-
-isTrap :: [Bool] -> Bool
-isTrap segment
-    | segment == [True, True, False] = True
-    | segment == [False, True, True] = True
-    | segment == [True, False, False] = True
-    | segment == [False, False, True] = True
-    | otherwise = False
diff --git a/adventofcode16/app/advent18f.hs b/adventofcode16/app/advent18f.hs
deleted file mode 100644 (file)
index d1650e6..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-module Main(main) where
-
-import Data.List (tails, foldl')
-
--- input = "..^^."
--- input = ".^^.^.^^^^"
-input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
-
-main :: IO ()
-main = do 
-        part1 
-        part2
-
-part1 :: IO ()
-part1 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..40]
-    where row = readRow input
-
-part2 :: IO ()
-part2 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..400000]
-    where row = readRow input
-
-readRow :: String -> [Bool]
-readRow = map (=='^')
-
-showRow :: [Bool] -> String
-showRow = map (\c -> if c then '^' else '.')
-
-extended :: [Bool] -> [Bool]
-extended row = [False] ++ row ++ [False]
-
-nextRow :: [Bool] -> [Bool]
-nextRow = map (isTrap) . segments . extended
-
-nextRowFold :: (Int, [Bool]) -> Int -> (Int, [Bool])
-nextRowFold (n, row) _ = (n + countSafe newRow, newRow)
-    where newRow = nextRow row
-
-countSafe :: [Bool] -> Int
-countSafe = length . filter (not)
-
-segments :: [a] -> [[a]]
-segments = filter ((==3) . length) . map (take 3) . tails
-
-isTrap :: [Bool] -> Bool
-isTrap segment
-    | segment == [True, True, False] = True
-    | segment == [False, True, True] = True
-    | segment == [True, False, False] = True
-    | segment == [False, False, True] = True
-    | otherwise = False
diff --git a/adventofcode16/app/advent19.hs b/adventofcode16/app/advent19.hs
deleted file mode 100644 (file)
index 009a07c..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-module Main(main) where
-
-import Prelude hiding (length, take, drop)
-import Data.Sequence
-
--- input = 5 
-input = 3012210 
-
-main :: IO ()
-main = do 
-    part1 
-    part2
-
-part1 :: IO ()
-part1 = print $ 2 * (input - 2 ^ (toInteger (floor $ logBase 2 (fromIntegral input)))) + 1
-
-part2 :: IO ()
-part2 = print $ flip index 0 $ presentSteps initial
-
-presentSteps :: Seq Int -> Seq Int
-presentSteps elves 
-    | isFinished elves = elves
-    | otherwise = presentSteps $ next elves
-
-initial :: Seq Int
-initial = fromList [1..input] 
-
-isFinished :: Seq Int -> Bool
-isFinished elves = length elves == 1
-
-next :: Seq Int -> Seq Int
-next elves = prefix >< (midfix |> suffix)
-    where 
-        target = length elves `quot` 2
-        prefix = drop 1 $ take target elves
-        midfix = drop (target+1) elves
-        suffix = index elves 0
diff --git a/adventofcode16/app/advent20.hs b/adventofcode16/app/advent20.hs
deleted file mode 100644 (file)
index 8830c45..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-module Main(main) where
-
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-import Data.List (foldl')
-
-data Interval = Interval Int Int deriving (Show, Eq)
-
-low :: Interval -> Int
-low (Interval l _) = l
-
-high :: Interval -> Int
-high (Interval _ h) = h
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent20.txt" 
-    let intervals = successfulParse $ parseIfile text
-    part1 intervals
-    part2 intervals
-
-part1 :: [Interval] -> IO ()
-part1 intervals = print $ (+1) $ high $ head $ foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
-
-part2 :: [Interval] -> IO ()
-part2 intervals = do
-    let ints = foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
-    let gapCount = gaps ints
-    let lowGap = low $ head ints
-    let highGap = 4294967295 - (high $ last ints)
-    print (lowGap + gapCount + highGap)
-
-disjoint :: Interval -> Interval -> Bool
-disjoint (Interval a b) (Interval c d)
-    | b < c = True
-    | d < a = True
-    | a > d = True
-    | c > b = True
-    | otherwise = False
-
-intersect :: Interval -> Interval -> Bool
-intersect a b = not $ disjoint a b
-
-merge :: [Interval] -> Interval -> [Interval]
-merge [] i0 = [i0]
-merge (i1:intervals) i0
-    | (high i0) < (low i1) = i0:i1:intervals
-    | intersect i0 i1 = merge intervals (Interval a' b')
-    | otherwise = i1:(merge intervals i0)
-        where a' = minimum [low i0, low i1]
-              b' = maximum [high i0, high i1]
-
-mergeAdjacent :: [Interval] -> Interval -> [Interval]
-mergeAdjacent [] i0 = [i0]
-mergeAdjacent (i1:intervals) i0
-    | high i0 + 1 == low i1 = (Interval (low i0) (high i1)):intervals
-    | low i0 == high i1 + 1 = (Interval (low i1) (high i0)):intervals
-    | otherwise = i1:(mergeAdjacent intervals i0)
-
-gaps :: [Interval] -> Int
-gaps [] = 0
-gaps [_] = 0
-gaps ((Interval _ b):(Interval c d):intervals) = 
-    (c - b - 1) + gaps ((Interval c d):intervals)
-
-intervalFile = intervalLine `endBy` newline 
-intervalLine = Interval <$> int <*> (string "-" *> int)
-
-parseIfile :: String -> Either ParseError [Interval]
-parseIfile input = parse intervalFile "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent21.hs b/adventofcode16/app/advent21.hs
deleted file mode 100644 (file)
index 2415974..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-module Main(main) where
-
-import Text.Parsec hiding (State)
-import Text.ParserCombinators.Parsec.Number
-import Data.Maybe (fromJust)
-import Data.List (elemIndex)
-
-import Control.Monad.Identity
-import Control.Monad.State
-import Control.Monad.Writer
-
-data Instruction =    SwapPosition Int Int 
-                    | SwapLetter Char Char
-                    | RotateSteps Int
-                    | RotateLetter Char
-                    | Reverse Int Int
-                    | Move Int Int 
-                    deriving (Show, Eq)
-
-data Log = Log {
-    action :: String
-    } deriving (Show)
-
-data Password = Password {
-    password :: String
-    } deriving (Show)
-
-
-type App = WriterT [Log] (StateT Password Identity)
-
-infixl 9 ??
-
-(??) :: Eq a => [a] -> a -> Int
-(??) items item = fromJust $ elemIndex item items
-
-
-initial = "abcdefgh"
-final   = "fbgdceah"
-
-testInstructions = "\
-\swap position 4 with position 0\n\
-\swap letter d with letter b\n\
-\reverse positions 0 through 4\n\
-\rotate left 1 step\n\
-\move position 1 to position 4\n\
-\move position 3 to position 0\n\
-\rotate based on position of letter b\n\
-\rotate based on position of letter d\n"
-
-main :: IO ()
-main = do 
-    -- let ti = successfulParse $ parseIfile testInstructions
-    -- part1 ti "abcde"
-    -- part2 (reverse ti) "decab"
-    text <- readFile "data/advent21.txt" 
-    let instructions = successfulParse $ parseIfile text
-    part1 instructions initial
-    part2 (reverse instructions) final
-
-part1 :: [Instruction] -> String -> IO ()
-part1 instructions start = 
-    let st = Password {password = start}
-        ((_, log), st') = runIdentity (runStateT (runWriterT (apply instructions)) st)
-    in do 
-        -- putStrLn $ unlines $ map (action) log
-        putStrLn $ password st'
-
-part2 :: [Instruction] -> String -> IO ()
-part2 instructions end = 
-    let st = Password {password = end}
-        ((_, log), st') = runIdentity (runStateT (runWriterT (unApply instructions)) st)
-    in do 
-        -- putStrLn $ unlines $ map (action) log
-        putStrLn $ password st'
-
-
-apply :: [Instruction] -> App ()
-apply [] = return ()
-apply (i:is) = 
-    do  st <- get
-        let p0 = password st
-        let p1 = applyInstruction i p0
-        put st {password = p1}
-        tell [Log (p0 ++ " -> " ++ p1 ++ " : " ++ (show i))]
-        apply is
-
-
-applyInstruction :: Instruction -> String -> String
-applyInstruction (SwapPosition from to) p0 
-    | from == to = p0
-    | otherwise = prefix ++ [p0!!end] ++ midfix ++ [p0!!start] ++ suffix
-        where start = minimum [from, to]
-              end = maximum [from, to]
-              prefix = take start p0
-              midfix = take (end-start-1) $ drop (start+1) p0
-              suffix = drop (end+1) p0
-
-applyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapPosition (p0??l0) (p0??l1)) p0
-
-applyInstruction (RotateSteps n) p0 = (drop n' p0) ++ (take n' p0)
-    where n' = if n < 0 
-                then (-1 * n)
-                else (length p0) - n
-
-applyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
-    where n = (1 + (p0??l) + if (p0??l) >= 4 then 1 else 0) `mod` (length p0)
-
-applyInstruction (Reverse from to) p0
-    | from == to = p0
-    | otherwise = prefix ++ (reverse midfix) ++ suffix
-        where start = minimum [from, to]
-              end = maximum [from, to]
-              prefix = take start p0
-              midfix = take (end-start+1) $ drop start p0
-              suffix = drop (end+1) p0
-
-applyInstruction (Move from to) p0 
-    | from == to = p0
-    | otherwise = prefix ++ [p0!!from] ++ suffix
-        where without = take from p0 ++ drop (from+1) p0
-              prefix = take to without
-              suffix = drop (to) without
-
-
-unApply :: [Instruction] -> App ()
-unApply [] = return ()
-unApply (i:is) = 
-    do  st <- get
-        let p0 = password st
-        let p1 = unApplyInstruction i p0
-        put st {password = p1}
-        tell [Log (p1 ++ " <- " ++ p0 ++ " : " ++ (show i))]
-        unApply is
-
-unApplyInstruction :: Instruction -> String -> String
-unApplyInstruction (SwapPosition from to) p0 = applyInstruction (SwapPosition from to) p0
-unApplyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapLetter l0 l1) p0
-unApplyInstruction (RotateSteps n) p0 = applyInstruction (RotateSteps (-1 * n)) p0
-unApplyInstruction (Reverse from to) p0 = applyInstruction (Reverse from to) p0
-unApplyInstruction (Move from to) p0 = applyInstruction (Move to from) p0
-unApplyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
-    where n = case (p0??l) of
-                0 -> -1
-                1 -> -1
-                2 ->  2
-                3 -> -2
-                4 ->  1
-                5 -> -3
-                6 ->  0
-                7 -> -4
-    -- where n = case (p0??l) of
-    --             0 -> -1
-    --             1 -> -1
-    --             2 ->  1
-    --             3 -> -2
-    --             4 ->  1
-
-
-instructionFile = instructionLine `endBy` newline 
-instructionLine = choice [ swapL 
-                         , rotateL
-                         , reverseL
-                         , moveL
-                         ]
-
-swapL = (try (string "swap ")) *> (swapPosL <|> swapLetterL)
-
-swapPosL = SwapPosition <$> (string "position" *> spaces *> int) 
-                        <*> (spaces *> string "with position" *> spaces *> int)
-
-swapLetterL = SwapLetter <$> (string "letter" *> spaces *> letter) 
-                         <*> (spaces *> string "with letter" *> spaces *> letter)
-
-rotateL = (try (string "rotate ")) *> (rotateDirL <|> rotateLetterL)
-
-rotateDirL = rotateStepify <$> ((string "left") <|> (string "right"))
-                           <*> (spaces *> int <* spaces <* skipMany letter)
-    where rotateStepify dir n = case dir of 
-                                     "left" -> (RotateSteps (-1 * n))
-                                     "right" -> (RotateSteps n)
-rotateLetterL = RotateLetter <$> (string "based on position of letter " *> letter)
-
-reverseL = Reverse <$> (string "reverse positions" *> spaces *> int)
-                   <*> (spaces *> (string "through") *> spaces *> int)
-
-moveL = Move <$> (string "move position" *> spaces *> int)
-             <*> (spaces *> (string "to position") *> spaces *> int)
-
-
-parseIfile :: String -> Either ParseError [Instruction]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Instruction
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
diff --git a/adventofcode16/app/advent22.hs b/adventofcode16/app/advent22.hs
deleted file mode 100644 (file)
index f2e084a..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-module Main(main) where
-
-import GHC.Generics (Generic)
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-import Data.Maybe (catMaybes, fromJust)
-import Data.List (find, delete, sort, sortOn, reverse)
-
-data Node = Node { x :: Int
-                 , y :: Int
-                 , size :: Int
-                 , used :: Int
-                 , available :: Int
-                 , use_pc :: Int 
-                 } deriving (Show, Eq, Ord)
-
-data SearchState = SearchState { cx :: Int
-                               , cy :: Int 
-                               , grid :: [Node]
-                               } deriving (Show)
-instance Ord SearchState where
-    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
-instance Eq SearchState where
-  s1 == s2 = equivalentState s1 s2
-
-equivalentState :: SearchState -> SearchState -> Bool
-equivalentState s1 s2 =
-    let h1 = fromJust $ find (\n -> used n == 0) $ grid s1
-        h2 = fromJust $ find (\n -> used n == 0) $ grid s2
-      in
-        cx s1 == cx s2 && cy s1 == cy s2 && 
-                    x h1 == x h2 && y h1 == y h2
-
-
-testGrid = "\
-\Filesystem            Size  Used  Avail  Use%\n\
-\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
-\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
-\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
-\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
-\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
-\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
-\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
-\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
-\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
-\"
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent22.txt" 
-    let sizes = successfulParse $ parseFile text
-    part1 sizes
-    part2 sizes
-
-part1 :: [Node] ->  IO ()
-part1 sizes = print $ length viable
-    where viable = [(a, b) | a <- sizes, 
-                             b <- sizes, 
-                             a /= b,
-                             (used a) > 0,
-                             (used a) <= (available b)]
-
-
-part2 :: [Node] ->  IO ()
-part2 sizes = 
-    -- do let testSizes = successfulParse $ parseFile testGrid
-    --    putStrLn $ searchTraceH $ reverse $ aStar [[startSt testSizes]] []
-       print (26 + 26 + 29 + 5 * 36)
-
-
-aStar :: [[SearchState]] -> [SearchState] -> [SearchState]
-aStar [] _ = []
-aStar (currentPath:agenda) closed = 
-    if isGoal reached then currentPath
-    else if reached `elem` closed 
-        then aStar agenda closed
-        else aStar newAgenda (reached:closed) 
-    where 
-        reached = head currentPath
-        successorPaths = map (:currentPath) $ successors reached
-        newAgenda = sortOn (cost) $ successorPaths ++ agenda 
-
-
-searchTrace :: [SearchState] -> String
-searchTrace ss = unlines $ map (sst) ss
-    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ")"
-
-searchTraceH :: [SearchState] -> String
-searchTraceH ss = unlines $ map (sst) ss
-    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
-          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
-          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
-
-startSt :: [Node] -> SearchState
-startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
-    where xs = map (\n -> x n) nodes
-
-isGoal :: SearchState -> Bool
-isGoal st = cx st == 0 && cy st == 0
-
-adjacent :: Node -> Node -> Bool
-adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
-
--- A move of data from n1 to n2 is legal.
-legal :: Node -> Node -> Bool
-legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
-
-heuristic :: SearchState -> Int
-heuristic st = (cx st) + (cy st)
-
-successors :: SearchState -> [SearchState]
-successors st = map (newState st current) possibleMoves
-    where nodes = grid st
-          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
-          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
-
-
--- Moving data from n1 to n2
-newState :: SearchState -> Node -> (Node, Node) -> SearchState
-newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
-    where cx' = if current == n1 then x n2 else x current
-          cy' = if current == n1 then y n2 else y current
-          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
-                        (n1 {used = 0, available = (size n1)}):
-                        (delete n1 $ delete n2 (grid st))
-
-cost :: [SearchState] -> Int
-cost p = (heuristic $ head p) + (length p)
-
-
-
-duFile = duLine `sepEndBy` newline 
--- duLine = (optionMaybe nodeL)
-
-duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
-
-headerL = (many (noneOf "\r\n"))
-
-nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
-                <*> (string "-y" *> int)
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "%")
-            where nodeify x y size used available use_pc = 
-                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
-
-parseFile :: String -> Either ParseError [Maybe Node]
-parseFile input = parse duFile "(unknown)" input
-
-parseLine :: String -> Either ParseError (Maybe Node)
-parseLine input = parse duLine "(unknown)" input
-
-successfulParse :: Either ParseError [Maybe a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/app/advent22library.hs b/adventofcode16/app/advent22library.hs
deleted file mode 100644 (file)
index bad3621..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-{-# LANGUAGE DeriveGeneric #-}
-
-module Main(main) where
-
-import GHC.Generics (Generic)
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-import Data.Maybe (catMaybes, fromJust)
-import Data.List (find, delete, sort)
-import Data.Graph.AStar
-import Data.Hashable
-import qualified Data.HashSet
-
-data Node = Node { x :: Int
-                 , y :: Int
-                 , size :: Int
-                 , used :: Int
-                 , available :: Int
-                 , use_pc :: Int 
-                 } deriving (Show, Eq, Ord, Generic)
-instance Hashable Node
-
-data SearchState = SearchState { cx :: Int
-                               , cy :: Int 
-                               , grid :: [Node]
-                               } deriving (Show, Eq, Generic)
-instance Hashable SearchState
-instance Ord SearchState where
-    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
-
-
-testGrid = "\
-\Filesystem            Size  Used  Avail  Use%\n\
-\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
-\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
-\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
-\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
-\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
-\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
-\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
-\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
-\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
-\"
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent22.txt" 
-    let sizes = successfulParse $ parseFile text
-    part1 sizes
-    part2 sizes
-
-part1 :: [Node] ->  IO ()
-part1 sizes = print $ length viable
-    where viable = [(a, b) | a <- sizes, 
-                             b <- sizes, 
-                             a /= b,
-                             (used a) > 0,
-                             (used a) <= (available b)]
-
-
-part2 :: [Node] ->  IO ()
-part2 sizes = 
-    -- do let testSizes = successfulParse $ parseFile testGrid
-    --    putStrLn $ searchTrace $ fromJust $ 
-    --                 aStar successors 
-    --                         (\_ _ -> 1) 
-    --                         heuristic
-    --                         isGoal
-    --                         (startSt testSizes)
-    putStrLn $ searchTrace $ fromJust $ 
-                    aStar successors 
-                            (\_ _ -> 1) 
-                            heuristic
-                            isGoal
-                            (startSt sizes)
-
-
-
-searchTrace :: [SearchState] -> String
-searchTrace ss = unlines $ map (sst) ss
-    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
-          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
-          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
-
-startSt :: [Node] -> SearchState
-startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
-    where xs = map (\n -> x n) nodes
-
-isGoal :: SearchState -> Bool
-isGoal st = cx st == 0 && cy st == 0
-
-adjacent :: Node -> Node -> Bool
-adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
-
--- A move of data from n1 to n2 is legal.
-legal :: Node -> Node -> Bool
-legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
-
-heuristic :: SearchState -> Int
-heuristic st = (cx st) + (cy st)
-
-successors :: SearchState -> Data.HashSet.HashSet SearchState
-successors st = Data.HashSet.fromList $ map (newState st current) possibleMoves
-    where nodes = grid st
-          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
-          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
-
-
--- Moving data from n1 to n2
-newState :: SearchState -> Node -> (Node, Node) -> SearchState
-newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
-    where cx' = if current == n1 then x n2 else x current
-          cy' = if current == n1 then y n2 else y current
-          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
-                        (n1 {used = 0, available = (size n1)}):
-                        (delete n1 $ delete n2 (grid st))
-
-
-duFile = duLine `sepEndBy` newline 
--- duLine = (optionMaybe nodeL)
-
-duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
-
-headerL = (many (noneOf "\r\n"))
-
-nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
-                <*> (string "-y" *> int)
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "%")
-            where nodeify x y size used available use_pc = 
-                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
-
-parseFile :: String -> Either ParseError [Maybe Node]
-parseFile input = parse duFile "(unknown)" input
-
-parseLine :: String -> Either ParseError (Maybe Node)
-parseLine input = parse duLine "(unknown)" input
-
-successfulParse :: Either ParseError [Maybe a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/app/advent22search.hs b/adventofcode16/app/advent22search.hs
deleted file mode 100644 (file)
index 32ada24..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-module Main(main) where
-
-import GHC.Generics (Generic)
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-import Data.Maybe (catMaybes, fromJust)
-import Data.List (find, delete, sort, sortOn, reverse)
-
-data Node = Node { x :: Int
-                 , y :: Int
-                 , size :: Int
-                 , used :: Int
-                 , available :: Int
-                 , use_pc :: Int 
-                 } deriving (Show, Eq, Ord)
-
-data SearchState = SearchState { cx :: Int
-                               , cy :: Int 
-                               , grid :: [Node]
-                               } deriving (Show)
-instance Ord SearchState where
-    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
-instance Eq SearchState where
-  s1 == s2 = equivalentState s1 s2
-
-equivalentState :: SearchState -> SearchState -> Bool
-equivalentState s1 s2 =
-    let h1 = fromJust $ find (\n -> used n == 0) $ grid s1
-        h2 = fromJust $ find (\n -> used n == 0) $ grid s2
-      in
-        cx s1 == cx s2 && cy s1 == cy s2 && 
-                    x h1 == x h2 && y h1 == y h2
-
-
-testGrid = "\
-\Filesystem            Size  Used  Avail  Use%\n\
-\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
-\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
-\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
-\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
-\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
-\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
-\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
-\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
-\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
-\"
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent22.txt" 
-    let sizes = successfulParse $ parseFile text
-    part1 sizes
-    part2 sizes
-
-part1 :: [Node] ->  IO ()
-part1 sizes = print $ length viable
-    where viable = [(a, b) | a <- sizes, 
-                             b <- sizes, 
-                             a /= b,
-                             (used a) > 0,
-                             (used a) <= (available b)]
-
-
-part2 :: [Node] ->  IO ()
-part2 sizes = 
-    -- do let testSizes = successfulParse $ parseFile testGrid
-    --    putStrLn $ searchTraceH $ reverse $ aStar [[startSt testSizes]] []
-       print $ length $ aStar [[startSt sizes]] []
-
-
-aStar :: [[SearchState]] -> [SearchState] -> [SearchState]
-aStar [] _ = []
-aStar (currentPath:agenda) closed = 
-    if isGoal reached then currentPath
-    else if reached `elem` closed 
-        then aStar agenda closed
-        else aStar newAgenda (reached:closed) 
-    where 
-        reached = head currentPath
-        successorPaths = map (:currentPath) $ successors reached
-        newAgenda = sortOn (cost) $ successorPaths ++ agenda 
-
-
-searchTrace :: [SearchState] -> String
-searchTrace ss = unlines $ map (sst) ss
-    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ")"
-
-searchTraceH :: [SearchState] -> String
-searchTraceH ss = unlines $ map (sst) ss
-    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
-          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
-          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
-
-startSt :: [Node] -> SearchState
-startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
-    where xs = map (\n -> x n) nodes
-
-isGoal :: SearchState -> Bool
-isGoal st = cx st == 0 && cy st == 0
-
-adjacent :: Node -> Node -> Bool
-adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
-
--- A move of data from n1 to n2 is legal.
-legal :: Node -> Node -> Bool
-legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
-
-heuristic :: SearchState -> Int
-heuristic st = (cx st) + (cy st)
-
-successors :: SearchState -> [SearchState]
-successors st = map (newState st current) possibleMoves
-    where nodes = grid st
-          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
-          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
-
-
--- Moving data from n1 to n2
-newState :: SearchState -> Node -> (Node, Node) -> SearchState
-newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
-    where cx' = if current == n1 then x n2 else x current
-          cy' = if current == n1 then y n2 else y current
-          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
-                        (n1 {used = 0, available = (size n1)}):
-                        (delete n1 $ delete n2 (grid st))
-
-cost :: [SearchState] -> Int
-cost p = (heuristic $ head p) + (length p)
-
-
-
-duFile = duLine `sepEndBy` newline 
--- duLine = (optionMaybe nodeL)
-
-duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
-
-headerL = (many (noneOf "\r\n"))
-
-nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
-                <*> (string "-y" *> int)
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "%")
-            where nodeify x y size used available use_pc = 
-                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
-
-parseFile :: String -> Either ParseError [Maybe Node]
-parseFile input = parse duFile "(unknown)" input
-
-parseLine :: String -> Either ParseError (Maybe Node)
-parseLine input = parse duLine "(unknown)" input
-
-successfulParse :: Either ParseError [Maybe a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/app/advent22showgrid.hs b/adventofcode16/app/advent22showgrid.hs
deleted file mode 100644 (file)
index aec4309..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-{-# LANGUAGE DeriveGeneric #-}
-
-module Main(main) where
-
-import GHC.Generics (Generic)
-import Text.Parsec 
-import Text.ParserCombinators.Parsec.Number
-import Data.Maybe (catMaybes, fromJust)
-import Data.List (find, delete, sort, sortOn, reverse)
-
-data Node = Node { x :: Int
-                 , y :: Int
-                 , size :: Int
-                 , used :: Int
-                 , available :: Int
-                 , use_pc :: Int 
-                 } deriving (Show, Eq, Ord)
-
-
-testGrid = "\
-\Filesystem            Size  Used  Avail  Use%\n\
-\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
-\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
-\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
-\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
-\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
-\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
-\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
-\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
-\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
-\"
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent22.txt" 
-    let sizes = successfulParse $ parseFile text
-    let maxX = maximum $ map (\n -> x n) sizes
-    let maxY = maximum $ map (\n -> y n) sizes
-    putStrLn $ unlines $ map (showRow maxX sizes) [0..(maxY-1)]
-
-
-showRow maxX sizes r = map (charOf) row
-  where row = sortOn (\c -> x c) $ filter (\c -> y c == r) sizes
-        charOf c = if (used c) == 0 
-                      then '+'
-                      else if (used c) > 100
-                              then '#'
-                              else '_'
-
-
-
-
-duFile = duLine `sepEndBy` newline 
--- duLine = (optionMaybe nodeL)
-
-duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
-
-headerL = (many (noneOf "\r\n"))
-
-nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
-                <*> (string "-y" *> int)
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "T")
-                <*> (spaces *> int <* string "%")
-            where nodeify x y size used available use_pc = 
-                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
-
-parseFile :: String -> Either ParseError [Maybe Node]
-parseFile input = parse duFile "(unknown)" input
-
-parseLine :: String -> Either ParseError (Maybe Node)
-parseLine input = parse duLine "(unknown)" input
-
-successfulParse :: Either ParseError [Maybe a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = catMaybes a
diff --git a/adventofcode16/app/advent23.hs b/adventofcode16/app/advent23.hs
deleted file mode 100644 (file)
index dfb98cd..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-module Main(main) where
-
-import Text.Parsec hiding (State)
-import Text.ParserCombinators.Parsec.Number
-import Control.Monad.State.Lazy
--- import Debug.Trace
-
-data Location = Literal Int | Register Char deriving (Show, Eq)
-data Instruction =   Cpy Location Location 
-                   | Inc Location 
-                   | Dec Location 
-                   | Jnz Location Location
-                   | Tgl Location
-                   deriving (Show, Eq)
-
-data Machine = Machine { a :: Int
-                       , b :: Int
-                       , c :: Int
-                       , d :: Int
-                       , pc :: Int
-                       , instructions :: [Instruction]} 
-               deriving (Show, Eq)
-
-
-testInstructions = "cpy 2 a\n\
-\tgl a\n\
-\tgl a\n\
-\tgl a\n\
-\cpy 1 a\n\
-\dec a\n\
-\dec a"
-
-
-emptyMachine :: Machine
-emptyMachine = Machine {a=0, b=0, c=0, d=0, pc=0, instructions=[]}
-
-main :: IO ()
-main = do 
-    text <- readFile "data/advent23.txt" 
-    let instructions = successfulParse $ parseIfile text
-    part1 instructions
-    part2 instructions
-
-
-part1 :: [Instruction] -> IO ()
-part1 instrs = 
-    do  let m0 = emptyMachine {instructions=instrs, a = 7}
-        let mf = snd $ runState runMachine m0
-        print (a mf)
-
-part2 :: [Instruction] -> IO ()
-part2 instrs = 
-    do  let m0 = emptyMachine {instructions=instrs, a = 12}
-        let mf = snd $ runState runMachine m0
-        print (a mf)
-
-
-runMachine :: State Machine ()
-runMachine = 
-    do  m <- get
-        if (pc m) >= (length $ instructions m)
-            then return ()
-            else do executeStep
-                    runMachine
-
-executeStep :: State Machine ()
-executeStep = 
-    do  m <- get
-        let i = (instructions m)!!(pc m)
-        put (executeInstructionPeep i m)
-        -- put (executeInstruction i m)
-
-executeInstructionPeep :: Instruction -> Machine -> Machine
-executeInstructionPeep i m =
-    if sample1 == sample1Target
-        -- then trace ("Peeping 1 " ++ (show m) ++ " to " ++ (show m1)) m1
-        then m1
-        else if sample2 == sample2Target
-            -- then trace ("Peeping 2 " ++ (show m) ++ " to " ++ (show m2)) m2
-            then m2
-            else executeInstruction i m
-    where sample1 = take (length sample1Target) $ drop (pc m) $ instructions m 
-          sample1Target = [ Cpy (Literal 0)    (Register 'a')
-                          , Cpy (Register 'b') (Register 'c')
-                          , Inc (Register 'a')
-                          , Dec (Register 'c')
-                          , Jnz (Register 'c') (Literal (-2))
-                          , Dec (Register 'd')
-                          , Jnz (Register 'd') (Literal (-5)) ]
-          m1 = m {a = b m * d m, c = 0, d = 0, pc = pc m + (length sample1)}
-          sample2 = take (length sample2Target) $ drop (pc m) $ instructions m 
-          sample2Target = [ Dec (Register 'b')
-                          , Cpy (Register 'b') (Register 'c')
-                          , Cpy (Register 'c') (Register 'd')
-                          , Dec (Register 'd')
-                          , Inc (Register 'c')
-                          , Jnz (Register 'd') (Literal (-2)) ]
-          m2 = m {b = b m - 1, c = (b m - 1) * 2, d = 0, pc = pc m + (length sample2)}
-
-
-executeInstruction :: Instruction -> Machine -> Machine
-executeInstruction (Inc r@(Register _)) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m r
-          m' = writeValue m r (v+1)
-executeInstruction (Inc (Literal _)) m = m {pc=pc1}
-    where pc1 = (pc m) + 1
-executeInstruction (Dec r@(Register _)) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m r
-          m' = writeValue m r (v-1)
-executeInstruction (Dec (Literal _)) m = m {pc=pc1}
-    where pc1 = (pc m) + 1
-executeInstruction (Cpy s d@(Register _)) m = m' {pc=pc1}
-    where pc1 = (pc m) + 1
-          v = evaluate m s
-          m' = writeValue m d v
-executeInstruction (Cpy s (Literal _)) m = m {pc=pc1}
-    where pc1 = (pc m) + 1
-executeInstruction (Jnz s d) m 
-    | v == 0 = m {pc=pc1}
-    | otherwise = m {pc=pcj}
-    where pc1 = (pc m) + 1
-          ed = evaluate m d
-          pcj = (pc m) + ed
-          v = evaluate m s
-executeInstruction (Tgl a) m 
-    | v < (length $ instructions m) = m {instructions = (replace (instructions m) i' v),
-                                       pc=pc1}
-    | otherwise = m {pc=pc1}
-    where pc1 = pc m + 1
-          v = evaluate m a + pc m
-          i = (instructions m)!!v
-          i' = case i of
-                  Inc x -> Dec x
-                  Dec x -> Inc x
-                  Tgl x -> Inc x
-                  Cpy x y -> Jnz x y
-                  Jnz x y -> Cpy x y
-          replace xs x i = take i xs ++ [x] ++ drop (i+1) xs
-
-
-evaluate :: Machine -> Location -> Int
-evaluate _ (Literal i) = i
-evaluate m (Register r) = 
-    case r of
-        'a' -> (a m)
-        'b' -> (b m)
-        'c' -> (c m)
-        'd' -> (d m)
-
-writeValue :: Machine -> Location -> Int -> Machine
-writeValue m (Literal i) _ = m
-writeValue m (Register r) v =
-    case r of 
-        'a' -> m {a=v}
-        'b' -> m {b=v}
-        'c' -> m {c=v}
-        'd' -> m {d=v}
-
-
-instructionFile = instructionLine `sepEndBy` newline 
-instructionLine = incL <|> decL <|> cpyL <|> jnzL <|> tglL
-
-incL = Inc <$> (string "inc" *> spaces *> register)
-decL = Dec <$> (string "dec" *> spaces *> register)
-cpyL = Cpy <$> (string "cpy" *> spaces *> location) <*> (spaces *> register)
-jnzL = Jnz <$> (string "jnz" *> spaces *> location) <*> (spaces *> location)
-tglL = Tgl <$> (string "tgl" *> spaces *> location)
-
-location = (Literal <$> int) <|> register
-register = Register <$> (oneOf "abcd")
-
-parseIfile :: String -> Either ParseError [Instruction]
-parseIfile input = parse instructionFile "(unknown)" input
-
-parseIline :: String -> Either ParseError Instruction
-parseIline input = parse instructionLine "(unknown)" input
-
-successfulParse :: Either ParseError [a] -> [a]
-successfulParse (Left _) = []
-successfulParse (Right a) = a
\ No newline at end of file
diff --git a/adventofcode16/data/advent01.txt b/adventofcode16/data/advent01.txt
deleted file mode 100644 (file)
index 62fb6e8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-R2, L3, R2, R4, L2, L1, R2, R4, R1, L4, L5, R5, R5, R2, R2, R1, L2, L3, L2, L1, R3, L5, R187, R1, R4, L1, R5, L3, L4, R50, L4, R2, R70, L3, L2, R4, R3, R194, L3, L4, L4, L3, L4, R4, R5, L1, L5, L4, R1, L2, R4, L5, L3, R4, L5, L5, R5, R3, R5, L2, L4, R4, L1, R3, R1, L1, L2, R2, R2, L3, R3, R2, R5, R2, R5, L3, R2, L5, R1, R2, R2, L4, L5, L1, L4, R4, R3, R1, R2, L1, L2, R4, R5, L2, R3, L4, L5, L5, L4, R4, L2, R1, R1, L2, L3, L2, R2, L4, R3, R2, L1, L3, L2, L4, L4, R2, L3, L3, R2, L4, L3, R4, R3, L2, L1, L4, R4, R2, L4, L4, L5, L1, R2, L5, L2, L3, R2, L2
\ No newline at end of file
diff --git a/adventofcode16/data/advent02.txt b/adventofcode16/data/advent02.txt
deleted file mode 100644 (file)
index 799cb46..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-RDRRDLRRUDRUUUULDDRDUULLDUULDURDDUDRULDLUDDRLRDUDDURRRRURDURLLRDRUUULDLLLURDRLLULLUULULLLDLLLRRURRLRDUULRURRUDRRDRLURLRURLLULRUURRUURDDLDRDLDLLUDUULLLUUUUDULLDRRUURLDURDDDDDRLLRRURDLUDRRUUDLRRLLRDURDUDDDLRDDRDLRULLUULRULRLLULDDRURUUDLDDULDRLLURDDUDDUDRDUDLDRRRDURRLDRDRLDLLDUDDDULULRRULRLLURDRRDDUUUUUULRUDLRRDURDLRDLUDLDURUDDUUURUDLUUULDLRDURDLDUUDLDDDURUUDUUDRLRDULLDUULUDRUDRLRRRDLLDRUDULRRUDDURLDRURRLLRRRDRLLDLULULRRUURRURLLUDRRLRULURLDDDDDURUDRRRRULLUUDLDDLUUL
-ULURUDLULDULDLLDDLLLDRRLLUDRRDRDUDURUDLRRRRUDRDDURLRRULLDLURLDULLUDDLUDURDUURRRRLDLRLDDULLRURLULLDDRUDLRRRLDRRRDLDRLLDDRRDDLUUDRUDDLULRURLDURRLLDLRUDLLRRUULUDRLLLRLDULURRRRRDDUURDRRUUDULRUULDDULRLUDLUDDULLRLRDDLRLLURRRULDLRRRUURRLDDRDLRDLRRDRDLDRDUDRDURUUDRLRRULRDLLDLLRRRDRLDRLRLRLLLURURDULUUDDRLLDDDRURRURLRDDULLRURUDRRDRLRRRLDLRLRULDRLUURRUUULRLDLLURLLLDLLLDRRDULRURRRRLUDLLRRUDLRUDRURDRRDLUUURRDLRLRUUUDURDLUDURRUUDURLUDDDULLDRDLLDDDRLDDDRLDLDDDDUDUUDURUUDULRDDLULDRDRLURLUDRDLUULLULRLULRDDRULDUDDURUURULUDLUURLURU
-URLURDDRLLURRRLDLDLUDUURDRUDLLLRRDLUUULRRLURRRLUDUDLRLDDRUDLRRRULUDUDLLLULULLLRUDULDDDLLLRRRLRURDULUDDDULDLULURRRDLURDLRLLDUDRUDURDRRURULDRDUDLLRDDDUDDURLUULLULRDRRLDDLDURLRRRLDRDLDULRULRRRLRLLDULRDLURLRUUDURRUUDLLUDRUDLRLDUUDLURRRDDUUDUDRLDLDDRURDDLLDDRDLRLRDLLLUDLUUDRLRLRDDRDLRDLLUULLLLUULLDLLDLRDLRLRRLUUDLLRLRUDRURULRLRLULUDRLLUDDUDDULRLDDRUUUURULDRRULLLDUURULUDRLLURLRRLDLRRLDDRRRDUDDUDLDDLULUDDUURDLLLRLDLRDRUUUUUDDDLDRDDRRRLRURRRRDURDRURUDLURRURDRLRUUDDLDRRULLDURDRLRRDURURUULRDUDLDRDDLULULRDRRUDDRLLRLULRLLUUDRDUUDDUDLRUUDLLUULLRUULUDDLURRRLLDRLRRLLRULLDUULURLLLLUUULDR
-LDUURULLRLDRRUUDUUUURUUUDDDURRDDLRDLLRDDRULDDUURUDDURLLUDRDUDRDULDRRRLULUDRULLLLDRLLDRDLDLLRURULUDDDDURDDDRLLUDLDRULRDLDUDDDUUDLLRLLLDLRLRLRRUDDULDDDUDLDDLUDDULDLLLLULLLLDDURDDURRRDDRLRLLUDLLUDDDUDURUDRLRDRULULDDRULDLULULLRUULRLDULUURRDRDRRDLDDDRRLUULDLUDRDDUDLRURULLDDURLDDRULUDLDDDRDRLLRDLLUURRRURDRLRURLDDLURDRURDDURLLRLRUDUUDLDUDURRDDURDRDDUDDDUDUURURDDLLRUUDDRRDULDDLLDLRULUULRUUDLLDRLULDULDDUDLULRULDRLLDUULDDDLRLLRLULDDULDDRRRLDRRLURULRDDRDLRRDUDDRDRRRRUDUDLLRRDRRURRUURDRULDDUDURLUDDURDUDRDUULLDRURUURURDRRLDDLDLUURLULRUDURDRUUURRURRDRUDRUURDURLRULULLLULDLLDLRRLDRDLUULUDDDLRDRLRLDRUDUDRLLRL
-LURLUURLURDUUDRUDLDLLURRRDLDRRRULDDRRDRDUUDRUDURDDDURLUDDLULUULRRLLRULUDRDDRRRLDURDUDDURDDDLRLDDLULLDRDDLUUDUURRRLULRUURRRRLLULDUDRDUURRRURRDRDUDUDLUDULLDLDDRLUDRURDULURLURRLLURLLLRLUURLRUDLUDDRLURRUULULRLURRURUDURDLDLDDUDDRDLLRLLRRULDDRUDURUDDDUDLLRDLRUDULLLRRRUURUDUUULLRDUDRURUDULLDLLUUUDRULRLLRRDDDDUDULDRDRLLDDLLDDDURRUDURLDLRDRUURDDURLRDRURLRRLLRLULDRRLRUDURDUURRLUUULUDDDLRLULRDRLLURRRDLURDUUDRRRLUURRLLUDLUDLUULLRRDLLRDDRURRUURLDDLRLRLRUDLDLRLRDRRDLLLRDLRDUDLLDDDRD
\ No newline at end of file
diff --git a/adventofcode16/data/advent03.txt b/adventofcode16/data/advent03.txt
deleted file mode 100644 (file)
index 40c03ca..0000000
+++ /dev/null
@@ -1,1734 +0,0 @@
-  330  143  338
-  769  547   83
-  930  625  317
-  669  866  147
-   15  881  210
-  662   15   70
-  273  277  707
-   50  592  770
-  280  313  407
-  642  487  372
-   94  619  295
-  734  243  141
-  220  141  515
-  198  824  745
-  210  787  964
-  213  627  601
-  918    4  447
-  805  630  802
-  711  237  987
-  938  552  388
-  643  405  779
-  803  747  525
-  917  832  631
-  899  292  843
-   81  206  445
-  141  874  465
-  177  974   54
-  520  725  814
-  271  958  554
-  779  579  264
-  358   18  257
-  978   77  270
-  984   88  131
-  475  702  940
-  183  756  160
-  383  941  820
-  806  142  646
-  793  275  804
-   53  272  368
-  942  821  785
-  863  830  902
-  219   52  199
-  473  479  351
-  860  522  361
-  890  240  216
-   94  756  407
-  310  189  468
-  234  909  178
-  889  667  756
-  429  485  730
-  825  405   30
-  943  806  253
-   98  455  365
-  998  454  290
-  971  576  223
-   64  429  273
-  945  779   63
-  352  960   59
-  672  948  577
-  782   43  567
-  460  315  719
-  825  604  183
-  453  442  788
-  694  632  334
-  569  619  317
-  337   49   17
-  878  468  660
-  393  598  717
-  550  827  159
-  540  362  346
-   66  713  380
-  491  477   44
-  411  114  320
-  554   96  250
-  306   67  196
-  769  553  333
-  762  436  382
-  278  322  153
-  894  603  334
-  539  441  844
-  486  162  927
-  197    9  218
-   94  221  804
-  250  220  913
-  557  626  486
-  562  705  630
-  968  922  285
-  518   36  468
-   18  608   83
-  512  611  530
-  534   37   65
-  621  136   90
-  239  113  139
-  371  640  956
-  629   54  959
-  531  620  338
-  682  499  810
-  798  170  968
-  187  640  645
-  660  535  332
-  663  530  314
-   64   26   65
-   55  285  488
-  620  288   52
-  642  474  450
-  455    9  962
-   51  760  489
-  426  760  833
-  304  783  772
-  498  765  695
-  635   53  126
-   44  430  774
-  979  943  838
-  962  892   64
-  494  709  614
-    7  695  120
-  503  114  606
-  362  340  689
-  509  367  389
-  673  410  664
-  773  262  558
-  897  958  245
-  140  773  483
-  965  468  584
-  546  209  668
-  856  381  184
-  274  237  762
-  888  677  906
-  871  516  405
-  102  529  912
-  285  724  885
-  352  501   53
-  774  139  245
-  380  309  594
-  813  185  765
-  530  645  965
-  958  618  120
-  851  202  957
-  737  476  131
-  595  546  108
-  716  113   66
-  327  215  318
-  397  343  390
-  351  143  103
-  138   91   31
-  108  224  919
-  230  276  896
-  426  975  177
-  327  975  918
-  238  365  764
-  328  799  775
-  590  906  967
-  578  460  338
-  507  619  647
-  711  617  867
-  933  478  734
-  820  760  721
-  199  711  824
-  983  214  228
-  382  150  648
-  415  782  242
-  615  754  445
-  693  689  590
-  382  784  482
-  997  181  322
-  682  241  172
-  587  302  252
-  184  135  254
-  574  104  549
-   88  738  796
-  486  715  861
-   62  491  815
-  463  434  569
-  519  622  310
-  199  443  782
-  572  657   85
-  763  517  844
-  750  175  835
-  228  269  710
-  611  316  551
-  883  546  296
-  169  693   18
-  992  743  316
-  263  529  529
-  705  570    4
-  918  706  527
-  609  285  971
-  260  533  112
-  711  486  904
-  820   40  472
-  997  301  129
-  257  288  343
-  635  439  375
-  560  381  417
-  773  105  145
-   58  963  267
-  976  742  424
-  994  441  384
-  389  770  514
-  782  463  335
-  919  727  276
-  780  794  372
-  326  180  590
-  918  946  257
-  889  842  181
-  507   61  464
-  762  835  443
-  827  607  982
-  174  875  544
-  934  885  589
-   32  343  757
-  987  826  257
-  981  782  844
-  446  291  397
-  443  800  421
-  165  668  539
-  410  373  487
-  422  803  881
-  546  998  953
-  291  607  160
-  919  894   62
-  842  718  117
-  110  816  582
-  470  836  596
-  575  687   35
-   37  835  374
-   90  954  354
-  101  141  407
-  174  398  499
-  173  737  964
-    4  365  950
-  946  616  634
-  906  904  619
-   40  789   16
-  788  769   76
-  737  867   88
-  565  812   31
-  508  380  201
-   34  935  339
-  500  862  326
-  431  181  475
-  403  346  585
-   88  530  708
-  731  137  781
-  715  563  272
-  817  659  932
-  396  368  360
-  162  683  376
-  278  620   39
-  525  910  371
-  688  524  149
-  488  998  279
-  286  392  523
-  325  144  406
-   79  532  419
-  540  460  465
-  222  832  416
-  517  507   46
-   87  744  183
-  382  819  701
-  306  763  647
-  744   74  913
-   62  813  849
-  691  874  775
-  291  422  314
-  432  630  809
-  611  510  566
-  583  745  289
-  397   19  727
-  188  766  442
-   96  108  329
-  963  719  598
-  963  764  469
-  444  636  731
-  792  636  422
-  993    1  416
-  518  300  532
-  298  312  736
-  316  111  463
-  825  569   35
-  858  591  584
-  809   84  607
-  681  610  740
-  383  279  210
-  851  733  615
-  287  959  160
-  856  851  171
-  606  115  211
-  310  541  845
-  506  119  319
-  665  471  562
-  382  885  798
-  440   29  595
-  113  903  475
-  257  773  846
-  306  741  776
-   97  804   76
-  489  332  423
-  466  632  613
-   86  739  481
-  199  846  712
-   62  282  809
-  155  681  142
-  705  525  270
-  159  800  117
-  612  664  316
-  505  616  837
-  578  839  770
-  942  535  122
-  542  781  512
-  552   22  475
-  760  791   97
-  432  626  837
-   26  616  336
-  412  316  702
-  108  232  242
-  158  311  449
-   60  141  325
-   58    1  714
-  532  977  123
-  531  978  598
-  679  899   57
-  645  523   54
-  167  892   14
-  164  574  492
-  105   37  491
-  132  555  485
-  600  879  508
-  608  843  222
-  270  255  398
-  232  960  281
-  241  995  436
-  113  674  411
-  381  567    5
-  697  450  966
-  726  857  969
-  722  686  965
-  543   20  453
-  955  689  554
-  858  161  923
-  140  979  953
-  786  836  237
-  200  322  875
-  311  623  398
-  510  814  945
-   67  387  825
-  621  620  740
-  630  842  163
-  545   75  373
-  506  531  501
-  301  571  357
-  746  491  253
-   37   29  748
-  769  507  754
-   69  886  861
-  423  629  856
-  380  723   83
-  875  647  657
-  144  696  580
-  896   49  629
-  275  598  374
-  118  636  279
-  277   80  529
-  623  130  493
-  368  712  621
-  833  730  512
-   59  767  829
-  105  933  731
-   54  240  108
-  803  235  992
-  837  726  881
-  426  855  450
-  636  730  731
-  840  561  977
-  996  229  670
-  508  234  186
-  529  108  917
-  373  337  795
-  681   35  565
-  790  251  152
-  301  235  599
-  875  416  653
-  277  338  990
-  800  207  595
-  954  650  896
-  931  667  706
-   84  851  822
-  254  778  816
-  316  141  732
-  233  759  239
-  546  473  315
-   69   15   96
-  513  470  320
-  460  188  729
-  429  950  288
-  709  807  790
-  456  161  570
-  269  718  339
-  213  628  602
-  155  367  686
-  176  418  568
-   66  251  723
-  959  696  536
-  794  279  885
-  315  527  993
-  603  853  868
-  727  747  994
-  411  287  193
-  528  763  559
-  803  149  739
-  542  883  696
-  275  676  183
-  411  317  161
-  349  875   35
-   39  729  221
-  256  831  216
-  247  238  176
-  399   59  306
-  409  445  550
-    9  387  253
-  613  204  474
-   81  868  944
-  589  912  735
-  319  264   83
-  984  704  614
-  778  614  532
-  699  762  556
-  680  250  507
-  504  581  647
-  160  351  295
-  513  739  413
-  651  915  651
-  878  218  499
-  872  990  503
-   38  886   12
-  218  201  415
-  240  250  504
-  265  448  382
-  402  876  126
-  488  950  649
-  189  210  597
-   24  850  758
-   30  451  347
-    5  437  723
-  634  310  546
-  801  179  411
-  679  338  852
-  385   32  933
-  406  531  554
-   88  516  871
-  860  486  834
-  467  535  849
-  419  820  785
-  206  649  526
-  244  499  714
-   80  774  678
-  336  149  612
-  310  175  656
-  150  221  791
-  159  806  701
-  336  465  530
-  376  819  272
-  533  472  421
-   82  124  909
-  523  561  539
-  844  811  576
-  439  612  587
-  782  457  686
-  152   51  837
-  413  573  855
-  403  608   26
-  893  819  910
-  361  499  657
-  677  937  617
-  428    6  343
-  310   38  431
-  474   35  420
-  574  256  221
-  700  907  515
-  149  685  478
-  206  325  720
-  114   51   67
-  320  338  686
-  293   59  527
-  147  756  986
-  250  697  573
-  968  194  545
-  542  480   72
-  454  574  619
-  473   55  592
-  475  339  889
-  884  313  993
-  125  127  742
-  591  514  585
-  543  583  282
-  264  580  390
-  839  487  781
-  902  664  868
-  334  459  819
-  107   20  211
-  368  479  775
-  683  691  273
-  681  336  630
-   22  978  536
-  926  828  708
-  210  319  723
-  787  689  866
-  854  633  856
-  960  494  866
-  122  687  596
-  918  705  539
-   84  564  791
-  876  138  949
-  836    1  500
-  718  308  466
-  228  311  271
-  421  998  433
-  622  772  174
-  875  720  432
-  680  687  509
-  215   95  623
-  674  732  166
-  198  174  645
-  721  839  390
-  617  896  448
-   73  331  155
-  789  134  431
-  853  376  400
-   82  862  411
-  779  362   70
-  750  777  349
-  674  604  224
-  812  731  446
-  280  546  336
-  922  781  619
-  196  892  876
-  941  361  479
-  344  988  873
-  499   92  795
-  287  913  546
-  625  167  604
-  617    1  399
-  154  166  720
-  328  323  111
-  713  619  530
-  606  756  580
-  194  247  935
-  149   65   64
-   55  287  902
-  870  866  127
-  478  679  587
-  900  459  565
-  563  787  743
-  962  798  769
-  669   39  525
-  745  691  317
-  484  123   93
-  500  598  348
-  159  535  681
-  618  176  877
-  723  373  464
-  304  184  131
-  542  209  654
-  716   47  647
-  976  537  771
-  914  606  568
-  241  250  481
-  616  640  660
-  744  187  843
-  303  617  927
-  369  525  773
-  754  697  360
-  595  560  605
-  562  589  610
-  799  497  655
-  823  553  532
-  937  502  449
-  976  941  158
-  194  720  347
-  474  694  822
-  528  184  272
-  922  698  568
-  415  889  638
-  169  822   65
-  547  281  663
-  582  167  110
-  365   56  914
-  431  162  923
-  473  812  578
-  572  890  386
-  164  119  308
-  604  946  496
-  327  142   72
-  641  916  472
-  743  663  228
-  107  446  345
-  823  486  152
-  997   47  968
-  565  155  631
-  438  205  416
-  271  163  875
-  123  393  111
-  169  412  854
-  615  683  659
-  592  362    9
-   99  895  668
-  834  205  172
-  359  355  550
-  499  149  389
-  755  298  916
-  475  706  807
-  829  425  118
-   43  527  479
-  159  473  874
-  151  326  992
-  970  660  509
-  837  930   35
-  164  345  506
-  209  879  487
-   97  157  503
-  289  755  793
-  624  897  293
-  382  134  451
-  257  917  339
-  110  168   85
-  470  583  139
-  486  613  120
-  584  747  795
-  959  699  339
-  866  384  672
-  157  639  464
-  939  485  409
-  947  441  131
-  179  953  581
-  735  587  605
-  834  582   36
-  304  422  707
-  195  348  347
-  163  521  486
-  948  471  675
-  915  453  406
-   40  345  635
-   81  124  115
-  127  105  127
-   50   32   10
-  221  399  397
-  487  676  412
-  574  607  450
-  268  625  323
-  843  858  145
-  706  286  218
-  822  168  254
-  950  708  944
-  572  640  775
-  958  563  909
-  996  154  918
-  378  626  564
-  335  823  339
-  499  810  270
-  294   22   98
-  987  959  591
-  101  899  442
-  931  409  576
-  542  102  655
-  404  980  398
-  759  990  381
-  692  990  750
-  752   93  149
-  278  973  883
-  621  459  232
-  398  261  626
-  221  212  744
-  790  241  352
-  802  218  317
-  443  294  244
-  393  131  941
-  466  378  885
-  516  419  240
-  799  748  407
-  468  502  386
-  829  329  766
-  432  376  408
-  681   88  198
-  553  351  489
-  234  717   59
-  332  525  675
-  437  691  723
-  441  834  433
-  616  144  274
-  966  911  650
-  254  274  782
-  346  714  856
-  330  696  171
-  394  407  298
-  897  553  867
-  755  503  956
-  253  840  382
-  923  195  262
-  918  735  483
-   55  703  227
-  768  759  225
-  825  238   14
-    7  479  978
-  211  603  957
-  216  866   94
-  112  698   60
-  847  631  307
-  940  164  253
-  406  133   14
-  380  816  425
-  147  873  429
-  698  987   98
-  534  823  691
-  197  690  754
-  979   39  468
-  928   73  531
-  119   66  920
-  982  810  569
-  476  534  397
-  931  366  182
-  783  104  732
-  131   32  619
-  784  136  530
-   16  933  484
-  995  987  739
-  985   88  977
-   43  919  914
-  540  399  915
-  566  859  257
-  639  419   73
-  727  118  865
-  477  370  834
-  293  434  155
-  422  557  603
-  203  243  754
-  373   15  748
-  466  574  807
-  282  576   70
-  275  365  608
-  987  644  648
-  711  629  717
-  420  410  696
-  252  417  874
-  642   26  202
-  223   23  531
-  545  580  675
-  565  600  521
-  130  745  142
-  264  377  397
-  300  618  253
-  683  331  279
-  440  826  275
-  835  785  266
-  592  264  590
-  257  255  173
-  532   23  620
-  571  749  434
-  988  552  492
-  566  766  234
-  617  818  776
-   45  113  882
-  579  793  114
-  971  243  608
-  979  241  241
-  130   83  634
-   91  361    5
-  311  107  501
-  377  388  496
-  727  849  317
-  323  702  256
-  804  254  189
-   70   11  246
-  752  425  785
-  799  413  882
-  917  133  695
-  959   49  902
-  420  121  412
-  177  170  158
-  828  734  135
-  880  875   75
-  824  556  960
-  857  689  960
-   74  951    2
-  246  687  756
-  311   93  487
-  209  626  886
-   17  545  566
-  963  252  283
-  947  493  805
-  185  493  462
-  728  365  885
-  808  214  528
-  582  780  100
-   30  254  654
-  596  706  553
-  713  968  803
-  123  270  839
-  792  778  475
-  442   95  682
-  931  212  678
-  781  140  439
-  651  645  978
-  137  829  286
-  593  503  895
-  642  215  144
-  687  122  934
-   84  240  919
-  656  515  774
-   51  799  273
-  636  324  924
-  213  161  309
-  509  157  458
-  582    1  727
-  716  269  819
-  978  343  303
-  828  264  708
-  108  620  190
-   12   12  634
-  103  615  579
-  364  286  660
-  809  714  656
-  729  504   10
-  994  366  341
-  433  796   77
-  663  462  353
-  776  687  758
-  751  495  651
-   33  751  753
-  349  919  228
-  204  799  584
-  335  156  563
-  725  191  535
-  731  676  524
-  455  571   10
-  899  379  689
-  773  641  812
-  324  761  421
-  354  557  897
-  571  740  161
-  407  271  856
-  886  393  428
-  286  870  218
-  950  819  347
-  331  847  858
-  498  471  689
-  357  378  775
-  890  503  514
-  201  863  428
-  721  737  796
-  636  178  974
-   14  387  936
-  622  424  144
-   82  201  727
-  127  164  779
-  173  319  326
-  195  748  641
-  469  512  510
-  626  949  405
-  552  542  251
-  192  204  382
-  655  558  631
-  970  519    3
-  918  701  399
-   56  543  403
-  524  848  641
-  620  431  539
-  604  473  824
-  369  105  464
-  575  957  429
-  859  978  199
-  712  381  199
-  941  305  738
-  892  663  937
-  653  963  365
-   70  331  508
-  620  923  682
-  739  122  350
-  288  418  768
-  733  326  520
-  694  472  793
-  725  415  739
-  895  398  201
-  500  157  168
-  727  814  354
-  807  726  340
-  431  329  212
-  635  374  403
-  677   78  347
-  386  559  505
-  385  361  161
-  262  494  621
-  481  237  767
-  318  966  640
-  723  732  546
-  911  652  823
-  958  502  677
-  718  258  834
-   98  666  506
-  929   41  933
-  869  637  605
-  585  156  335
-  490  316  149
-  436  339  323
-  596  948  224
-  275  433  241
-  545  890  155
-  601  413  676
-  893  401  673
-  694  171  403
-  211  110  482
-  267   61  541
-  206  124  256
-  189  353  308
-  351  880   70
-  237  677  380
-  759  754  388
-  465   99  862
-  852  787  925
-  758  890  804
-  252  817  784
-  773  129  860
-  954  102  872
-  743  396  730
-  500  304  173
-  492  399  527
-  413  465  813
-  670  837  933
-  897  424  430
-  782  404   14
-  151   24  418
-  897  260  306
-  811  287  386
-  440   93  449
-  229  185  582
-  136   63  678
-  211  250  940
-  184  400  209
-  122  383  238
-  143  386  111
-  320  194  415
-  925  790  501
-  924  596  614
-  606  733  277
-  886  116  194
-  278  627  189
-  225  536  981
-  487  538  584
-  539    2  793
-  219  456   57
-  341  424  941
-  199  482  921
-  231  241  588
-  711  740  334
-  596  554  323
-  917  164  629
-   19  138  756
-  939   70  225
-  536  432  401
-  137  614   14
-  593  818  402
-  871  280  515
-  268  259  326
-  900   97  376
-   68  699  461
-  546  810  400
-  540  697  676
-  591  125  751
-  159  719  919
-  605  763  898
-  171  845  459
-  115  289  376
-  265  636  317
-  646  225   84
-  663  755   89
-  192  828   12
-  316  523  822
-  310  933  784
-   44  721  873
-  893  873  461
-  898   15  548
-   96  861  726
-    9  837  398
-  238  404   29
-  227  845  428
-  770  764  472
-  960  747  784
-  990  281  811
-   59  597  111
-  930  799  729
-  930  882  758
-  459  961  116
-  484   83  914
-   83  969  994
-  828  423  132
-  346  541  246
-  783  484  303
-  983    7  921
-  216  208  905
-  802  216   54
-    6  121  306
-  609   36  749
-  608   84  626
-   97  705   89
-  200  688  878
-  242  314  802
-  294   66  338
-  768  417  272
-  785  351  266
-   58  505  668
-  791  291  679
-  783  694   43
-  794  468  355
-  777  796  171
-  378  784  426
-  224  510  840
-  557  606  708
-  513  127  189
-  231  976  517
-  772   37  433
-  684  973  324
-   70  661   83
-  914  136  702
-  917  630  710
-  826  894   84
-  373  416  248
-  551  924  226
-  357  646  374
-  890  491  246
-  938  293  519
-   66   42  704
-  537   60  374
-  508   56  405
-  437  751  653
-  681  718  160
-  683  293  800
-  569  288  878
-  692  206  611
-  173  157  399
-  201  492  645
-   98  132  329
-  234  612  711
-  296   54  975
-  651  219  923
-  527  177  138
-  585  598  302
-  552  653  474
-   54  288  358
-  828  631  279
-  854  642  746
-   80   52  645
-  386  346  181
-  488    7  569
-  168  351  533
-  906  186  681
-  833  404  191
-  863  297  526
-  451  555  808
-  336  544  155
-  253  211  838
-  759  819  238
-  921  343  761
-  264  632  690
-  165  424  159
-  121  481  361
-  181  409  439
-   94  972  995
-  696  904  722
-  613  238  422
-  190  281  334
-  385  127  129
-  300  364  234
-  479  768  937
-  883  654   35
-  979  679  959
-  244   51  788
-  275  613  804
-  143  575  210
-  160  168  608
-  330  471  651
-  407  594  410
-  723  576  943
-  268  912  361
-  692  442  760
-  443  288   20
-  382  610  556
-   62  694  568
-  322  257  214
-  253  458  861
-  260  213  829
-   37  137  420
-  668  220  104
-  673  150  435
-  551  466  897
-  390  729  999
-  423  963  763
-  837   36  295
-  854  726  495
-   16  728  389
-  735  246  510
-  218  136  617
-  604  197  140
-  113  355  499
-  631  902  488
-  689  898  212
-  780  826  901
-  556  205  657
-  855  661  288
-  141   34  480
-   27   23  194
-  115   53  393
-  333  287  700
-   68  300  671
-  394  589   28
-  572  248  771
-  454  118  797
-  526  141  300
-  785  377  504
-  886  723  105
-  541  712  470
-  156  128  932
-  479   85  989
-  381  207  162
-  813  839  544
-  143  783  541
-  916  361   24
-  878  133  886
-  986  750  335
-  122  643  864
-  395  460  591
-  387  896  627
-  117  455  109
-    2   14  569
-  873  364  215
-  875  350  554
-   70  878  940
-  234  846   82
-  256  279  901
-  693  990  473
-  951  866  824
-  923  408  891
-   36    5  531
-  954  654  266
-  921  652  434
-  561  701  427
-  232  764  365
-  330  331   73
-   46  813    6
-  380  698  297
-  396  221  289
-  135  867  633
-  814  649  286
-  797  918  827
-  705   58  338
-    6  305  310
-  701  352   28
-  903   97  825
-  693  126  794
-  438  144  592
-  367  932  400
-  320  820  264
-  687  210  652
-  682   84  566
-  671  604  816
-  529  646  267
-  795  654  114
-  955  426  118
-  249  759  102
-  343  581  267
-  341  619  107
-  479   57  341
-  683   32  870
-  630  609  210
-  361  643  803
-  506  856  406
-  580  562  359
-  312  433  154
-  750  379  920
-  448  520  312
-  733  259  899
-   33  786  319
-  579  669   90
-  595  769  242
-  160  985  236
-  654  903  946
-  635   99  802
-   75  158  437
-  467  382  289
-  406  542  548
-  684  417  794
-  729  105  122
-   44  485  689
-  737   15  713
-  970  391   17
-  373  384  729
-  336    1  118
-  814  807  759
-  965  808  828
-  179  181  834
-  242   94  838
-  188  183   82
-  691  402  618
-  984   43  561
-  330  447  872
-  553  581   30
-  884  393  836
-  431  298  837
-  278  389  690
-  976  587  803
-  722  220  538
-  548  208  107
-  629  414  729
-  543  584  672
-  512  431  954
-  475  367  959
-  226  306    9
-  824  774  668
-  188   22  870
-  722  764  300
-  647  803  256
-  410  972   21
-  436  536  278
-  995  577  453
-  670  439  224
-  434  488  572
-   82  317  498
-  559  823  662
-  499  614  196
-  944   14  432
-  618  866  652
-  467  872  289
-  471  722  189
-  923  756   17
-  790  409  195
-  511  500  545
-  667  283  758
-  271  373  283
-  573  686  490
-  659  706  560
-  770  247  633
-  424  169  895
-   47  349  411
-  380  235  805
-  384  546  148
-  747  870  831
-  754  421  910
-  937   15  433
-  188  760  806
-  872  748  418
-  718  556  510
-  165  590  486
-  798   40  177
-  349  923  530
-  795  690  746
-  550  671  360
-  824  442  775
-  331  686  152
-  570  270  926
-  860   64  383
-  408  464  170
-  758  440  349
-  773  434  699
-  780  563  352
-   18  644  621
-  432  663  188
-  420  887  956
-  237  586  788
-  319  526  586
-  544  647  115
-  628  235  511
-  666  408   33
-  670  459  697
-   48  189  692
-  837  708  428
-  462  652  632
-  426  106  457
-  730  744  195
-  700  816  769
-  383  480  923
-  601  612  910
-  559  953  779
-  533  937  240
-  464  123  344
-  579   82   76
-  179  188  373
-    1  641   56
-  688  698   50
-  688  160    4
-  790  364  767
-  202   70  137
-  914  420  674
-  961  657  851
-  578  708  875
-  503   94  776
-  221  143  356
-   34  126  403
-  234   31   78
-  721  949  330
-  675  191  460
-   80  957  651
-  690  580  824
-  461   73  802
-  725  606   51
-  183  857  521
-  708  800  482
-  644  111   37
-  769  778  869
-  883  693  909
-  549  714   43
-  273  246  599
-  637  309  675
-  451  195  552
-  681  408  126
-  422  465   52
-  743  235  144
-  248  586  312
-   42  398  313
-  222  335   21
-  528  312  738
-  856  312  132
-  915   79  610
-  550  605  186
-  566  815  698
-  127  250  717
-  532  129  775
-  604  132  549
-  134   44  247
-  521  815  470
-  370  853  515
-  795  187  851
-  963  295   50
-  757  228  169
-  706  303  120
-  416  133  309
-  956   63   11
-  751  162  301
-  387  632   29
-  257  383  994
-  215  247  994
-  529  606  963
-  770  305  756
-  721  791  971
-  558  531  675
-  253  477  918
-  470   52  615
-  256  335   24
-  301  523  651
-  316  702  637
-  321  721   32
-  591  730  179
-  341  364  146
-  673  120  501
-   31  183  207
-  641  116  463
-  221   54  775
-  262  458  669
-  139  486  904
-  736  260  139
-  406  359  663
-  434  563  753
-  981    6  215
-  423  320  358
-  719  319  415
-  315  375  320
-    7  637  423
-  314  365  175
-  199  687  754
-  174  546    1
-   29  526  754
-  153  402  251
-  787  565  919
-  820  239  876
-  994  614   47
-  958  816  288
-  244  750  275
-  248  890  694
-  628  194  414
-  774  958  466
-  181   34  442
-  569  371  939
-  500  347  740
-  745  123  467
-  614  662  119
-  201  690  352
-  596  974  215
-  508  921  240
-  405  947  317
-  402  372  733
-  298   41  357
-  135  339  759
-  544  683  690
-  584    1  893
-  215  680  501
-  191  453  649
-  952   84  727
-  815  494  293
-  163  168   46
-  136  119  441
-  185  112  474
-  877  830  354
-  497  242  226
-  484  714  178
-  854  570  402
-  873  120  432
-   30  613   50
-  365  529  624
-  969  332  586
-  636  617  153
-  588  669  314
-   12   52  628
-  584  704  642
-   95  199   69
-  979  486  705
-  953  391  698
-  698  471  333
-  302  466   64
-  678   19  376
-  353  860  905
-  236  113  797
-  400  879  962
-  341  805  493
-  661  506  196
-  736  357  644
-  943  352  365
-  484  756  282
-  491  943  262
-  765  494  729
-  321  208  986
-  621  346  290
-  258  706  386
-  179  452  276
-  433  583  153
-  708    2  212
-  193  151  320
-  647  149  299
-  335  951  831
-  661  787  792
-  818  742  477
-  799  964  157
-  726  780  172
-  740  225   24
-  428   39  263
-  388  901  506
-   97  940  413
-   41  454  826
-  324  453  443
-  346   76  938
-  463  595  751
-  854  948  454
-  451  902  507
-  722  961  130
-  695  529  425
-   59  591  467
-  559  623  222
-  991  194  196
-  749  793  245
-  474  327  247
-  346    2  277
-  643  328  135
-  785  264  751
-   35  537  887
-  811  584  685
-  475  903  748
-  471  115  698
-    7  945  449
-  464  880  227
-  287  868  878
-  564   11  850
-  221  623  475
-  314  325  553
-  209  865  621
-   39  655  236
-   95  296  235
-  124  920   21
-  439  473  902
-  334  375  792
-  315  116  768
-  267  736   95
-  703  606  595
-  505  886  514
-  114  168   52
-  301  584  495
-  200  709  527
-  164  422  554
-  246  546  460
-  377  141  223
-  286  323  354
-  810  240   90
-  920  450  425
-  277    8  570
-   28  649   50
-  295  650  534
-  690  187  665
-  674  184  483
-   68  139  376
-  570  430  500
-  590  422  543
-  304   68   43
-  422  666  163
-  501  375  696
-   81  621  813
-   19  981  945
-  410   83  941
-  427  945   25
-  283  408  825
-  281  648  635
-  294  678  615
-  113  936  500
-  554  772  314
-  502  642  624
-  262  318  699
-   88  526  817
-  242  468  161
-  820  179  253
-  580   62  531
-  343  183  422
-  430  161  485
-   26  127  435
-  442   32  517
-  491  243  544
-  552  680  310
-  131  489  457
-  697  162  526
-  897  838  305
-  695  748  335
-  753  936   24
-   46  681  637
-  745  808  617
-  318  251  171
-   49   39  855
-  359  284  725
-  221  837  145
-  581  821  444
-  573  267  318
-  706  969  583
-  722  912  586
-  680   86  869
-  833  546   97
-  865  507  481
-  938  104  386
-  941  217  265
-  360   53  607
-  634  197  476
-  787  659  444
-  368  163  783
-  493  738  345
-  182  539   52
-  764  827  612
-  699  493  663
-  914  384   17
-  495  546  260
-  739  461  275
-  386   91  394
-  804  506  198
-  780  421  269
-  109  669  193
-  457  298  349
-  560  800  331
-  282  153  637
-  160  254  807
-  434  204  476
-  717  759  737
-  629  785   65
-  347  614  790
-  270  663  647
-  188  271  528
-  277  929  591
-  853  744  589
-  704  881  761
-  573  714  627
-  541  689  287
-  540  301  187
-  670  397  368
-  867    8  698
-  869  146  802
-   10  137  104
-  164  575  450
-  507  233  466
-  548  425   46
-  435  824   78
-  334  951   34
-  646  551   99
-   60  829  569
-  501  866  382
-  440  327  222
-  744  132  333
-  800  983  126
-  887  866  451
-   28  599   39
-  833  129  307
-  804  519  319
-  510  746  821
-  639  209  561
-  197  649  333
-  638  644  361
-  754  474  366
-  193  219  106
-  843  536  331
-  483  634  611
-  367  195  592
-  753   71  115
-  934   42   83
-  337   75   85
-  475  304  169
-  672  143  211
-  360  406   74
-  370  119  111
-  351  955  696
-  543  849  785
-  375  576  836
-  288  316  239
-  512  273  786
-  721  407   82
-  998  634  292
-  449  399  284
-  540  316  693
-  430   68  984
-  146  376  482
-  785  134  643
-  157  509  441
-  808  615  552
-  920  564  452
-  407  341  441
-  990  778  211
-  822  325  925
-  368  206  876
-  491  153  126
-   11  373  546
-  854  752  143
-  843  773  660
-  777  472  964
-  359  708  889
-  575  941  882
-  945   22  152
-  968  237  115
-   30  238  110
-  101  504  412
-  119  646  719
-   28  190  336
-  890  301  712
-   11  657  782
-  885  465  361
-  424  669  645
-  528  654  194
-  894  252  667
-  516  299  998
-  370  837  976
-  305  651  194
-  701  447  175
-  470  234  929
-  752  606  965
-  568  370  322
-  226  592  281
-  553  801  330
-  576  228  623
-  639  477  637
-  252  664  998
-  781  215  994
-  446  698   25
-  562  500  980
-  702  444  299
-  971  550  387
-  754  562  439
-  347  896  716
-  242  861  596
-  588  829  323
-  464  211  949
-  481  192   47
-  598   98  963
-  932  960   32
-  933  482  893
-   15  989  888
-  866  735  629
-  636  513  470
-  280  528  944
-  531   66  867
-  284  735  865
-  778  743    3
-  458  131  262
-  772  273  255
-  942  278   50
-  269  151  917
-  502    4  883
-  538  155   68
-  929  850   21
-  126  759  729
-  869  689  711
-  180  359  855
-  299   68  975
-  210  371  205
-  477  183  827
-  922   50  841
-  665  154  312
-  379  848  486
-  450  835  743
-   69  161  515
-  680  535   83
-  692  779  352
-  818  554  389
-  781   89  538
-  746  218  209
-  292  201  652
-  417  375  393
-  916  962  644
-  518  923  561
-  915  469  386
-  142  460  454
-  947  392   89
-  144  840  866
-  205  465  967
-  209  657  650
-  891  322  207
-  800  522  907
-  516  498  994
-  185  806  804
-  179  393  137
-  316  765  892
-  850  756  123
-  494  783  627
-  832   53  659
-   93  949  602
-  666  954  516
-  592   11  210
-  223    4  389
-  221  280  388
-  100  279   50
-  380  589  345
-  385  238  382
-  205  506  359
-   98  280  652
-  396  371  290
-  314  477  454
-  368  692  564
-   48  263  586
-  356  902  922
\ No newline at end of file
diff --git a/adventofcode16/data/advent04.txt b/adventofcode16/data/advent04.txt
deleted file mode 100644 (file)
index 8f99f7a..0000000
+++ /dev/null
@@ -1,991 +0,0 @@
-aczupnetwp-dnlgpyrpc-sfye-dstaatyr-561[patyc]
-jsehsyafy-vqw-ljsafafy-866[nymla]
-tyepcyletzylw-ncjzrpytn-prr-opawzjxpye-743[cnrdl]
-foadouwbu-qvcqczohs-obozmgwg-662[lamjh]
-ckgvutofkj-pkrrehkgt-zkinturume-436[krtue]
-pelbtravp-pnaql-ernpdhvfvgvba-481[szram]
-yflexwxoalrp-ciltbo-tlohpelm-887[bmwep]
-ipvohghykvbz-ihzrla-jbzavtly-zlycpjl-253[lzhvy]
-cybyjqho-whqtu-rqiauj-fkhsxqiydw-322[syzwi]
-tipfxvezt-sleep-tljkfdvi-jvimztv-425[tveif]
-ktiaaqnqml-xtiabqk-oziaa-xczkpiaqvo-616[aiqko]
-ckgvutofkj-xghhoz-gtgreyoy-306[nyhpz]
-molgbzqfib-zovldbkfz-zxkav-lmboxqflkp-341[xlomg]
-ikhcxvmbex-vtgwr-vhtmbgz-mxvaghehzr-111[hvgmx]
-dpssptjwf-fhh-tfswjdft-805[fstdh]
-oaddaeuhq-otaoaxmfq-qzsuzqqduzs-534[qadou]
-dzczkrip-xiruv-sleep-drerxvdvek-685[erdvi]
-jvsvymbs-yhiipa-vwlyhapvuz-149[zfyqn]
-nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-853[sjnfy]
-mbiyqoxsm-lsyrkjkbnyec-nio-wkbuodsxq-614[bkosy]
-jchipqat-uadltg-hidgpvt-375[kcnop]
-jqwpihizlwca-lgm-nqvivkqvo-980[ldeay]
-xfbqpojafe-dipdpmbuf-tfswjdft-493[fdpbj]
-kwvacumz-ozilm-kpwkwtibm-lmxtwgumvb-798[mwkbi]
-eqttqukxg-ejqeqncvg-ocpcigogpv-648[sdtzl]
-dsxxw-bwc-bcnjmwkclr-678[cwbxd]
-jvuzbtly-nyhkl-ibuuf-thuhnltlua-175[ulhtb]
-rdadguja-uadltg-bpgztixcv-401[adgtu]
-atyzghrk-kmm-ktmotkkxotm-930[xzfpe]
-uwtojhynqj-ojqqdgjfs-xjwanhjx-151[waqmk]
-hwdtljsnh-uqfxynh-lwfxx-rfsfljrjsy-567[fhjls]
-xst-wigvix-gspsvjyp-gerhc-erepcwmw-724[uplfw]
-kzgwomvqk-jcvvg-zmamizkp-122[kmvzg]
-sbejpbdujwf-dboez-dpbujoh-dvtupnfs-tfswjdf-623[uxrpz]
-bxaxipgn-vgpst-rwdrdapit-prfjxhxixdc-609[xpdir]
-avw-zljyla-zjhclunly-obua-ayhpupun-981[aluyh]
-nuatmlmdpage-qss-fdmuzuzs-404[btopv]
-oaddaeuhq-otaoaxmfq-dqoquhuzs-716[aoqdu]
-myvybpev-cmkfoxqob-rexd-bomosfsxq-432[khwfc]
-oxaflxzqfsb-zelzlixqb-jxohbqfkd-471[hxkwc]
-fnjyxwrinm-snuuhknjw-anbnjalq-875[ztvnr]
-qfmcusbwq-pibbm-fsqswjwbu-922[bqswf]
-wihmogyl-aluxy-jfumncw-alumm-nluchcha-916[lmuac]
-oxaflxzqfsb-avb-bkdfkbbofkd-757[trzjy]
-ksodcbwnsr-qzoggwtwsr-gqojsbusf-vibh-fsgsofqv-818[gsdca]
-rzvkjiduzy-xcjxjgvoz-gvwjmvojmt-161[zufvq]
-nwlddtqtpo-mldvpe-dezclrp-639[zlnki]
-vkppo-rqiauj-huqsgkyiyjyed-530[yijkp]
-dfcxsqhwzs-qobrm-qcohwbu-fsoqeiwgwhwcb-688[wqbch]
-vxupkizork-xghhoz-aykx-zkyzotm-462[kzoxh]
-zotts-jfumncw-alumm-omyl-nymncha-396[bstha]
-yaxsnlcrun-npp-cajrwrwp-355[nprac]
-bkwzkqsxq-pvygob-nozkbdwoxd-822[bkodq]
-frqvxphu-judgh-fdqgb-frdwlqj-hqjlqhhulqj-595[ezyxq]
-hqtyeqsjylu-sqdto-sedjqydcudj-764[dqjsy]
-fab-eqodqf-omzpk-fdmuzuzs-430[yxkbc]
-gpewwmjmih-glsgspexi-xvemrmrk-204[cynzd]
-kwtwznct-jcvvg-wxmzibqwva-694[cdaps]
-guahyncw-wuhxs-zchuhwcha-396[xwnmj]
-pybgmyargtc-zsllw-dglylagle-912[mcrsp]
-kyelcrga-zyqicr-jyzmpyrmpw-782[yrcmp]
-wsvsdkbi-qbkno-zvkcdsm-qbkcc-myxdksxwoxd-432[kdsbc]
-ltpedcxots-rwdrdapit-advxhixrh-271[drtxa]
-elrkdcdugrxv-sodvwlf-judvv-vklsslqj-465[vdlsj]
-htwwtxnaj-hfsid-htfynsl-ywfnsnsl-281[ghfea]
-nij-mywlyn-xsy-xymcah-682[kiasm]
-zovldbkfz-yrkkv-abmilvjbkq-939[chetn]
-esyfwlau-kusnwfywj-zmfl-ghwjslagfk-398[fwlsa]
-lahxpnwrl-yujbcrl-pajbb-mnyuxhvnwc-147[tzcxk]
-rwcnawjcrxwju-lqxlxujcn-lxwcjrwvnwc-381[hxsdl]
-pbybeshy-pynffvsvrq-wryylorna-jbexfubc-143[ybfre]
-lxaaxbren-kdwwh-bqryyrwp-407[sktqh]
-pybgmyargtc-zyqicr-rpyglgle-106[vsdft]
-jfifqxov-doxab-yxphbq-obxznrfpfqflk-939[nyvhm]
-pualyuhapvuhs-jovjvshal-thuhnltlua-383[lrfob]
-gvcskirmg-tpewxmg-kveww-pskmwxmgw-438[ujily]
-lgh-kwujwl-tmffq-esfsywewfl-242[fwles]
-jyddc-fewoix-hitevxqirx-412[ixdec]
-uzfqdzmfuazmx-otaoaxmfq-ogefayqd-eqdhuoq-222[lbfru]
-ryexqpqhteki-sxesebqju-tufbeocudj-348[tjzhb]
-kfg-jvtivk-sleep-wzeretzex-477[ektvz]
-kzgwomvqk-jcvvg-bmkpvwtwog-174[vgkwm]
-odiih-kdwwh-uxprbcrlb-251[bdhir]
-htqtwkzq-xhfajsljw-mzsy-yjhmstqtld-229[thjqs]
-qjopwxha-xwogap-owhao-914[astye]
-wrs-vhfuhw-edvnhw-hqjlqhhulqj-439[vufmz]
-rdggdhxkt-xcitgcpixdcpa-rpcsn-rdpixcv-stktadebtci-609[cdtip]
-eqttqukxg-fag-eqpvckpogpv-544[jmtpx]
-kdijqrbu-sqdto-seqjydw-iuhlysui-946[bioht]
-fydelmwp-awldetn-rcldd-cplnbftdtetzy-951[kpxim]
-ubhatstkwhnl-unggr-nlxk-mxlmbgz-761[geyqm]
-ocipgvke-gii-fgxgnqrogpv-726[giopv]
-fab-eqodqf-otaoaxmfq-iadwetab-430[azmnb]
-fab-eqodqf-otaoaxmfq-pqhqxabyqzf-456[qafob]
-xekdwvwnzkqo-zua-naoawnyd-784[anwdk]
-sbejpbdujwf-fhh-tbmft-285[mbfsn]
-hwbba-eqpuwogt-itcfg-rncuvke-itcuu-ugtxkegu-648[ugtce]
-hqcfqwydw-fbqijys-whqii-cqdqwucudj-452[ztesw]
-dmpuamofuhq-nmewqf-emxqe-742[meqfu]
-iqmbazulqp-pkq-iadwetab-976[kcxmz]
-lahxpnwrl-ljwmh-lxjcrwp-bnaerlnb-927[lnrwa]
-laffe-lruckx-vaxingyotm-306[aflxc]
-forwcoqhwjs-qcffcgwjs-tzcksf-rsdzcmasbh-220[csfwh]
-yflexwxoalrp-gbiivybxk-abpfdk-731[sjtrd]
-foadouwbu-ibghopzs-pogysh-kcfygvcd-506[ogbcd]
-rtqlgevkng-hnqygt-ugtxkegu-232[zdgob]
-yrwxefpi-fyrrc-asvowlst-880[jmzfi]
-tyepcyletzylw-nlyoj-nzletyr-fdpc-epdetyr-795[jfvnq]
-rkpqxyib-yxphbq-lmboxqflkp-627[vzmla]
-xjinphzm-bmvyz-hvbizodx-ytz-gjbdnodxn-967[jmuws]
-ktfitzbgz-vtgwr-inkvatlbgz-813[tgzbi]
-hqtyeqsjylu-sbqiiyvyut-fbqijys-whqii-vydqdsydw-634[yqisd]
-hcd-gsqfsh-dzoghwq-ufogg-qcbhowbasbh-506[hgboq]
-ryexqpqhteki-uww-qdqboiyi-140[qiewy]
-bkzrrhehdc-qzaahs-cdoknxldms-625[czsmn]
-sawlkjevaz-lhwopey-cnwoo-yqopkian-oanreya-966[znhlt]
-xjgjmapg-hdgdovmt-bmvyz-zbb-yzkgjthzio-577[gzbjm]
-myxcewob-qbkno-lexxi-wkbuodsxq-250[xboek]
-nsyjwsfyntsfq-hfsid-htfynsl-wjfhvznxnynts-255[umtns]
-kpvgtpcvkqpcn-ecpfa-ewuvqogt-ugtxkeg-596[ehsca]
-vkrhzxgbv-cxeeruxtg-ftgtzxfxgm-579[ymast]
-pbeebfvir-fpniratre-uhag-genvavat-663[smznt]
-vehmsegxmzi-glsgspexi-hitpscqirx-802[jszht]
-tyepcyletzylw-nlyoj-nzletyr-cpdplcns-223[lycen]
-jxdkbqfz-oxaflxzqfsb-avb-lmboxqflkp-523[mzvny]
-tcfkqcevkxg-tcddkv-uvqtcig-336[cdsln]
-ide-htrgti-hrpktcvtg-wjci-ldgzhwde-947[tdghi]
-ojk-nzxmzo-kgvnodx-bmvnn-ozxcijgjbt-213[nojxz]
-avw-zljyla-msvdly-yljlpcpun-539[lyajp]
-rdchjbtg-vgpst-rpcsn-rdpixcv-htgkxrth-661[rtcgh]
-xlrypetn-dnlgpyrpc-sfye-dezclrp-353[pelry]
-enqvbnpgvir-enoovg-erfrnepu-455[ftlpj]
-xjinphzm-bmvyz-xviyt-xjvodib-pnzm-oznodib-291[mlybz]
-rwcnawjcrxwju-kjbtnc-bqryyrwp-511[tkyns]
-gokzyxsjon-pvygob-nofovyzwoxd-458[ndtfs]
-bjfutsneji-hfsid-htfynsl-rfwpjynsl-489[fsjnh]
-ydjuhdqjyedqb-rqiauj-qdqboiyi-452[qdijy]
-enzcntvat-rtt-genvavat-351[lznyt]
-rdadguja-qjccn-advxhixrh-791[yncim]
-fmsledevhsyw-ikk-irkmriivmrk-646[nlxzm]
-jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-471[oxpbf]
-jqwpihizlwca-zijjqb-aitma-408[gzpmw]
-pyknyegle-afmamjyrc-bcqgel-808[gynip]
-zbytomdsvo-mkxni-bocokbmr-406[obmkc]
-wfummczcyx-luvvcn-fuvilunils-526[bavmt]
-hwdtljsnh-gfxpjy-rfsfljrjsy-541[gpszy]
-lsyrkjkbnyec-oqq-gybucryz-848[ybckq]
-oaddaeuhq-vqxxknqmz-xasuefuoe-378[rzmqe]
-vhglnfxk-zktwx-fbebmtkr-zktwx-wrx-vhgmtbgfxgm-813[xepwt]
-yrwxefpi-gerhc-hitevxqirx-594[eirxh]
-mvydjvxodqz-xviyt-xjvodib-rjmfncjk-265[cqirj]
-kdijqrbu-tou-kiuh-juijydw-140[uijdk]
-ugjjgkanw-usfvq-vwkayf-970[rntsw]
-froruixo-fdqgb-ilqdqflqj-569[cylni]
-gpsxdprixkt-hrpktcvtg-wjci-gtprfjxhxixdc-999[xptcg]
-kwvacumz-ozilm-akidmvomz-pcvb-nqvivkqvo-460[emnrk]
-pejji-zvkcdsm-qbkcc-domrxyvyqi-484[cdijk]
-rdadguja-xcitgcpixdcpa-qphzti-bpgztixcv-791[cipad]
-rkpqxyib-zxkav-zlxqfkd-qoxfkfkd-965[qiftn]
-bkzrrhehdc-bnmrtldq-fqzcd-atmmx-qdrdzqbg-937[dqrbm]
-eqttqukxg-rtqlgevkng-dwppa-fgxgnqrogpv-570[gxetc]
-zbytomdsvo-mkxni-myxdksxwoxd-510[xdmok]
-ymszqfuo-rxaiqd-dqmocgueufuaz-274[umtwy]
-pelbtravp-ovbunmneqbhf-qlr-znantrzrag-663[xlyio]
-rdadguja-ytaanqtpc-gtprfjxhxixdc-141[krcaf]
-etaqigpke-hnqygt-eqpvckpogpv-362[pegqk]
-rtqlgevkng-etaqigpke-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-206[gxszf]
-fubrjhqlf-fkrfrodwh-sxufkdvlqj-777[pozts]
-wfintfhynaj-wfggny-xjwanhjx-957[nfjwa]
-xcitgcpixdcpa-bpvctixr-qphzti-gthtpgrw-479[zjlmc]
-gntmfefwitzx-hfsid-fsfqdxnx-697[oanif]
-xgjougizobk-jek-jkvgxzsktz-384[kgjzo]
-nzydfxpc-rclop-mldvpe-cpdplcns-925[pcdln]
-ltpedcxots-qphzti-gtrtxkxcv-739[txcpd]
-gvaaz-fhh-mphjtujdt-233[hajtd]
-jchipqat-rpcsn-gtprfjxhxixdc-297[cpxhi]
-gsvvswmzi-gerhc-tyvglewmrk-308[zbdcy]
-dmybmsuzs-omzpk-oamfuzs-pqhqxabyqzf-508[mzqsa]
-iruzfrtkzmv-treup-tfrkzex-jkfirxv-295[rfktz]
-pdjqhwlf-mhoobehdq-vwrudjh-127[hdjoq]
-rgndvtcxr-hrpktcvtg-wjci-apqdgpidgn-375[jdrhb]
-sbqiiyvyut-isqludwuh-xkdj-efuhqjyedi-114[qjzpn]
-lahxpnwrl-npp-nwprwnnarwp-459[ontmq]
-zntargvp-onfxrg-fnyrf-871[fnrga]
-molgbzqfib-avb-absbilmjbkq-601[bailm]
-kpvgtpcvkqpcn-tcddkv-wugt-vguvkpi-492[vkpcg]
-jfifqxov-doxab-zxkav-zlkqxfkjbkq-341[kxfqa]
-qfmcusbwq-dzoghwq-ufogg-fsqswjwbu-220[zbjty]
-xjinphzm-bmvyz-mvwwdo-yzkgjthzio-785[zmhij]
-ejpanjwpekjwh-ydkykhwpa-owhao-186[hqlfd]
-nzydfxpc-rclop-prr-cplnbftdtetzy-483[pcrtd]
-kwtwznct-rmttgjmiv-amzdqkma-590[mtakw]
-muqfedyput-fbqijys-whqii-iqbui-790[gjxky]
-egdytrixat-rgndvtcxr-rpcsn-jhtg-ithixcv-115[trcgi]
-fab-eqodqf-rxaiqd-mzmxkeue-404[eqadf]
-zotts-xsy-guleyncha-708[ymnbi]
-mbiyqoxsm-pvygob-gybucryz-536[zbyxv]
-dmybmsuzs-bxmefuo-sdmee-pqhqxabyqzf-716[mbeqs]
-qspkfdujmf-ezf-fohjoffsjoh-519[fjohs]
-nwlddtqtpo-prr-xlcvpetyr-249[owkmz]
-amlqskcp-epybc-aylbw-amyrgle-bctcjmnkclr-808[clabm]
-qspkfdujmf-qmbtujd-hsbtt-eftjho-727[tigys]
-pualyuhapvuhs-thnulapj-msvdly-ylzlhyjo-877[lhuya]
-diozmivodjivg-zbb-nzmqdxzn-629[zdibm]
-yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-qerekiqirx-126[erixk]
-qlm-pbzobq-zxkav-zlxqfkd-zrpqljbo-pbosfzb-575[phqza]
-irgyyolokj-lruckx-aykx-zkyzotm-904[ubkvy]
-cebwrpgvyr-pnaql-pbngvat-bcrengvbaf-793[bagnp]
-wlsiayhcw-wifilzof-wuhxs-mylpcwym-630[wilyc]
-nglmtuex-ktuubm-nlxk-mxlmbgz-215[egtsz]
-sbejpbdujwf-dboez-nbobhfnfou-883[jpkmo]
-qzoggwtwsr-qobrm-gsfjwqsg-480[xkwvm]
-nwzekwypera-oywrajcan-dqjp-wymqeoepekj-472[zeydw]
-sawlkjevaz-ywjzu-yqopkian-oanreya-836[ayejk]
-pybgmyargtc-afmamjyrc-rpyglgle-470[zgmsu]
-nzwzcqfw-qwzhpc-cplnbftdtetzy-977[zctwf]
-lhkhszqx-fqzcd-okzrshb-fqzrr-cdudknoldms-651[defrs]
-ugfkmewj-yjsvw-owshgfarwv-tskcwl-wfyafwwjafy-294[wfajs]
-gpbepvxcv-gpqqxi-stktadebtci-609[npyad]
-pxtihgbsxw-vahvhetmx-hixktmbhgl-397[pvcfe]
-guahyncw-vohhs-fiacmncwm-656[chamn]
-wfruflnsl-uqfxynh-lwfxx-wjfhvznxnynts-463[fnxlw]
-lzfmdshb-cxd-dmfhmddqhmf-703[dmfhb]
-gzefmnxq-eomhqzsqd-tgzf-oazfmuzyqzf-118[zfqme]
-udskkaxawv-usfvq-ugslafy-hmjuzskafy-658[asufk]
-ugjjgkanw-vqw-ksdwk-112[kwgja]
-enqvbnpgvir-cynfgvp-tenff-fuvccvat-975[vfnce]
-fydelmwp-ojp-nfdezxpc-dpcgtnp-353[gziom]
-fmsledevhsyw-gpewwmjmih-glsgspexi-tyvglewmrk-178[egmsw]
-shmml-enoovg-freivprf-585[efmor]
-bnqqnrhud-atmmx-qdrdzqbg-651[qdbmn]
-pxtihgbsxw-vahvhetmx-nlxk-mxlmbgz-943[xhmbg]
-xfbqpojafe-dipdpmbuf-tbmft-441[wuizc]
-zsxyfgqj-uqfxynh-lwfxx-ijxnls-749[futrq]
-oaddaeuhq-nmewqf-dqmocgueufuaz-508[mwlcv]
-buzahisl-zjhclunly-obua-zavyhnl-201[kzylj]
-yhwooebeaz-iwcjapey-oywrajcan-dqjp-zaoecj-524[aejoc]
-bwx-amkzmb-qvbmzvibqwvit-lgm-zmikycqaqbqwv-772[dubva]
-oxmeeuruqp-ngzzk-fqotzaxask-638[zaeko]
-xfbqpojafe-qmbtujd-hsbtt-efwfmpqnfou-363[fbqte]
-iehepwnu-cnwza-xqjju-nayaerejc-472[eajnc]
-ytu-xjhwjy-jll-ijxnls-385[moyjn]
-nvrgfezqvu-treup-tfrkzex-wzeretzex-997[fpvnt]
-kwvacumz-ozilm-moo-camz-bmabqvo-434[sanvt]
-lxaaxbren-ouxfna-bjunb-277[abnxu]
-gpsxdprixkt-uadltg-tcvxcttgxcv-453[txcgd]
-owshgfarwv-jsttal-hmjuzskafy-658[asfhj]
-pbafhzre-tenqr-qlr-ynobengbel-403[ebnrl]
-yaxsnlcrun-mhn-jlzdrbrcrxw-121[wngsc]
-bgmxkgtmbhgte-vtgwr-vhtmbgz-tgterlbl-995[gtbme]
-nvrgfezqvu-avccpsvre-tljkfdvi-jvimztv-269[vcefi]
-apwmeclga-pyzzgr-dglylagle-158[auvsi]
-qczcftiz-pogysh-rsgwub-350[kcdvs]
-qlm-pbzobq-gbiivybxk-abpfdk-211[bikpq]
-crwwv-rkpqxyib-yrkkv-cfkxkzfkd-419[krcfv]
-sbnqbhjoh-cbtlfu-tupsbhf-285[bhfst]
-qlm-pbzobq-avb-bkdfkbbofkd-159[golnc]
-nchhg-jiasmb-lmaqov-902[dpmcw]
-tagzsrsjvgmk-jsttal-umklgewj-kwjnauw-944[fsqml]
-rkpqxyib-yxphbq-jxkxdbjbkq-601[npbtf]
-ujqgywfau-tmffq-hmjuzskafy-736[zmnlk]
-ujqgywfau-hdsklau-yjskk-umklgewj-kwjnauw-190[kujwa]
-uqtqbizg-ozilm-jcvvg-lmxizbumvb-850[mhanw]
-yhtwhnpun-ihzrla-klclsvwtlua-591[lkqzn]
-sbqiiyvyut-sqdto-seqjydw-sedjqydcudj-738[warvn]
-bwx-amkzmb-uqtqbizg-ozilm-moo-kwvbiqvumvb-746[wystg]
-tipfxvezt-vxx-cfxzjkztj-555[xtzfj]
-cjpibabsepvt-cvooz-sftfbsdi-571[myqsb]
-ymszqfuo-fab-eqodqf-pkq-xmnadmfadk-274[tkbds]
-wlqqp-treup-tfrkzex-jkfirxv-581[refkp]
-lnkfaypeha-fahhuxawj-wjwhuoeo-550[ahwef]
-lsyrkjkbnyec-oqq-ckvoc-874[azsyv]
-gvcskirmg-fewoix-wlmttmrk-360[mgikr]
-irdgrxzex-tipfxvezt-treup-tfrkzex-cfxzjkztj-607[txzer]
-avw-zljyla-zjhclunly-obua-yljlpcpun-617[lajuy]
-nwzekwypera-lhwopey-cnwoo-hkceopeyo-134[zulqp]
-vkppo-sqdto-seqjydw-jhqydydw-114[dqyjo]
-zixppfcfba-zxkav-zlkqxfkjbkq-679[txhzn]
-sbnqbhjoh-dboez-sftfbsdi-623[bsdfh]
-qjopwxha-bhksan-zalhkuiajp-316[ahjkp]
-yhtwhnpun-thnulapj-ibuuf-klzpnu-773[unhpl]
-uwtojhynqj-kqtbjw-wjfhvznxnynts-827[ntyqj]
-jef-iushuj-rkddo-ijehqwu-504[biekf]
-gspsvjyp-tpewxmg-kveww-gywxsqiv-wivzmgi-672[sryce]
-rgllk-eomhqzsqd-tgzf-etubbuzs-118[zbegl]
-shmml-pubpbyngr-ynobengbel-403[bnegl]
-gsrwyqiv-kvehi-fewoix-wivzmgiw-256[rimyz]
-iuxxuyobk-yigbktmkx-natz-xkykgxin-852[kxiyb]
-excdklvo-oqq-vklybkdybi-744[utifh]
-ojk-nzxmzo-agjrzm-xpnojhzm-nzmqdxz-915[zmjno]
-qspkfdujmf-sbccju-eftjho-103[byjhc]
-fodvvlilhg-mhoobehdq-whfkqrorjb-699[taskb]
-aflwjfslagfsd-usfvq-ogjckzgh-814[emsnh]
-sebehvkb-uww-tulubefcudj-712[ubewc]
-egdytrixat-gpbepvxcv-hrpktcvtg-wjci-hidgpvt-531[vzdcg]
-nsyjwsfyntsfq-zsxyfgqj-gzssd-wjxjfwhm-749[sgmhv]
-ktfitzbgz-yehpxk-kxvxbobgz-761[ryzea]
-tcrjjzwzvu-irsszk-rthlzjzkzfe-503[ocepg]
-dfcxsqhwzs-pibbm-sbuwbssfwbu-558[tocys]
-nwzekwypera-bhksan-odellejc-758[eakln]
-qfmcusbwq-qobrm-qcohwbu-fsoqeiwgwhwcb-402[cpzsy]
-cvabijtm-zijjqb-uizsmbqvo-434[btzma]
-irdgrxzex-srjbvk-glityrjzex-867[rxegi]
-rdadguja-tvv-gtrtxkxcv-609[tvadg]
-wdjcvuvmyjpn-zbb-mznzvmxc-213[ndmaz]
-vagreangvbany-sybjre-nanylfvf-507[bryme]
-vjpwncrl-mhn-bqryyrwp-979[rnpwy]
-jqwpihizlwca-ntwemz-abwziom-642[iyzsa]
-jchipqat-rwdrdapit-detgpixdch-921[dipta]
-vqr-ugetgv-tcddkv-eqpvckpogpv-440[vgpcd]
-ajyqqgdgcb-aylbw-amyrgle-qyjcq-756[qyagb]
-fbebmtkr-zktwx-utldxm-nlxk-mxlmbgz-553[onbvf]
-hwdtljsnh-kqtbjw-ijajqturjsy-827[jthqs]
-sedikcuh-whqtu-sxesebqju-udwyduuhydw-556[rvudf]
-ipvohghykvbz-tpspahyf-nyhkl-yhiipa-huhsfzpz-123[hpyiz]
-fubrjhqlf-mhoobehdq-oderudwrub-153[bdhor]
-mbggf-zjhclunly-obua-dvyrzovw-695[bglou]
-houngfgxjuay-igtje-aykx-zkyzotm-176[qcita]
-lugjuacha-mwupyhayl-bohn-xyjulngyhn-318[gnftc]
-rdggdhxkt-rpcsn-rdpixcv-itrwcdadvn-505[uancd]
-yaxsnlcrun-ouxfna-jwjuhbrb-199[xnmwj]
-yrwxefpi-tpewxmg-kveww-wlmttmrk-334[rfqkl]
-ktwbhtvmbox-unggr-kxtvjnblbmbhg-215[bgthk]
-amlqskcp-epybc-bwc-pcyaosgqgrgml-600[cgpab]
-ujqgywfau-usfvq-ugslafy-jwuwanafy-606[uafwy]
-nwzekwypera-lhwopey-cnwoo-lqnydwoejc-134[xithv]
-nwzekwypera-acc-naoawnyd-160[itvch]
-luxciuwncpy-ohmnuvfy-yaa-wihnuchgyhn-526[hnuyc]
-ygcrqpkbgf-ejqeqncvg-tgegkxkpi-674[gekqc]
-mtzslklcozfd-qwzhpc-nfdezxpc-dpcgtnp-223[ucwob]
-tinnm-tzcksf-zcuwghwqg-948[nmktj]
-rdchjbtg-vgpst-hrpktcvtg-wjci-itrwcdadvn-453[ngtzh]
-yrwxefpi-nippcfier-hizipstqirx-932[ipref]
-cvabijtm-xtiabqk-oziaa-kcabwumz-amzdqkm-590[mpqzo]
-dpmpsgvm-dipdpmbuf-efqmpznfou-259[pmdfu]
-ynukcajey-nwxxep-zarahkliajp-238[ytaej]
-zbytomdsvo-mkxni-mykdsxq-nocsqx-770[mosxd]
-tagzsrsjvgmk-xdgowj-jwuwanafy-814[efhpk]
-xqvwdeoh-fdqgb-rshudwlrqv-127[jpkat]
-kpvgtpcvkqpcn-fag-qrgtcvkqpu-596[pcgkq]
-zlkprjbo-doxab-gbiivybxk-obpbxoze-393[boxik]
-zbytomdsvo-mrymyvkdo-domrxyvyqi-744[ymodv]
-jvuzbtly-nyhkl-qlssfilhu-klwhyatlua-695[lhuya]
-nzydfxpc-rclop-nsznzwlep-xlylrpxpye-145[plnxy]
-atyzghrk-xghhoz-rghuxgzuxe-748[ghxzr]
-vhglnfxk-zktwx-ietlmbv-zktll-ftkdxmbgz-787[wbspa]
-njmjubsz-hsbef-dipdpmbuf-vtfs-uftujoh-623[fubjs]
-pyknyegle-aylbw-jmegqrgaq-756[egyal]
-bgmxkgtmbhgte-lvtoxgzxk-angm-vhgmtbgfxgm-137[gmtxb]
-ydjuhdqjyedqb-vbemuh-jusxdebewo-946[debju]
-jxdkbqfz-zxkav-zlxqfkd-mrozexpfkd-263[kxzdf]
-nbhofujd-dipdpmbuf-pqfsbujpot-597[pbdfu]
-wrs-vhfuhw-fdqgb-vklsslqj-647[sfhlq]
-vkrhzxgbv-vtgwr-ehzblmbvl-449[knuzb]
-gsrwyqiv-kvehi-fyrrc-pefsvexsvc-750[versc]
-hqcfqwydw-vbemuh-ixyffydw-270[fwydh]
-vetllbybxw-vkrhzxgbv-lvtoxgzxk-angm-ybgtgvbgz-527[jxrwq]
-bkzrrhehdc-eknvdq-cdrhfm-365[dhrce]
-cybyjqho-whqtu-rkddo-qsgkyiyjyed-530[ydqhj]
-ckgvutofkj-hatte-ynovvotm-332[tovka]
-sawlkjevaz-zua-iwngapejc-758[jzwql]
-mvhkvbdib-kgvnodx-bmvnn-gjbdnodxn-551[bmkyo]
-enzcntvat-fpniratre-uhag-grpuabybtl-689[sqkoh]
-bqvvu-acc-oanreyao-108[acovb]
-tyepcyletzylw-nlyoj-nzletyr-nfdezxpc-dpcgtnp-275[yelnp]
-fbebmtkr-zktwx-lvtoxgzxk-angm-kxlxtkva-839[kxtab]
-ojk-nzxmzo-wvnfzo-vivgtndn-707[mlndw]
-tpspahyf-nyhkl-qlssfilhu-klwsvftlua-487[iewds]
-shoewudys-isqludwuh-xkdj-husuylydw-868[tlyhz]
-qzoggwtwsr-qobrm-oqeiwgwhwcb-116[wgoqb]
-zlkprjbo-doxab-yxphbq-pxibp-237[ocanz]
-iruzfrtkzmv-avccpsvre-vexzevvizex-893[nyktl]
-hqtyeqsjylu-hqrryj-tulubefcudj-894[ujqye]
-zlkprjbo-doxab-fkqbokxqflkxi-mixpqfz-doxpp-xznrfpfqflk-523[fxkpo]
-dpmpsgvm-sbccju-dvtupnfs-tfswjdf-129[neysa]
-qcbgiasf-ufors-dzoghwq-ufogg-zopcfohcfm-246[yhmkz]
-esyfwlau-ugjjgkanw-usfvq-kzahhafy-242[wnzhb]
-mbiyqoxsm-lkcuod-nozkbdwoxd-432[odbkm]
-usfvq-ugslafy-vwhdgqewfl-632[fglqs]
-gokzyxsjon-zvkcdsm-qbkcc-oxqsxoobsxq-484[xrkfl]
-hdgdovmt-bmvyz-wvnfzo-gjbdnodxn-395[bwicg]
-sehheiylu-fhezusjybu-rkddo-udwyduuhydw-530[udhye]
-glrcplyrgmlyj-aylbw-amyrgle-nspafyqgle-210[dmuny]
-aflwjfslagfsd-jsttal-xafsfuafy-138[faslj]
-yuxufmdk-sdmpq-iqmbazulqp-otaoaxmfq-pqbxakyqzf-586[qamfp]
-jef-iushuj-sxesebqju-ixyffydw-270[iztnj]
-zvyvgnel-tenqr-enzcntvat-ohaal-ratvarrevat-793[atven]
-yuxufmdk-sdmpq-vqxxknqmz-ogefayqd-eqdhuoq-612[qdmux]
-yhtwhnpun-kfl-ylhjxbpzpapvu-357[phlnu]
-egdytrixat-qjccn-bpcpvtbtci-557[mtpgc]
-wsvsdkbi-qbkno-mkxni-mykdsxq-ecob-docdsxq-120[dksbo]
-xtwtelcj-rclop-ojp-dstaatyr-873[omnal]
-wifilzof-jfumncw-alumm-xypyfijgyhn-318[evfso]
-mvydjvxodqz-agjrzm-hvivbzhzio-655[vzdhi]
-jsehsyafy-usfvq-ugslafy-jwuwanafy-840[afsyu]
-myxcewob-qbkno-nio-bocokbmr-900[obckm]
-ipvohghykvbz-wshzapj-nyhzz-vwlyhapvuz-539[hzvpy]
-tbxmlkfwba-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-185[bkopz]
-rdadguja-eaphixr-vgphh-itrwcdadvn-869[nfpxs]
-lugjuacha-jfumncw-alumm-zchuhwcha-734[uachm]
-jsehsyafy-jsttal-jwsuimakalagf-762[mnvlh]
-zixppfcfba-yrkkv-absbilmjbkq-393[ihgyz]
-bxaxipgn-vgpst-rdchjbtg-vgpst-rpcsn-rdpixcv-hpath-817[pgtch]
-rtqlgevkng-ejqeqncvg-hkpcpekpi-154[xpgty]
-laffe-hgyqkz-xkikobotm-488[kfoab]
-jfifqxov-doxab-zxkav-zlxqfkd-qoxfkfkd-419[ubaro]
-myxcewob-qbkno-cmkfoxqob-rexd-zebmrkcsxq-952[boxce]
-apuut-wvnfzo-rjmfncjk-447[fjnua]
-lejkrscv-tfcfiwlc-avccpsvre-fgvirkzfej-113[cfver]
-nglmtuex-cxeeruxtg-kxvxbobgz-215[xegbt]
-sgmtkzoi-kmm-xkgiwaoyozout-748[qrkst]
-amppmqgtc-djmucp-rcaflmjmew-912[bcvna]
-xst-wigvix-fyrrc-wepiw-438[ygref]
-dzczkrip-xiruv-jtrmvexvi-ylek-fgvirkzfej-295[irvek]
-diozmivodjivg-xviyt-xjvodib-zibdizzmdib-265[zmrey]
-rgndvtcxr-ytaanqtpc-stepgibtci-661[tcagi]
-xgsvgmotm-hgyqkz-jkyomt-358[ajyhb]
-zloolpfsb-yxphbq-ixyloxqlov-393[loxbp]
-zilqwikbqdm-jiasmb-uizsmbqvo-668[ibmqs]
-rtqlgevkng-rncuvke-itcuu-ucngu-206[ucgne]
-dmybmsuzs-yuxufmdk-sdmpq-eomhqzsqd-tgzf-iadwetab-482[nkqyl]
-vetllbybxw-ktuubm-hixktmbhgl-345[ikqop]
-bwx-amkzmb-jcvvg-ikycqaqbqwv-954[symcn]
-ubhatstkwhnl-ynssr-lvtoxgzxk-angm-kxlxtkva-163[ktxal]
-zlilocri-yxphbq-pefmmfkd-471[filmp]
-yflexwxoalrp-zlkprjbo-doxab-zxkav-zlxqfkd-qoxfkfkd-419[xkflo]
-oxaflxzqfsb-zelzlixqb-xznrfpfqflk-393[flxzq]
-ixccb-vfdyhqjhu-kxqw-ghyhorsphqw-101[pzgst]
-pybgmyargtc-qaytclecp-fslr-sqcp-rcqrgle-860[crglp]
-zbytomdsvo-mkxni-kmaescsdsyx-562[smdko]
-hwbba-dwppa-ocpcigogpv-570[pabcg]
-eza-dpncpe-nlyoj-nzletyr-wlmzclezcj-171[elzcn]
-tbxmlkfwba-mixpqfz-doxpp-zlkqxfkjbkq-159[kxbfp]
-vetllbybxw-yehpxk-ehzblmbvl-657[blehv]
-zuv-ykixkz-jek-lotgtiotm-852[ktioz]
-fnjyxwrinm-mhn-mnyjacvnwc-277[zgpnw]
-odiih-ljwmh-lxjcrwp-mnenuxyvnwc-615[nwchi]
-wfummczcyx-wuhxs-qilembij-838[mciuw]
-sno-rdbqds-bgnbnkzsd-bnmszhmldms-859[sbdnm]
-nvrgfezqvu-gcrjkzt-xirjj-ivjvrity-555[ylfxv]
-encuukhkgf-uecxgpigt-jwpv-ujkrrkpi-622[kugpc]
-lnkfaypeha-xqjju-qoan-paopejc-446[ajpen]
-kmjezxodgz-ytz-gvwjmvojmt-109[jmzgo]
-ygcrqpkbgf-hnqygt-octmgvkpi-128[gckpq]
-jxdkbqfz-mixpqfz-doxpp-tlohpelm-107[pxdfl]
-xjgjmapg-xviyt-xjvodib-adivixdib-759[ixdjv]
-laffe-jek-sgtgmksktz-644[vuenb]
-pbafhzre-tenqr-enoovg-ratvarrevat-975[ymshj]
-lqwhuqdwlrqdo-vfdyhqjhu-kxqw-uhvhdufk-959[kzlvy]
-rflsjynh-jll-zxjw-yjxynsl-697[jlyns]
-wrs-vhfuhw-sodvwlf-judvv-ghvljq-361[vhwdf]
-ynssr-unggr-tvjnblbmbhg-163[bgnrs]
-jyfvnlupj-jvsvymbs-yhiipa-zopwwpun-903[nrdma]
-kzeed-hfsid-uzwhmfxnsl-515[uoyvx]
-ide-htrgti-uadltg-gtprfjxhxixdc-375[tdgix]
-sorozgxe-mxgjk-hatte-vaxingyotm-358[fwxei]
-ydjuhdqjyedqb-fbqijys-whqii-jusxdebewo-582[nuzsj]
-yknnkoera-xwogap-paydjkhkcu-498[kanop]
-nzydfxpc-rclop-upwwjmply-opdtry-691[pycdl]
-dlhwvupglk-jhukf-jvhapun-zlycpjlz-409[lhjpu]
-kwvacumz-ozilm-moo-bmkpvwtwog-694[mowkv]
-kmjezxodgz-wpiit-mzxzdqdib-863[anvbu]
-xlrypetn-nsznzwlep-xlylrpxpye-587[znfwt]
-pybgmyargtc-qaytclecp-fslr-umpiqfmn-600[nzvej]
-etyyx-qzaahs-lzqjdshmf-781[ahqsy]
-ovbunmneqbhf-wryylorna-znantrzrag-221[pnazx]
-gzefmnxq-bxmefuo-sdmee-ymzmsqyqzf-352[lgvpu]
-ixeumktoi-jek-jkbkruvsktz-488[mzeun]
-dzczkrip-xiruv-avccpsvre-glityrjzex-321[eflmp]
-wfruflnsl-hfsid-fhvznxnynts-307[fnshl]
-vkppo-rkddo-iqbui-218[dikop]
-muqfedyput-zubboruqd-mehaixef-452[inbaj]
-ftzgxmbv-cxeeruxtg-nlxk-mxlmbgz-683[xgmbe]
-htsxzrjw-lwfij-uqfxynh-lwfxx-hzxytrjw-xjwanhj-827[xjwhf]
-qekrixmg-wgezirkiv-lyrx-tyvglewmrk-282[regik]
-ktiaaqnqml-jiasmb-apqxxqvo-226[asvyf]
-lejkrscv-irdgrxzex-srjbvk-kvtyefcfxp-165[rekvx]
-hvbizodx-nxvqzibzm-cpio-hvmfzodib-291[izbov]
-ltpedcxots-tvv-rjhidbtg-htgkxrt-297[tdghr]
-dlhwvupglk-mbggf-jovjvshal-zlycpjlz-565[lgjvh]
-xfbqpojafe-tdbwfohfs-ivou-sfbdrvjtjujpo-779[fjobd]
-kmjezxodgz-xviyt-gvwjmvojmt-577[flhas]
-jshzzpmplk-jhukf-jvhapun-vwlyhapvuz-669[hpjuv]
-tfejldvi-xiruv-gcrjkzt-xirjj-drerxvdvek-295[dpsef]
-zotts-yaa-lymyulwb-968[skymd]
-rmn-qcapcr-zyqicr-umpiqfmn-704[cmqri]
-xfbqpojafe-cbtlfu-qvsdibtjoh-727[bfjoq]
-ykhknbqh-nwxxep-oanreyao-732[naehk]
-raphhxuxts-hrpktcvtg-wjci-hidgpvt-921[hmzng]
-yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-hizipstqirx-932[mdsza]
-xjgjmapg-xviyt-vivgtndn-603[utnks]
-cxy-bnlanc-mhn-vjwjpnvnwc-745[mtsvn]
-ujoon-gpbepvxcv-eaphixr-vgphh-uxcpcrxcv-687[pcvxh]
-ykjoqian-cnwza-iwcjapey-lhwopey-cnwoo-opknwca-264[owacn]
-lnkfaypeha-oywrajcan-dqjp-zalwnpiajp-108[apjnl]
-ktwbhtvmbox-yehpxk-mktbgbgz-293[cndif]
-hqcfqwydw-cqwdujys-rqiauj-qsgkyiyjyed-738[qydjw]
-amlqskcp-epybc-zyqicr-kylyeckclr-600[sdrzj]
-bnmrtldq-fqzcd-rbzudmfdq-gtms-zbpthrhshnm-443[dmbhq]
-nwlddtqtpo-nlyoj-nzletyr-epnsyzwzrj-379[tyrzv]
-cvabijtm-kpwkwtibm-lmxtwgumvb-980[mbtwi]
-amlqskcp-epybc-afmamjyrc-jyzmpyrmpw-574[mpyac]
-aflwjfslagfsd-vqw-dstgjslgjq-424[sfgjl]
-willimcpy-zfiqyl-xymcah-110[ilycm]
-kpvgtpcvkqpcn-lgnnadgcp-ujkrrkpi-128[knmqz]
-wyvqljapsl-buzahisl-ibuuf-lunpullypun-409[wyhza]
-amlqskcp-epybc-pyzzgr-pcacgtgle-210[cpgae]
-xtwtelcj-rclop-mldvpe-dstaatyr-821[nkabu]
-pdjqhwlf-gbh-sxufkdvlqj-751[cdmbz]
-wkqxodsm-zvkcdsm-qbkcc-ecob-docdsxq-432[cdkoq]
-xjmmjndqz-wpiit-gjbdnodxn-811[djnim]
-zlkprjbo-doxab-zelzlixqb-absbilmjbkq-939[blzai]
-htqtwkzq-xhfajsljw-mzsy-ywfnsnsl-619[lfsnu]
-zhdsrqlchg-mhoobehdq-xvhu-whvwlqj-361[hqdlo]
-tcfkqcevkxg-tcorcikpi-ejqeqncvg-uvqtcig-544[lsyzm]
-kwtwznct-kivlg-zmamizkp-824[ixjen]
-bkzrrhehdc-qzaahs-rghoohmf-287[hraoz]
-lxuxaodu-mhn-cajrwrwp-303[aruwx]
-tcorcikpi-dcumgv-octmgvkpi-700[vygzd]
-crwwv-zlkprjbo-doxab-yxphbq-bkdfkbbofkd-809[bkdof]
-xgvnndadzy-xcjxjgvoz-ncdkkdib-447[dnxcg]
-elrkdcdugrxv-fkrfrodwh-xvhu-whvwlqj-179[eubfs]
-odkasqzuo-rxaiqd-eqdhuoqe-430[nlyts]
-vhglnfxk-zktwx-xzz-xgzbgxxkbgz-917[xzgkb]
-jyfvnlupj-wyvqljapsl-jovjvshal-zlycpjlz-357[jlvpy]
-gpbepvxcv-eaphixr-vgphh-gtrtxkxcv-687[pvxgh]
-jrncbavmrq-zntargvp-qlr-qrirybczrag-741[dnzpg]
-hqfxxnknji-hfsid-knsfshnsl-307[wtfhe]
-aietsrmdih-nippcfier-stivexmsrw-750[iersm]
-glrcplyrgmlyj-pyzzgr-pcqcypaf-912[nkoyv]
-ugfkmewj-yjsvw-hdsklau-yjskk-sfsdqkak-216[ksjad]
-mhi-lxvkxm-vtgwr-kxtvjnblbmbhg-917[bmvxg]
-tipfxvezt-irsszk-kvtyefcfxp-451[fteik]
-jxdkbqfz-mixpqfz-doxpp-qoxfkfkd-939[fxdkp]
-dsxxw-pyzzgr-qrmpyec-288[prxyz]
-ejpanjwpekjwh-fahhuxawj-ajcejaanejc-394[jaehw]
-pinovwgz-xgvnndadzy-xviyt-vxlpdndodji-109[dnvix]
-szfyrqriuflj-upv-rercpjzj-243[jprqg]
-dmbttjgjfe-gmpxfs-efqbsunfou-701[fbegj]
-sgmtkzoi-inuiurgzk-ykxboiky-436[qlcfs]
-slqryzjc-djmucp-ylyjwqgq-158[jqycl]
-aflwjfslagfsd-vqw-hmjuzskafy-398[fasjl]
-slqryzjc-djmucp-pcacgtgle-886[cgjlp]
-qjopwxha-ywjzu-ajcejaanejc-420[zoehr]
-amjmpdsj-njyqrga-epyqq-kylyeckclr-756[yksln]
-zlkprjbo-doxab-zxkav-zlxqfkd-abpfdk-445[kabdx]
-lhkhszqx-fqzcd-bgnbnkzsd-nodqzshnmr-989[nzdhq]
-dlhwvupglk-ibuuf-klwhyatlua-591[dzktb]
-dpotvnfs-hsbef-cbtlfu-ufdiopmphz-623[homsd]
-ajvyjprwp-npp-mnbrpw-875[pjnrw]
-lxwbdvna-pajmn-snuuhknjw-mnyuxhvnwc-251[nuwah]
-vetllbybxw-lvtoxgzxk-angm-xgzbgxxkbgz-865[mknli]
-aflwjfslagfsd-jsehsyafy-usfvq-vwkayf-268[fsayj]
-xjgjmapg-agjrzm-gvwjmvojmt-291[jgmav]
-plolwdub-judgh-iorzhu-dqdobvlv-465[dloub]
-htqtwkzq-wfggny-fsfqdxnx-645[wsznf]
-fkqbokxqflkxi-zxkav-zlxqfkd-jxohbqfkd-341[kxfqb]
-oxjmxdfkd-avb-tlohpelm-653[dlmox]
-xtwtelcj-rclop-nsznzwlep-epnsyzwzrj-873[zelnp]
-rtqlgevkng-gii-ceswkukvkqp-466[kgeiq]
-molgbzqfib-yrkkv-ixyloxqlov-237[lobik]
-zbytomdsvo-mrymyvkdo-nocsqx-848[pahef]
-szfyrqriuflj-treup-tfrkzex-ivtvzmzex-867[xejut]
-upq-tfdsfu-kfmmzcfbo-mphjtujdt-909[fmtud]
-ykhknbqh-lhwopey-cnwoo-bejwjyejc-342[hwxgn]
-qfkkj-nsznzwlep-nzyeltyxpye-327[vkmwy]
-excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[cvoiz]
-dszphfojd-dboez-dpbujoh-xpsltipq-623[zbxem]
-udpsdjlqj-iorzhu-ghsorbphqw-517[hdjop]
-xcitgcpixdcpa-ide-htrgti-gpqqxi-gthtpgrw-609[gitpc]
-cybyjqho-whqtu-uww-tuiywd-348[styfx]
-yuxufmdk-sdmpq-nmewqf-oazfmuzyqzf-924[hfsly]
-tfejldvi-xiruv-avccpsvre-crsfirkfip-997[rxygp]
-wsvsdkbi-qbkno-oqq-wkxkqowoxd-822[koqwb]
-qcbgiasf-ufors-tzcksf-sbuwbssfwbu-610[ivjsc]
-vkrhzxgbv-wrx-lmhktzx-839[xhkrv]
-xmrrq-bwddqtwsf-vwnwdghewfl-242[fpmoq]
-kmjezxodgz-nxvqzibzm-cpio-gjbdnodxn-577[isocd]
-iutyaskx-mxgjk-kmm-jkyomt-436[kmjtx]
-ide-htrgti-snt-rjhidbtg-htgkxrt-531[tghir]
-vkppo-uww-bqrehqjeho-764[xmntl]
-bdavqofuxq-pkq-ymzmsqyqzf-196[qfmyz]
-diozmivodjivg-hvbizodx-zbb-ozxcijgjbt-915[zueag]
-cybyjqho-whqtu-hqrryj-bqrehqjeho-374[hqjry]
-vcibutulxiom-vohhs-lywycpcha-630[owyks]
-chnylhuncihuf-wuhxs-fiacmncwm-786[chnuf]
-xekdwvwnzkqo-ywjzu-ykwpejc-wymqeoepekj-264[dmbln]
-etyyx-cxd-vnqjrgno-391[hntfq]
-pwcvonofrcig-dfcxsqhwzs-qobrm-qighcasf-gsfjwqs-194[scfqg]
-xgvnndadzy-ezggtwzvi-nojmvbz-837[vnsth]
-dszphfojd-qmbtujd-hsbtt-usbjojoh-467[rskch]
-npmhcargjc-aylbw-amyrgle-yaosgqgrgml-886[galmr]
-qczcftiz-gqojsbusf-vibh-twbobqwbu-350[bnsiu]
-kwvacumz-ozilm-kzgwomvqk-xtiabqk-oziaa-twoqabqka-980[akoqz]
-dsxxw-zyqicr-cleglccpgle-418[clegx]
-jrncbavmrq-cynfgvp-tenff-ynobengbel-611[nbefc]
-hqtyeqsjylu-fbqijys-whqii-tuiywd-322[mitks]
-rnqnyfwd-lwfij-wfggny-xmnuunsl-697[tseia]
-fhezusjybu-rqiauj-udwyduuhydw-868[ngyzs]
-pkl-oaynap-ywjzu-ykwpejc-opknwca-628[pakwy]
-nuatmlmdpage-vqxxknqmz-geqd-fqefuzs-508[romxa]
-awzwhofm-ufors-qobrm-qcohwbu-hsqvbczcum-948[obchm]
-dfcxsqhwzs-rms-fsgsofqv-766[sfqcd]
-wlqqp-tyftfcrkv-rercpjzj-711[rcfjp]
-clotzlnetgp-awldetn-rcldd-nzyeltyxpye-743[letdn]
-lgh-kwujwl-hdsklau-yjskk-vwhsjlewfl-788[lkwhj]
-uqtqbizg-ozilm-kivlg-kwibqvo-uizsmbqvo-512[iqbov]
-vetllbybxw-lvtoxgzxk-angm-kxlxtkva-683[xlktv]
-qyujihctyx-mwupyhayl-bohn-uwkocmcncih-760[chyui]
-crwwv-zxkav-obzbfsfkd-237[bfkvw]
-qczcftiz-pogysh-igsf-hsghwbu-610[tnjwm]
-udpsdjlqj-gbh-hqjlqhhulqj-725[hjqld]
-yuxufmdk-sdmpq-nmewqf-emxqe-326[meqdf]
-molgbzqfib-ciltbo-ildfpqfzp-653[bfilo]
-uwtojhynqj-gfxpjy-ywfnsnsl-151[jnyfs]
-qvbmzvibqwvit-jiasmb-camz-bmabqvo-330[bmvai]
-xmtjbzidx-xviyt-xjvodib-xpnojhzm-nzmqdxz-603[torgb]
-ykjoqian-cnwza-fahhuxawj-qoan-paopejc-628[ajnoc]
-gvcskirmg-veffmx-irkmriivmrk-906[imrkv]
-njmjubsz-hsbef-dboez-dpbujoh-bdrvjtjujpo-649[astyb]
-ovbunmneqbhf-pnaql-pbngvat-jbexfubc-845[yzqwm]
-joufsobujpobm-kfmmzcfbo-usbjojoh-571[mkpnw]
-lzfmdshb-cxd-lzmzfdldms-287[dlmzf]
-froruixo-mhoobehdq-pdunhwlqj-439[ohdqr]
-xcitgcpixdcpa-rpcsn-rdpixcv-bpcpvtbtci-193[cpitx]
-dfcxsqhwzs-ksodcbwnsr-xszzmpsob-rsgwub-168[sbwzc]
-iuruxlar-lruckx-sgtgmksktz-436[krugl]
-nbhofujd-dboez-fohjoffsjoh-467[ofhjb]
-pejji-tovvilokx-nozvyiwoxd-276[bzkve]
-bxaxipgn-vgpst-rpcsn-rdpixcv-rjhidbtg-htgkxrt-583[upjyv]
-bkzrrhehdc-bzmcx-bnzshmf-lzqjdshmf-443[hzbmc]
-dpssptjwf-gmpxfs-mphjtujdt-571[pjstd]
-pdjqhwlf-sodvwlf-judvv-orjlvwlfv-829[tuszv]
-mfklstdw-tmffq-wfyafwwjafy-918[wmvan]
-joufsobujpobm-ezf-gjobodjoh-779[xwadm]
-hafgnoyr-gbc-frperg-rtt-grpuabybtl-481[jcgnd]
-joufsobujpobm-fhh-tijqqjoh-233[johbf]
-zuv-ykixkz-vrgyzoi-mxgyy-yzuxgmk-150[yzgkx]
-ibghopzs-qvcqczohs-qighcasf-gsfjwqs-948[ubrmn]
-qfmcusbwq-pwcvonofrcig-foppwh-fsgsofqv-584[focpq]
-aczupnetwp-awldetn-rcldd-qtylyntyr-119[tdlny]
-dpssptjwf-ezf-sfdfjwjoh-909[znfwy]
-qxdwpopgsdjh-ytaanqtpc-pcpanhxh-297[pahcd]
-ucynmlgxcb-aylbw-rpyglgle-626[lgybc]
-oqnidbshkd-okzrshb-fqzrr-rdquhbdr-573[rdbhq]
-frqvxphu-judgh-fdqgb-vhuylfhv-647[hfuvd]
-vhehkyne-cxeeruxtg-hixktmbhgl-319[ehxgk]
-gsrwyqiv-kvehi-gerhc-gsexmrk-vigimzmrk-412[girek]
-ajmrxjlcren-yujbcrl-pajbb-bnaerlnb-719[lvzpq]
-zixppfcfba-bdd-bkdfkbbofkd-393[hnmcz]
-aflwjfslagfsd-hdsklau-yjskk-ugflsafewfl-918[flsak]
-xtwtelcj-rclop-upwwjmply-nzyeltyxpye-847[lpyet]
-oaddaeuhq-qss-dqmocgueufuaz-924[qzwti]
-tvsnigxmpi-wgezirkiv-lyrx-hitpscqirx-568[irxgp]
-ksodcbwnsr-qczcftiz-gqojsbusf-vibh-igsf-hsghwbu-272[sbcfg]
-sgmtkzoi-jek-gtgreyoy-410[tqkns]
-rzvkjiduzy-kgvnodx-bmvnn-omvdidib-109[fpsxk]
-diozmivodjivg-rzvkjiduzy-zbb-adivixdib-447[nayqm]
-froruixo-vfdyhqjhu-kxqw-rshudwlrqv-517[rhqud]
-dmpuamofuhq-dmnnuf-ymzmsqyqzf-222[mwnak]
-mybbycsfo-zvkcdsm-qbkcc-wkbuodsxq-380[bcksd]
-tcrjjzwzvu-wcfnvi-vexzevvizex-633[vzeci]
-qzoggwtwsr-gqojsbusf-vibh-hsqvbczcum-870[sbgqc]
-enzcntvat-cynfgvp-tenff-phfgbzre-freivpr-845[xnfot]
-gsvvswmzi-gerhc-gsexmrk-stivexmsrw-984[segmr]
-fhezusjybu-vbemuh-iqbui-244[iektm]
-oqnidbshkd-idkkxadzm-qdzbpthrhshnm-469[gekyh]
-pybgmyargtc-cee-nspafyqgle-574[egyac]
-jyddc-gerhc-gsexmrk-vigimzmrk-672[gmrcd]
-tipfxvezt-gcrjkzt-xirjj-rercpjzj-399[ldquc]
-bdavqofuxq-bxmefuo-sdmee-dqeqmdot-768[hwmck]
-fbebmtkr-zktwx-vtgwr-hixktmbhgl-475[tbkgh]
-irgyyolokj-igtje-iugzotm-rumoyzoiy-202[mpijw]
-fbebmtkr-zktwx-xzz-kxlxtkva-865[yicwo]
-tyepcyletzylw-dnlgpyrpc-sfye-nfdezxpc-dpcgtnp-145[badwi]
-vrurcjah-pajmn-ljwmh-anbnjalq-849[ajnhl]
-rtqlgevkng-ecpfa-fgukip-700[gefkp]
-pdjqhwlf-froruixo-udeelw-wudlqlqj-907[kymab]
-tinnm-xszzmpsob-qcbhowbasbh-688[nhcdm]
-nij-mywlyn-wuhxs-lywycpcha-318[ywchl]
-fnjyxwrinm-ouxfna-ldbcxvna-bnaerln-979[naxbf]
-ajvyjprwp-bljenwpna-qdwc-anjlzdrbrcrxw-823[jrwan]
-diozmivodjivg-wpiit-mzxzdqdib-551[kmhon]
-nij-mywlyn-dyffsvyuh-xyjfisgyhn-656[yfnhi]
-fhezusjybu-zubboruqd-vydqdsydw-504[dubyq]
-ubhatstkwhnl-lvtoxgzxk-angm-kxvxbobgz-579[xbgkt]
-xcitgcpixdcpa-rwdrdapit-htgkxrth-557[zastp]
-wfintfhynaj-jll-hzxytrjw-xjwanhj-281[jhnwa]
-irgyyolokj-vrgyzoi-mxgyy-rumoyzoiy-800[sptbo]
-jvyyvzpcl-yhkpvhjapcl-ibuuf-aljouvsvnf-227[vjlpu]
-iruzfrtkzmv-treup-kirzezex-841[rzeik]
-cxy-bnlanc-ljwmh-ujkxajcxah-979[waqkz]
-qzoggwtwsr-foppwh-difqvogwbu-948[wgofp]
-qyujihctyx-dyffsvyuh-zchuhwcha-552[hycuf]
-yknnkoera-lhwopey-cnwoo-pnwejejc-992[enowc]
-zovldbkfz-zxkav-zlxqfkd-xkxivpfp-289[vtcos]
-mrxivrexmsrep-glsgspexi-erepcwmw-750[btrnl]
-udskkaxawv-kusnwfywj-zmfl-dgyaklauk-866[xeozd]
-esyfwlau-tmffq-vwnwdghewfl-632[czoml]
-hjgbwuladw-kusnwfywj-zmfl-esfsywewfl-294[xwfie]
-hwbba-rncuvke-itcuu-ocpcigogpv-232[cubgi]
-vhkkhlbox-vtgwr-xgzbgxxkbgz-631[typnq]
-nvrgfezqvu-szfyrqriuflj-vxx-jkfirxv-139[krijl]
-iuruxlar-zuv-ykixkz-lruckx-xkykgxin-826[kxuir]
-yhwooebeaz-ywjzu-yqopkian-oanreya-966[ynwkb]
-iuxxuyobk-pkrrehkgt-xkgiwaoyozout-176[sjwtp]
-glrcplyrgmlyj-djmucp-qrmpyec-236[clmpr]
-pejji-tovvilokx-bocokbmr-588[obijk]
-hplazytkpo-upwwjmply-dpcgtnpd-119[pdltw]
-nij-mywlyn-xsy-jolwbumcha-136[yjlmn]
-pynffvsvrq-ohaal-fgbentr-923[fanrv]
-lgh-kwujwl-kusnwfywj-zmfl-kwjnauwk-736[wkjlu]
-dszphfojd-sbccju-mbcpsbupsz-727[sbcpd]
-ixeumktoi-lruckx-zkinturume-800[ktsyl]
-fmsledevhsyw-tvsnigxmpi-veffmx-viwievgl-412[veifm]
-mrxivrexmsrep-fyrrc-qevoixmrk-880[wtmdx]
-qmpmxevc-kvehi-wgezirkiv-lyrx-wlmttmrk-620[zyxjd]
-zixppfcfba-oxyyfq-qbzeklildv-289[fbilp]
-nwlddtqtpo-dnlgpyrpc-sfye-wlmzclezcj-431[jefsy]
-tinnm-foppwh-oqeiwgwhwcb-688[fzyjx]
-plolwdub-judgh-fdqgb-ghyhorsphqw-413[hystk]
-bwx-amkzmb-zijjqb-bmkpvwtwog-460[bmwjk]
-qcbgiasf-ufors-pibbm-ghcfous-896[bfscg]
-ktwbhtvmbox-vetllbybxw-cxeeruxtg-tgterlbl-215[tmybs]
-lqwhuqdwlrqdo-mhoobehdq-vwrudjh-387[dhqow]
-lgh-kwujwl-tskcwl-vwhdgqewfl-684[afnbs]
-yuxufmdk-sdmpq-rxaiqd-efadmsq-976[mczye]
-ftzgxmbv-unggr-kxlxtkva-917[ezfmx]
-rmn-qcapcr-aylbw-amyrgle-ylyjwqgq-158[prcqj]
-fhezusjybu-rqiauj-husuylydw-582[uyhjs]
-apuut-xviyt-xjvodib-yzkvmohzio-525[yomvc]
-mybbycsfo-dyz-combod-zvkcdsm-qbkcc-oxqsxoobsxq-848[obcsd]
-yhwooebeaz-lhwopey-cnwoo-zalhkuiajp-706[oaehw]
-bqxnfdmhb-bzmcx-trdq-sdrshmf-469[zdyht]
-dmpuamofuhq-vqxxknqmz-pqbmdfyqzf-924[qmfdp]
-kmjezxodgz-ytz-mzvxlpdndodji-889[gefcn]
-apuut-xviyt-xjvodib-mznzvmxc-369[vximt]
-fodvvlilhg-surmhfwloh-hjj-hqjlqhhulqj-647[hljqf]
-tipfxvezt-srjbvk-tljkfdvi-jvimztv-269[vtijf]
-ikhcxvmbex-xzz-labiibgz-423[qnzsg]
-qzchnzbshud-azrjds-lzmzfdldms-885[xubgy]
-eadalsjq-yjsvw-vqw-esjcwlafy-398[ajswe]
-oxmeeuruqp-bxmefuo-sdmee-etubbuzs-898[stupo]
-frqvxphu-judgh-xqvwdeoh-fdqgb-frdwlqj-zrunvkrs-257[dqrfh]
-ltpedcxots-gpbepvxcv-qphzti-igpxcxcv-349[jzdyi]
-vhkkhlbox-vtgwr-phkdlahi-969[tmszy]
-cvabijtm-jcvvg-lmdmtwxumvb-226[nvfca]
-sedikcuh-whqtu-sqdto-qsgkyiyjyed-790[dqsye]
-gzefmnxq-bdavqofuxq-rxaiqd-ymzmsqyqzf-690[zklij]
-zntargvp-cynfgvp-tenff-qrcyblzrag-351[sqzyh]
-xfbqpojafe-dboez-xpsltipq-857[ehgum]
-uqtqbizg-ozilm-jcvvg-lmaqov-980[xzwsi]
-xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-161[zgjmx]
-muqfedyput-vbemuh-fkhsxqiydw-920[udefh]
-kzeed-gfxpjy-ywfnsnsl-489[xeoyn]
-pynffvsvrq-onfxrg-ynobengbel-741[nfbeg]
-froruixo-iorzhu-rshudwlrqv-647[rouhi]
-amjmpdsj-qaytclecp-fslr-qyjcq-938[cjqal]
-otzkxtgzoutgr-jek-iayzuskx-ykxboik-826[kotxz]
-tpspahyf-nyhkl-jhukf-zavyhnl-279[hyafk]
-pualyuhapvuhs-ihzrla-ylhjxbpzpapvu-929[lbncu]
-odiih-ajkkrc-mnbrpw-355[ikrab]
-votubcmf-gmpxfs-bdrvjtjujpo-363[jbfmo]
-zgmfyxypbmsq-rmn-qcapcr-bwc-pcacgtgle-704[ztspm]
-uqtqbizg-ozilm-nchhg-jiasmb-ivitgaqa-382[snpaf]
-willimcpy-jfumncw-alumm-lyuwkocmcncih-734[cmliu]
-ibghopzs-qvcqczohs-hsqvbczcum-506[chqsz]
-ugjjgkanw-tmffq-vwkayf-216[lfrby]
-pynffvsvrq-pnaql-erprvivat-507[vpraf]
-aczupnetwp-nlyoj-nzletyr-pyrtyppctyr-197[pytnr]
-vkppo-sqdto-seqjydw-bewyijysi-686[sydei]
-dpotvnfs-hsbef-ezf-qvsdibtjoh-337[fsbde]
-wlqqp-avccpsvre-ivtvzmzex-425[vcepq]
-jfifqxov-doxab-gbiivybxk-jxohbqfkd-549[skgzo]
-rgndvtcxr-jchipqat-rpcsn-igpxcxcv-713[cprxg]
-ykhknbqh-xqjju-wymqeoepekj-576[ejkqh]
-pejji-mrymyvkdo-domrxyvyqi-536[ymdij]
-wihmogyl-aluxy-xsy-womnigyl-mylpcwy-786[ylmwg]
-jlidywncfy-zfiqyl-mbcjjcha-162[cjyfi]
-pynffvsvrq-sybjre-grpuabybtl-455[byavk]
-uqtqbizg-ozilm-uiovmbqk-akidmvomz-pcvb-bziqvqvo-694[xywnk]
-lxaaxbren-ouxfna-ydalqjbrwp-225[mibtg]
-joufsobujpobm-kfmmzcfbo-dvtupnfs-tfswjdf-675[ijokq]
-crwwv-gbiivybxk-pqloxdb-913[rtmzn]
-pkl-oaynap-nwxxep-bejwjyejc-576[jfmel]
-wfummczcyx-gcfcnuls-aluxy-wuhxs-wihnuchgyhn-786[giqsn]
-htsxzrjw-lwfij-ojqqdgjfs-ijajqturjsy-229[tjxbs]
-qczcftiz-foppwh-rsgwub-246[exnyt]
-lnkfaypeha-xwogap-naoawnyd-342[zynls]
-thnulapj-zjhclunly-obua-thuhnltlua-201[luhan]
-vkppo-fbqijys-whqii-bqrehqjeho-504[lkosn]
-eqpuwogt-itcfg-ecpfa-qrgtcvkqpu-622[cgpqt]
-odkasqzuo-oazegyqd-sdmpq-otaoaxmfq-efadmsq-222[aoqdm]
-ide-htrgti-bxaxipgn-vgpst-qjccn-pcpanhxh-453[pcghi]
-luxciuwncpy-jfumncw-alumm-xyjulngyhn-552[unclm]
-plolwdub-judgh-hjj-zrunvkrs-777[yfulq]
-pejji-lexxi-oxqsxoobsxq-458[xoeij]
-uzfqdzmfuazmx-pkq-fdmuzuzs-170[npsqv]
-bknsykmdsfo-zvkcdsm-qbkcc-cdybkqo-614[fastx]
-qfkkj-upwwjmply-qtylyntyr-873[yjklp]
-hqcfqwydw-zubboruqd-ijehqwu-218[djvhz]
-kmjezxodgz-pinovwgz-zbb-ncdkkdib-473[vimty]
-bknsykmdsfo-myvybpev-mkxni-mykdsxq-bocokbmr-562[sdwfr]
-eqttqukxg-gii-hkpcpekpi-960[yljdr]
-drxevkzt-wcfnvi-cfxzjkztj-607[twoxz]
-vkppo-rkddo-ijehqwu-504[dkope]
-rgllk-rxaiqd-dqmocgueufuaz-456[mxkzr]
-ktiaaqnqml-moo-xczkpiaqvo-122[aoqik]
-amjmpdsj-njyqrga-epyqq-pcqcypaf-600[pqajy]
-rwcnawjcrxwju-npp-ujkxajcxah-199[jacwx]
-fmsledevhsyw-gspsvjyp-gerhc-gsexmrk-ywiv-xiwxmrk-412[segmr]
-ajmrxjlcren-kdwwh-anbnjalq-745[myzet]
-aoubshwq-tinnm-suu-fsoqeiwgwhwcb-480[wsubh]
-rdggdhxkt-rpcsn-hpath-531[tsamh]
-pbafhzre-tenqr-pnaql-pbngvat-nanylfvf-715[upmid]
-zbytomdsvo-cmkfoxqob-rexd-gybucryz-562[obycd]
-bkwzkqsxq-mkxni-ecob-docdsxq-978[ksmtq]
-oknkvcta-itcfg-ecpfa-ncdqtcvqta-414[lcwjp]
-fydelmwp-clmmte-cpnptgtyr-405[jlgak]
-tcorcikpi-ecpfa-gpikpggtkpi-804[picgk]
-xtwtelcj-rclop-upwwjmply-hzcvdsza-327[clpwj]
-tcfkqcevkxg-ecpfa-eqcvkpi-ncdqtcvqta-752[cqekt]
-etaqigpke-tcddkv-uvqtcig-440[tcdeg]
-raphhxuxts-qxdwpopgsdjh-rpcsn-rdpixcv-sthxvc-843[tvexn]
-atyzghrk-xghhoz-ktmotkkxotm-748[kthog]
-fmsledevhsyw-nippcfier-asvowlst-412[zksal]
-oaxadrgx-eomhqzsqd-tgzf-eqdhuoqe-846[zfylm]
-qcbgiasf-ufors-dzoghwq-ufogg-qcbhowbasbh-194[bgofh]
-qvbmzvibqwvit-bwx-amkzmb-jiasmb-xczkpiaqvo-122[bimva]
-qfkkj-prr-hzcvdsza-639[dqmts]
-jvyyvzpcl-ibuuf-bzly-alzapun-981[mnakf]
-dsxxw-cee-pcacgtgle-626[odsgr]
-buzahisl-zjhclunly-obua-zlycpjlz-617[rsglh]
-gpewwmjmih-tpewxmg-kveww-jmrergmrk-594[mwegr]
-aietsrmdih-hci-stivexmsrw-516[hsvof]
-ujoon-ytaanqtpc-stepgibtci-219[tacin]
-kpvgtpcvkqpcn-fag-ceswkukvkqp-830[cijob]
-etaqigpke-uecxgpigt-jwpv-ocpcigogpv-154[gpcei]
-eqnqthwn-tcddkv-rwtejcukpi-674[tcdek]
-mhi-lxvkxm-ktuubm-nlxk-mxlmbgz-241[mxklb]
-avw-zljyla-wshzapj-nyhzz-ylzlhyjo-149[plqkx]
-xekdwvwnzkqo-nwxxep-odellejc-862[xyzwn]
-pkl-oaynap-bhksan-qoan-paopejc-498[ojduv]
-xjinphzm-bmvyz-xjgjmapg-ezggtwzvi-zibdizzmdib-499[zigmb]
-bdavqofuxq-rxaiqd-bgdotmeuzs-508[clbmv]
-xzwrmkbqtm-jcvvg-ewzsapwx-902[wmvxz]
-dmybmsuzs-rxaiqd-xmnadmfadk-846[dmasx]
-surmhfwloh-exqqb-vwrudjh-127[hqruw]
-gntmfefwitzx-ojqqdgjfs-xytwflj-827[xgtuv]
-tbxmlkfwba-zxkav-zlxqfkd-ildfpqfzp-965[jncig]
-sbnqbhjoh-tdbwfohfs-ivou-qvsdibtjoh-597[rftxz]
-hqcfqwydw-fbqijys-whqii-iqbui-322[iqwbf]
-forwcoqhwjs-xszzmpsob-gvwddwbu-324[ftyzu]
-zlilocri-oxjmxdfkd-ciltbo-pbosfzbp-991[gjars]
-kwzzwaqdm-rmttgjmiv-uizsmbqvo-434[mziqt]
-willimcpy-gcfcnuls-aluxy-mwupyhayl-bohn-yhachyylcha-162[kcimx]
-uqtqbizg-ozilm-kivlg-uizsmbqvo-954[pifvj]
-ugdgjxmd-tskcwl-wfyafwwjafy-762[wfadg]
-ajyqqgdgcb-bwc-qyjcq-262[qcbgj]
-yknnkoera-oywrajcan-dqjp-wjwhuoeo-602[oajnw]
-bqxnfdmhb-qzaahs-rzkdr-963[abdhq]
-dwbcjkun-mhn-jwjuhbrb-693[niusd]
-wlqqp-wcfnvi-crsfirkfip-373[nrtqs]
-guahyncw-wbiwifuny-xymcah-240[wyach]
-qfkkj-prr-opgpwzaxpye-613[pkrae]
-cqwdujys-tou-tufbeocudj-322[ucdjo]
-wfruflnsl-wfggny-ijuqtdrjsy-931[wjznm]
-bnqqnrhud-okzrshb-fqzrr-cdrhfm-105[rhqbd]
-yhtwhnpun-tpspahyf-nyhkl-jovjvshal-zlycpjlz-487[hlpyj]
-iutyaskx-mxgjk-hatte-lotgtiotm-176[shzku]
-gntmfefwitzx-kqtbjw-xfqjx-645[nmfsa]
-jvsvymbs-jhukf-jbzavtly-zlycpjl-695[frnkz]
-dlhwvupglk-zjhclunly-obua-jvuahputlua-825[ulahj]
-wyvqljapsl-jhukf-jvhapun-ylzlhyjo-487[jlhya]
-ghkmaihex-hucxvm-lmhktzx-267[hmxka]
-irgyyolokj-vrgyzoi-mxgyy-xkikobotm-670[ryfvl]
-kwzzwaqdm-zijjqb-amzdqkma-564[qzdtv]
-rflsjynh-idj-xytwflj-541[jflyd]
-emixwvqhml-ntwemz-zmkmqdqvo-200[zmbdq]
-kzgwomvqk-rmttgjmiv-abwziom-330[mtnsk]
-xjgjmapg-wpiit-vivgtndn-499[weiza]
-cebwrpgvyr-pnaql-grpuabybtl-117[xqmjc]
-egdytrixat-uadltg-uxcpcrxcv-297[ctxad]
-gvaaz-ezf-tfswjdft-623[fatzd]
-excdklvo-mkxni-mykdsxq-mecdywob-cobfsmo-692[mocdk]
-ovbunmneqbhf-pnaql-bcrengvbaf-351[mtgcw]
-nwlddtqtpo-clmmte-nzyeltyxpye-509[ydnsh]
-froruixo-udeelw-vwrudjh-309[sxgvu]
-hqcfqwydw-sxesebqju-cqhaujydw-660[fghtp]
-bpvctixr-rwdrdapit-ldgzhwde-895[sfioq]
-ajmrxjlcren-yaxsnlcrun-bljenwpna-qdwc-fxatbqxy-797[fnjis]
-lugjuacha-zfiqyl-uhufsmcm-370[uacfh]
-houngfgxjuay-pkrrehkgt-iayzuskx-ykxboik-852[kguxy]
-gcfcnuls-aluxy-luxciuwncpy-jfumncw-alumm-uhufsmcm-214[zftvs]
-oxmeeuruqp-otaoaxmfq-emxqe-794[drzyv]
-nvrgfezqvu-upv-tfekrzedvek-867[evfkr]
-uwtojhynqj-xhfajsljw-mzsy-zxjw-yjxynsl-801[jyswx]
-zixppfcfba-yxphbq-jxohbqfkd-887[zgoyn]
-qczcftiz-qvcqczohs-aobousasbh-402[coqsz]
-lejkrscv-upv-tfekrzedvek-919[ekvrc]
-chnylhuncihuf-zfiqyl-zchuhwcha-604[magtu]
-vetllbybxw-lvtoxgzxk-angm-ybgtgvbgz-605[gbltv]
-dmpuamofuhq-omzpk-qzsuzqqduzs-820[quzmd]
-rdggdhxkt-gpqqxi-rdcipxcbtci-219[yrlha]
-tfejldvi-xiruv-wcfnvi-jvimztvj-243[fqclr]
-foadouwbu-dzoghwq-ufogg-gvwddwbu-324[dgouw]
-tbxmlkfwba-pzxsbkdbo-erkq-bkdfkbbofkd-913[hgans]
-gpbepvxcv-rpcsn-itrwcdadvn-453[sbuap]
-szfyrqriuflj-srjbvk-ivrthlzjzkzfe-633[sqwil]
-jqwpihizlwca-jiasmb-ivitgaqa-122[amzud]
-bqvvu-ywjzu-qoan-paopejc-264[ajopq]
-mvydjvxodqz-wpiit-gvwjmvojmt-525[oabkn]
-ktiaaqnqml-moo-zmikycqaqbqwv-252[qamik]
-dpmpsgvm-cbtlfu-sfdfjwjoh-909[pntzm]
-nzcczdtgp-nsznzwlep-qtylyntyr-171[nztyc]
-htqtwkzq-idj-rfwpjynsl-723[ndmel]
-gzefmnxq-nmewqf-eqdhuoqe-300[eqfmn]
-qzlozfhmf-cxd-lzqjdshmf-469[fzdhl]
-pinovwgz-mvydjvxodqz-xviyt-xjvodib-yzndbi-447[pztyh]
-gspsvjyp-gerhc-gsexmrk-vieguymwmxmsr-256[gmser]
-ygcrqpkbgf-tcfkqcevkxg-hnqygt-vtckpkpi-102[puovq]
-jsehsyafy-tmffq-vwhdgqewfl-112[rnach]
-qmpmxevc-kvehi-hci-eguymwmxmsr-204[mechi]
-tcfkqcevkxg-tcorcikpi-gii-gpikpggtkpi-544[wytzs]
-pbafhzre-tenqr-enzcntvat-onfxrg-ratvarrevat-845[raten]
-shoewudys-rqiauj-bqrehqjeho-270[ehqjo]
-xjinphzm-bmvyz-ojk-nzxmzo-ezggtwzvi-zibdizzmdib-577[zimbd]
-rkpqxyib-bdd-pbosfzbp-939[bpdfi]
-vcibutulxiom-vumeyn-omyl-nymncha-786[ziwys]
-nvrgfezqvu-upv-ivrthlzjzkzfe-321[vzefr]
-krxqjijamxdb-yujbcrl-pajbb-dbna-cnbcrwp-303[bjacr]
-zixppfcfba-mixpqfz-doxpp-qbzeklildv-653[zdxgu]
-lsyrkjkbnyec-mkxni-gybucryz-640[ykbcn]
-qspkfdujmf-kfmmzcfbo-dpoubjonfou-155[fomub]
-sno-rdbqds-rbzudmfdq-gtms-cdozqsldms-755[yaubo]
-houngfgxjuay-vrgyzoi-mxgyy-ygrky-462[ygoru]
-gcfcnuls-aluxy-wifilzof-yaa-omyl-nymncha-266[alycf]
-hwdtljsnh-gzssd-xfqjx-463[fajso]
-htwwtxnaj-idj-hzxytrjw-xjwanhj-281[hzrnq]
-sorozgxe-mxgjk-lruckx-xkgiwaoyozout-176[oxgkr]
-ynssr-vtgwr-vhtmbgz-ftgtzxfxgm-475[gtfmr]
-rtqlgevkng-lgnnadgcp-yqtmujqr-648[nelzc]
-kwtwznct-rmttgjmiv-camz-bmabqvo-460[nmbls]
-surmhfwloh-fdqgb-wudlqlqj-959[lqdfh]
-iutyaskx-mxgjk-hgyqkz-rumoyzoiy-644[ykgim]
-jqwpihizlwca-kivlg-kwibqvo-wxmzibqwva-434[iwqva]
-amppmqgtc-djmucp-asqrmkcp-qcptgac-496[cpmaq]
-apuut-xjmmjndqz-wpiit-vivgtndn-187[intdj]
-ftzgxmbv-vtgwr-wxlbzg-267[gbtvw]
-eza-dpncpe-mldvpe-wlmzclezcj-171[eclpz]
-rnqnyfwd-lwfij-wfggny-ijuqtdrjsy-827[fjnwy]
-aflwjfslagfsd-xdgowj-ghwjslagfk-684[fgajl]
-lzfmdshb-eknvdq-rsnqzfd-859[ybjfz]
-hqtyeqsjylu-uww-tufbeocudj-582[uejqt]
-qfkkj-nsznzwlep-dstaatyr-223[aknst]
-ubhatstkwhnl-xzz-kxvxbobgz-267[umogq]
-xekdwvwnzkqo-oywrajcan-dqjp-ykjpwejiajp-238[mtbvo]
-cebwrpgvyr-sybjre-qrfvta-195[rbevy]
-hjgbwuladw-usfvq-esfsywewfl-710[mpiho]
-lujbbrornm-kjbtnc-fxatbqxy-823[ywamx]
-ugjjgkanw-uzgugdslw-hmjuzskafy-476[stfoh]
-fmsledevhsyw-fewoix-pefsvexsvc-724[scznt]
-zlkprjbo-doxab-bdd-obzbfsfkd-419[bdofk]
-vcibutulxiom-wuhxs-nluchcha-864[uchil]
-yhkpvhjapcl-ihzrla-dvyrzovw-305[qyhmr]
-hmsdqmzshnmzk-qzlozfhmf-qzaahs-zmzkxrhr-287[zhmqs]
-gzefmnxq-dmnnuf-etubbuzs-482[nubef]
-ejpanjwpekjwh-ywjzu-ykwpejc-nayaerejc-550[jewap]
-cxy-bnlanc-npp-mnyuxhvnwc-433[nvmyt]
-jfifqxov-doxab-gbiivybxk-obzbfsfkd-601[epyzn]
-pkl-oaynap-xqjju-wjwhuoeo-680[joapu]
-jef-iushuj-hqtyeqsjylu-rqiauj-bewyijysi-842[hyzgu]
-dfcxsqhwzs-tzcksf-aobousasbh-896[wkqxh]
-lahxpnwrl-ljwmh-bjunb-693[jtoyp]
-rnqnyfwd-lwfij-gfxpjy-wjhjnansl-931[jnfwl]
-buzahisl-jvyyvzpcl-jhukf-jvhapun-klwhyatlua-617[ahluj]
-jchipqat-eaphixr-vgphh-bpgztixcv-271[hpiac]
-zlkprjbo-doxab-avb-absbilmjbkq-107[wbymr]
-eqpuwogt-itcfg-dcumgv-fgxgnqrogpv-362[gcfop]
-rdadguja-qjccn-gtrtxkxcv-791[cadgj]
-etaqigpke-oknkvcta-itcfg-hnqygt-hkpcpekpi-674[mcoya]
-gspsvjyp-hci-wxsveki-386[myuqs]
-jef-iushuj-vbemuh-mehaixef-920[ehufi]
-encuukhkgf-fag-tgceswkukvkqp-752[kguce]
-npmhcargjc-njyqrga-epyqq-kypicrgle-444[cgpqr]
-xtwtelcj-rclop-mldvpe-dpcgtnpd-379[pcdlt]
-nchhg-kpwkwtibm-mvoqvmmzqvo-252[mvhko]
-uqtqbizg-ozilm-jiasmb-uizsmbqvo-122[ktxvs]
-nwlddtqtpo-mldvpe-fdpc-epdetyr-509[dpetl]
-wfintfhynaj-idj-qfgtwfytwd-229[efudw]
-yhwooebeaz-nwilwcejc-ydkykhwpa-owhao-160[skuyi]
\ No newline at end of file
diff --git a/adventofcode16/data/advent06.txt b/adventofcode16/data/advent06.txt
deleted file mode 100644 (file)
index 4a1a2a6..0000000
+++ /dev/null
@@ -1,624 +0,0 @@
-focdealm
-ggsipflx
-rvibwxbm
-vqrfyyrh
-hsjtzpgs
-ozymxpoy
-jiecwags
-lztseufl
-dfwibwsn
-skiuhnwl
-kamgzqog
-axeqncwa
-gobivxto
-nwgoryhd
-tzrlitrq
-uzoldxbv
-zsteobha
-pfcgdqkg
-prcqlunp
-iwivemkh
-vpkilupm
-ewuznabz
-veaptost
-cyvirffe
-ejhhqfng
-ibsqztgg
-xzczkboh
-bckhbodf
-vbycgonv
-esmoyyku
-unccgdgj
-cqwnqlzs
-edoqmykb
-bkvzlhyq
-yzrspisn
-zlzibhca
-povnweaf
-muyfegxe
-oaojqfrl
-gwesjxws
-rjknfyeh
-dkquvctc
-cfuzhxoj
-tdzzzfqc
-lzjzsyni
-wjfxckkf
-xmhyjhop
-kmtllzxs
-yohearbj
-ilmvyxgn
-erczytzw
-kuetjsba
-vwkpollq
-tujwluzc
-jlvedjcp
-acmoaoji
-gqoliyen
-agckavhf
-ottamfdm
-jxwlyotw
-tdpsrapj
-carwwmqc
-ykaipjdj
-zdfrbduu
-vwiiosud
-uoixglbw
-yegbwxjb
-wbpqqqfv
-wpynmyqi
-aqdkscgd
-oghnbnnf
-duftexbb
-ttvbofay
-jferymwy
-hqzimpiq
-sifyogml
-nymxqbws
-dhdlhhqp
-urtuhcrj
-giwcunfq
-fxgretsl
-maihqkpk
-pdxfkcru
-xixtthag
-vuzxqzzi
-wxxeleug
-xpopxkzo
-hgcsyuad
-xcbydxnx
-kxocfakp
-erxdajeq
-tliakzhh
-iygbbuxs
-qlgqthpp
-duzzptwk
-gfnqdotc
-kjayxeqf
-fehitfar
-yemshppn
-igtczmmw
-gfajhxch
-bslzmgwo
-xpmhmirx
-yhlwlupt
-nymajupw
-tlhgdefw
-bqkudizc
-lucrhmnm
-svkoaqzz
-luggfivf
-ckawtiwy
-eeivawhj
-qdmmmvdl
-quezzzqa
-oimsfsuo
-jdvcknqu
-aupohqbk
-llwsasnz
-zlpljtjl
-xfylqxlv
-zqppxkul
-varoizrq
-yxryqwso
-gsscetca
-gcbdgqyo
-hsdnvteo
-pxtoreoc
-rwjdkwzs
-zdgofynf
-polyntkx
-jhulgrnf
-ycbzpdpw
-bzvdbwsy
-vydjbucs
-rxadwwuo
-ccnvzjak
-nombazjc
-lbxwdasr
-cbdlkiha
-sdomdvow
-phjnkkkp
-nmtmrnyz
-nxsvmcwk
-hqimjvir
-vmjhhuuv
-zilhgqlb
-gfgbibgg
-imxxugfe
-wtaffkbj
-lyguqvjs
-pejslhls
-qjnefwii
-oanqnnnc
-kcjyfwxm
-zoxjwxmw
-ihmokcrm
-uebsbhfr
-fxvjiorr
-ebjiucyt
-ofutlokv
-mdfnsuyr
-dzviwqdk
-umwyaijz
-hdqwfalt
-qtyrouwh
-lkzcrtwa
-dtqvwzke
-buplmmca
-xxepjuvj
-omyotlar
-ytndbwhi
-sbntigym
-mphrnsme
-xiymeoxr
-kcujxcih
-bydnchgk
-snwdjlip
-yljsymtv
-tyhbpoab
-zlqhvzxl
-akbtnzop
-xnpjmysj
-znhednen
-vbcsocrm
-ywjajour
-ejngbqev
-rstykfhc
-cbcnoexq
-mzlxvxwj
-vfdqaalp
-nbszzozr
-dqpyojid
-hfuqilbl
-uoackeup
-shqkcsmr
-jbdasroe
-fmlkvsnt
-cnomxkvk
-unbsfncq
-bnzxltxe
-bbadfyin
-skmhtmhn
-xkypwglb
-flbfiioo
-fzywneyg
-srngxbut
-qtodeuxg
-xvawfqli
-nyfmrdsn
-rdjysbxj
-spmezvvj
-ofoivcuc
-touzgqzx
-mfqyzagc
-dmaurbdv
-gqnrlyuw
-wuppusoh
-qgstihuy
-uldnlrpi
-xaskgwim
-djjrphid
-qjhmctyu
-osfenjdn
-zvoahhkk
-xiuyatyn
-fepobmjh
-kmugpjpw
-aikpozqs
-kmgmazif
-gbzlodzb
-hrocqadn
-noekklwb
-vzwhnkvx
-osrspxsc
-iekmqgua
-xeehndee
-quttqjav
-htoptweo
-cyicmwba
-jltlwlyy
-qvccdkig
-bibggekq
-kwfwvrfg
-eycwlcup
-murgcddl
-lyukeubx
-twbpzoyg
-dkcvzele
-fozhtmcz
-frugeivm
-qjbhpdpr
-tgkkeroo
-ryuvgqgc
-jhixykqn
-wsebmcrn
-wohtjpgu
-isflpxxt
-xggwmamk
-tfwdsrfe
-cpjvcghr
-fekhexdb
-zcwzqofh
-awnfiqzu
-ihekvqby
-rqaqajij
-cumouwzx
-ccyrflxd
-rredygrk
-patcpktn
-mjnwuefa
-tuhgyfsw
-mjpxrgkx
-hupfjqxo
-mgkclcrf
-jkmkhkci
-nkcrwgqd
-apmfiqpg
-pxiawshv
-ledhpfaz
-btikmkwj
-jwosopir
-mgxftcte
-phkbcdex
-uakftnbh
-fnkmdecn
-swrvbjwj
-hphskevf
-trnpfdmy
-odvmmqss
-akvqgemq
-zyqlkwdm
-nbnaqjsa
-mbnogzyt
-mchaxjxu
-tcqqerqz
-ayylasgq
-zqbrjfli
-ccjjnfat
-lvlpdjqu
-luiabalt
-qsvkepvz
-dtyobsiy
-jkulvrnc
-thwjbzkh
-vvhrwbkx
-fhxejrff
-bacuriaz
-grmtyude
-feynnckb
-hfdepyjn
-lvsfflyc
-xfrgfgeh
-vqqybtba
-ntlfjqjt
-zadauvmg
-itukkpqf
-mrnnfgmf
-hpjqvppo
-dshgwmgb
-pzxeoymv
-nlokvrio
-cgcaxffl
-dvimsnxu
-iczcvwho
-lkxumswj
-satmovog
-ujwknitl
-halkgpaa
-pnttnodc
-adsvsumi
-jwerfpko
-yhsjqytk
-vpevemez
-yvjmltwj
-vdoeippw
-siouxait
-ftrspdpx
-hptwqlmz
-haewgrft
-watbdvqz
-eiptzrvr
-msvbioso
-dnjeoucg
-qixvmlem
-mqquklfq
-sszagakl
-khfbexqb
-uysydrlc
-inawynse
-whuonlhq
-eshukapj
-vtrepdxm
-pgjjcisd
-puiunlts
-replddlv
-emjyyhmd
-aahwhond
-laneyzsj
-jnlkdpyb
-sqxrctuo
-wmmyybvl
-ldyvqldz
-bzbrsdjr
-ekxwhzte
-gnpqywzz
-afsfbtte
-ggkbrgds
-dlawfrbp
-opypolpc
-cqpxcfgh
-ynmtlgvl
-slfmicyv
-ooguwxjc
-tewmtlty
-wcdwansw
-ktercyvw
-qrgxrzne
-wvbhflls
-dpfjwbmm
-uigmcaow
-ejzhkxic
-fbewvcoh
-jxbtcmwn
-ywiktjqn
-rftnjqpp
-yalixnnw
-srdsiwgy
-pdpdrynx
-ioroheqp
-vpvvnmad
-tqksxfsp
-snzxciua
-nrhtoskm
-crfvapzk
-wndbcxvf
-syffkzmv
-nneibkaf
-unuvhnli
-ujhdjkvs
-gmyqgvdr
-jedfxwje
-bcshopnu
-xgiprhyv
-onibkkoq
-riguljez
-yodzrfeu
-ogbwakaa
-ymrltbxa
-ourmuhrx
-yxwixtuv
-ptnxdvdm
-oskvgexz
-fbigwiaw
-xctckzmy
-khwiyvmw
-qbqbtxpr
-kavzlngz
-bbklqvzt
-rwlzppbq
-upirhhca
-ezlaqdgo
-ieuynchi
-qmjtojzq
-qrricseq
-hxkrsfmw
-nssfpnws
-tiaziudb
-rvskpahe
-pplmppvi
-jxpyidio
-teudseap
-aclyhavi
-yqafhkyd
-drjhcqgu
-zvfcfbjc
-sqfuuezn
-gwtsupqk
-czakgbiy
-wknfzbyj
-ooxwycji
-wxymanlx
-ewbtpqtl
-jmwnxydh
-ceqdllqb
-jhdbejmt
-mazzsanu
-uypyqlvh
-itnrzbie
-miuegdjz
-tqxeipin
-kbareizb
-jgjxrycy
-epshhech
-oicruxsz
-ptxgidha
-bmgnvjtr
-qvwzlmgq
-cvwtdffi
-ibzasmru
-jfenrbjd
-nrkgwvcz
-hlmghdgd
-emhdaicl
-wdwrzocv
-spwjcrud
-dsgilvqn
-phvmafqk
-iiihsfff
-uvcqgtyc
-doxkrzzw
-hktdpsbv
-evqojani
-kzapomdx
-ewtbrdtb
-rgshzyxq
-ltinzxld
-cazrrlcu
-irfxunbt
-rmqcsbvm
-gddexbsb
-qladhkpd
-xlvzpmab
-wirftlbu
-fxfqjubx
-sgogtrcb
-zlqxxwfy
-djgtbihr
-gslssgsu
-wytydgje
-vmovsmdh
-ogyiuirh
-mtfxzrrx
-kcpfbemc
-blreqhel
-zjsjqqyh
-ciqwtpvk
-yjcinpaa
-wxbxagui
-aqbjqmig
-ybaeuhew
-mjzpnttv
-mevjcrqp
-fpmgzgco
-gklesvof
-jzfssvvx
-aynfmwhl
-euosbnhf
-lcebcalt
-kvsuuyyt
-ltranzur
-nlledtpz
-vqdrgckr
-yodxnjpt
-uyznwnni
-ckczwqkp
-uxtjgoee
-otdoyaxg
-lbccbfgi
-mhzjujrp
-cekkthvf
-fbvpuhog
-nzfannep
-rnnqusey
-aiocsiyy
-uvcbtfwr
-bzqirxrg
-qnmfgshq
-inyevvbn
-wswvhglx
-huxqxwwb
-fdutjnfq
-adajhsjk
-ahllesij
-tcfawzgu
-zfdgmtry
-byznvpfp
-duunxdad
-kgadxmdf
-ptfaovzv
-uhuvlivs
-xcoqrmeu
-nnnlvmga
-zwrbykek
-lvpumidd
-hieivrnt
-vrwqsvci
-npbplsvm
-ougzcgty
-rzvgzooo
-iehafkto
-rzspzjne
-dzvvhvld
-fgkmmfda
-xjsnnlmd
-igvjrsuk
-narcempo
-xrhoiugu
-ghxbpomr
-waxtcbcg
-tmqgsejx
-dobaxhel
-mpzgjyww
-ehyfvnaz
-zxrdlajd
-hfquyvok
-aqxxdcqv
-vjbukram
-rjvttibk
-pryxgzrd
-hcqpxgee
-qjgqvoal
-wmbuvcty
-zpgxmdiu
-foequjps
-lmdjwyfj
-mhqudwzv
-lrzkttsw
-owyatnru
-gwppbbfb
-fvlkdsjk
-pwhlvjtb
-zgldiibp
-sokjzgvq
-kfourwqm
-nfqoyvsz
-hdiwmrhk
-nnapsbht
-blqjjtwy
-aknoauti
-uhgowkyx
-uypyjorh
-blfeioot
-kzbukpxk
-kfmbxgle
-zmegahum
-upjouzrg
-tkedvzfy
-bxwxuutn
-rrwxobjp
-jdujkhox
-jkycewdx
-ivlbibns
-qjshodxf
-bektjeou
-wotjfgfl
-rjrcfiug
-aklhubjf
-kwpnaezt
-lsqvzdom
-pxzvorct
-vcxazyzs
-xsszjsjq
-ydgfsukl
-gqxpcrla
-rvsoxkhy
-rschupcm
-ivlpikxi
-etrnyvkh
-byzymjms
-qagdcqww
-sxnausxs
-giuitchj
-qgolehtg
-keeskeyb
\ No newline at end of file
diff --git a/adventofcode16/data/advent07.txt b/adventofcode16/data/advent07.txt
deleted file mode 100644 (file)
index fb0a641..0000000
+++ /dev/null
@@ -1,2000 +0,0 @@
-dnwtsgywerfamfv[gwrhdujbiowtcirq]bjbhmuxdcasenlctwgh
-rnqfzoisbqxbdlkgfh[lwlybvcsiupwnsyiljz]kmbgyaptjcsvwcltrdx[ntrpwgkrfeljpye]jxjdlgtntpljxaojufe
-jgltdnjfjsbrffzwbv[nclpjchuobdjfrpavcq]sbzanvbimpahadkk[yyoasqmddrzunoyyk]knfdltzlirrbypa
-vvrchszuidkhtwx[ebqaetowcthddea]cxgxbffcoudllbtxsa
-olgvwasskryjoqpfyvr[hawojecuuzobgyinfi]iywikscwfnlhsgqon
-jlzynnkpwqyjvqcmcbz[fdjxnwkoqiquvbvo]bgkxfhztgjyyrcquoiv[xetgnqvwtdiuyiyv]zyfprefpmvxzauur
-vjqhodfzrrqjshbhx[lezezbbswydnjnz]ejcflwytgzvyigz[hjdilpgdyzfkloa]mxtkrysovvotkuyekba
-xjmkkppyuxybkmzya[jbmofazcbdwzameos]skmpycixjqsagnzwmy
-zeebynirxqrjbdqzjav[cawghcfvfeefkmx]xqcdkvawumyayfnq[qhhwzlwjvjpvyavtm]sbnvwssglfpyacfbua[wpbknuubmsjjbekkfy]icimffaoqghdpvsbx
-enupgggxsmwvfdljoaj[qlfmrciiyljngimjh]qkjawvmtnvkidcclfay[bllphejvluylyfzyvli]heboydfsgafkqoi
-ottpscfbgoiyfri[iwzhojzrpzuinumuwd]orfroqlcemumqbqqrea
-zhrhvyfxxcsdpris[xdqecoqujrnqbgla]bpwibmrkcfbzigf[rlqtqykdltcpusvc]ybtsglkxrhucxwv
-msaebhhuxyaevahov[skkhuecthcqtrvtunw]bzlvljpsapsezchptjs[lbcxoczqbyysmha]zdqlfydjdctfnuetghr[owwhfhnjmpekukafw]qqitepzwooogqifl
-jhdfwesnofrkpse[mkruficpgplktbmoo]mnrjpuvsauanolvzhym
-ucibfxxivatgxlupp[rxlbgrqostcioowo]faiimhdhgpockadenua[teomupxzwrernokhyud]ohsfljkyjvkfzwus
-gzxcgjqdbyvfndfpw[ypfsapvecfqihnpuszq]mvwxgfkniekgqzqid
-fipkggpfwvgrqiwosi[itadifxotejgzkt]szwurlcbvffhgse
-ketltdpowbxcusrcua[oonjssgqvcgwvlz]otjxgpizqfpcriuco[mgtgmwcjecomtdkxdev]dnrecyeyhqcpausqzsw
-lcototgbpkkoxhsg[erticxnxcjwypnunco]notoouvtmgqcfdupe[hubcmesmprktstzyae]unuquevgbpxqnrib[egalxegqwowylkdjkdg]spqmkzfjnzwcwgutl
-nesmourutitzqtolwd[rurfefjvljejcufm]jagkqdwpkefkjdz[cctohikipqxxbdjxsg]badmffkslhmgsxqscf
-vvbwenaczgfagvrv[dqjzprtikukbikojlgm]bkfrnbigwaitptbdcha[llnwgonsrsppphnnp]sqozspzzfbeigmw
-jzkzjzzghblqqme[fsqzyykcotbavruyp]vjzohzsunrevhmpi
-jlngucjirfgdgorbgb[nvvkvebcjahujrwjmy]cfnlrssuthgusytkqt
-kegsdcxndhtlskseb[zbtcngduxclffzlw]wrdqbtrqbcpbeaiqvx[svsyqhkrryycnkceq]ztrawvffepndijceeih
-imtafeyfivrcegpagsl[tjzsewuwboushjl]mtnyptormlwiijlds
-sblhlpnuutqgtuvlc[jlkivbtbkivklrnr]zkzcykzkyjxarepzvrr
-ojuqmcidxmsyjkhuh[gsegkxlimzuyceo]dlhjiensaurluhul
-sxkxluastorxmnd[gwkeczwgmamhjquth]yvpdadteadabxgsplmr
-cndxxzfcmwwtcibgktm[ntsvmiwosuvniztv]onnfaenxutizlbxdk
-eqiwaqxxstamxgzc[vnomzylvfpmcscjar]rwdqevxpeqvrmvliu
-tvzbzkhvpzedqtp[whzeqaisikjjbezzcow]hqbizwaaffwbtfglq
-ajwpjiqawievazmipkw[mgfhwrppaxagfdgfsa]iaqcnovhgearcutadns[anaukyaljeflxdnucbn]bhqcwrkeolrhwdih
-neakzsrjrhvixwp[ydbbvlckobfkgbandud]xdynfcpsooblftf[wzyquuvtwnjjrjbuhj]yxlpiloirianyrkzfqe
-jugqswdvlbaorwk[dfqvlubdcigzpcz]aqhybhnoukoyxuiw
-kkkfysfugyvqnfvj[ahhqkrufcvhfvapblc]jfincvlxbjivelqrs[mpoymhslpyekjmy]eicbqlzecwuugez[tsqmqvjiokqofbp]senbbdxrdigwcjwik
-ogiiiqaxakiaucwa[ltdchlxwnzefocrw]koxethzfvlsewbqdt[qdfqgtzftqpaxuzcruo]fvkgjcglmmxqnifv
-epmnxkubnsnyeeyubv[ydzhcoytayiqmxlv]edmbahbircojbkmrg[dlxyprugefqzkum]svdaxiwnnwlkrkukfg[eacekyzjchfpzghltn]ofwgevhoivrevueaj
-vvwvubpdeogvuklsjy[psnqcfnqhxaibnij]fwzpkbdgmpocoqp
-pjdxcbutwijvtoftvw[zkqtzecoenkibees]llfxdbldntlydpvvn[uaweaigkebxceixszbh]xxlipjtlogbnxse
-zmnirrxetiwyese[cedxmaoadgjjvsesk]nuisspyclmncqlasmuy[zxwlwmbzbjmvubgcf]hfqniztoirmsdwz[zlffqhttbpehxoabzhx]upmydjqzzwefvgdpqu
-lwvsssgvvylrvqh[duxjrrqkzchbpvnmm]pckmefvejytvzavgzgc[dcekfwnrzooigwio]pmutxfiwfowlfnnggl[lzytuzirtzgwhkz]yzgxtksuqrgvvgfefon
-tpmyecqhqjjpertn[qomuwmxstmgzexds]ftvqqwsvsrnmvpg[vtpebuufpyieqbhuu]dorortnekxkwnploro[pzajzflqvbkhautupl]eowpcyzmyvnntvzmvx
-foguzgeasrkncbny[tlyweucylxkswwxb]jtzjubgewwhlddar[dkddqrpwaqvlhdp]skkegnatbjubqglwu[pkwscrmgvjzarzb]ibaagrqwnxblvtkg
-ejgpdxesfyoyaggmymi[axfkdoyoqkpkhusfwe]pnczsmszqevkqiwlfc[dqhzcqjzpgnoknmv]ldrjdhopfyctlqtn
-gqhyasteoryuofc[bhblyxlbiqtzzyzvzqg]dtvxrlkyuwxttyw[qvvzvuzhkemwglh]bopvfttkwtaeckq[vvhkkgrddaoxnzctwar]gsscsjuictekguq
-sviwnvbtrgyydtadhz[ipjrrywkoxwuzmlrzd]kcxruwyisqvokporkub[tvarlltnhjmcuvvcck]raafszljrhconjqsqi[snbxmvzrkojpjybkgpi]ekoeuottccqbxrvpkb
-vtouviqjarqwnoexuy[lzxhegzxptktueqo]azfsikzbwiajcrhnas[hvqxgtffjyyfgsjowxy]ddbmpksrtghvvypev[eoepwehfavxzwgt]igsulpdhrevkghzh
-fucimprxzsubuuzmk[umzezmmnkfzvjlela]qxzdlcryifsinmkgeha
-kauzjbailyzpvtji[hgeslalzqgpdkpuvomw]utsywinellykvmuawwr
-oacbdgfaszolybf[hsytrkjoylrkkduzfz]bmoelqhppaxshmfjl[cusgbbuydfqtbbmsju]mcftwalxlvfvvpeu
-ybylybngqxxrmplf[mybpfztzwnisfpfgqmb]fsllclehoezgthek[ldxhvhwniqfpqbl]ebybalwrmrqldukb[okenxoqxjgrenrcjd]kluumgtqybryflqi
-mufsafgfxiegfgf[ydibrbrmiaulexjek]ouwchrlvilmygbuppjl[imyaxsiodgjteppdyy]ugondbuqnhjrzzzn
-idihouejjocbahe[mclnirhxghanatge]ubwhxskdzgkmyrp[vksyktucsyumvxoc]bregaefrdlrgmtwt
-qnsqwkqttdevlnzg[noyxiueharjajsalnhu]heaxmujxhpgjddqur[xnqwujjeasceovnroiv]hnrnwuogebatnfsa
-evruuxfhpivnmknolsj[itpsnnhbtrrbllsbo]gefodpceljlvwuahz
-ebddlswrvbjohtnkyip[qkssdudizhcoaazvyow]xvnqicorrkjrnxixp
-bbmmzbebuexzmtbr[tpzfxmwgamhaikfpaeu]kraaocehdtalyjrf[zzqqtjplepyidohpvx]kzehgejueimxlqglfj[zgysopfdgxtokkdxwk]gwcfaflybmhdgoxjq
-xztpwfipuczrtoyt[uwnlokmtopkhdtemm]sdfmvgvctgwbdjpmvhh[ozjpkdigpjqzqgy]yrkwokmkrevauzroaqm[vctyupmildfnnjomue]cvagxsievhrukgyqzg
-jpmvqhuabqsvroxgmyk[toieqxrazxhhsbrm]wdwhoqdddwdacuo
-mlaqnefjmwbxeetyxz[sziklwesunikpiqjark]iltkcgfzmhvusdnlr[bmfprkswemctykvio]hhsmvppnztgipxij[kvlbovfklljaumwmy]mdpaiazrlputabj
-czdgmoqwzhvfnulxo[mlbkytxjhscsxrgchri]veugcvavrzihzencp
-rbjtyudgcswzezr[inlznakcutfnnequc]uhisbxotgqqtzionoq[hzlgqtkpeubvudi]qqsryagiowmcijbejhr
-wkvwdohwocizssun[kimsjrwwfpilzpkf]ruqhrplgugwhmnn[iouhwbjnqzlqyewxof]exjuguxwmphfypvsivl
-bcnuloxdfhnyesgtdky[hvmgfzcjhhiiqino]sfipughwbebgstwrua[behnamammdxrnnok]ttpbmbflilacfvwiwd[sosjbmmjygpbfetziv]qcosdgrbfdsgqqrlhym
-fbmthzppxydfxiipo[zsyfzbueqoaoxeueado]santekllapuywlmwjkl[yfsonktbvuyilcxf]xjerezinsamruvn[cceqpogyrsztadfap]fiivtuyynltqoypypou
-lfjigofbbnyrdlhxv[gfblbnmkfnpxbio]zeqevpmpjowrxtw[mofuoyllwekzcjtxjhp]lnzewigzwruzlbjh
-xjgdfbtgqmgazgvtif[farekeencwufapef]dxjltmtfxuiydactuko
-njaolcljynwvrwy[qplxbpadtyndosjcch]fscxierutuanappsqiy[jftravlojauqkmgludp]pkfwxpdfcrjrmbucf
-iyotvokljqynxnpjsfs[lfwwocnwcwstidfpb]mutsdjbqfruxxprzrnk
-kpvxcagazjsxgagg[sabugyxucglnvcjb]uvrdglycowrjddy
-zclgitkurpfdspcbk[yedvkzgbawpthoyn]dhvnmtxbrpttrdrio[drdahsrphffqsigrlmk]ykghbvcdosmtcgxdeb
-rkmajkdvlbqwtnuanue[brdlutivdnfekggixum]pbsgstnxgghrygqwpf[rlqzaflmkbvvefdoc]jhbtzkodsfglsaow[onlllmfziapizsd]usvejrxmziulunvjux
-jqlketojwcgvuce[ftcxdqqebijrnfzjriq]ucwgiavuxrxokmvxgad[zmyusreluasvwgzngmx]semjnvafnqvwtvkimy[owvczdccmvfohtbijfu]dmhbiikbzcualbbs
-roewzhbnwyvondnn[ejikyjgtzpmepihnnl]yurjuztavzqkxqlrle[mbjcyqrzfuhhsnipzx]fcrtuzhrqorxrdmrcn
-ycznijylnnqwmqzdd[ycnztjgxgyapvafhwaa]pzdtesugxpchhdb[sdruhgxaqpitoxlncc]exnhjwmnvqmquvclhu
-iufdjzqflteyvhrem[eqiluhtbfuegasby]ikqccaxrpnjjrevdsev[wfluwngzffaxhaflbf]wnlyrgvaxzsmqvc[smkdicgtwwwxmdizdi]joaqneodtgvioxzg
-pddsupswtnzture[pehcqhpltqocptr]ymzrvibfbeasccxh[jwwhastouxzmyhh]xsllfxcuzbtciegzcd
-rnnvfdyavlqnvwze[aistrderxrrojbsspnu]hfkzgodowrlajmmeq
-qnebfycqdylighjpgo[ablnwbutiwhdcrmwbg]hnqeseogqdsdhith[nmrgaeenxhizhoqper]tjxbhutvqtjzpyzh
-batsftctktgebkvzv[rovosiyqqpafttgdmoc]ynnztvhekfnexdcuq[lnevylboilqebnkf]udftgymwddomqmy
-ybrcyivzafzoubcj[crhigqvjszwqflocc]aesdfdfgzcnyxsmzg
-oskvnzcbuyaytyixp[ypctohskpfoxhpydwpf]kgkbxhyfncznsar[vulxrgolpxlqzkknzva]ightbuekpmjodxzfky[nyjpxhpycxjrqdno]jhvrgxgfjwarwzkmfj
-relqdjmixussrbijgqj[mfsyrfbtjbojcesuyw]wsckbuhopguszeh[unyhvpqjxxgfbgyf]dddjalolfjwliasyezn
-xahbldxnvsviywko[ucmjsyoejvcggbtx]prfpnzzlexpolsgsmsf[bgocwabottcqekxs]ijvpreqlfejnqhfbi
-qtcopopjmmcjlyfrtot[dmnfjowrhqtqhevs]pfczfmefcnnfbxiovzj[exoentzecnbfjsy]comgdcvnlyaemmya
-plhhfkjlotvzupi[ilbcfjbrxuildya]uuvdzteoijumhavq[tcuesohvzusidbgpw]hdsgdngmjtlybnas
-yoifccopobbguvkytps[xhkzrdcfsyhpmuujbt]ocidhllwycinggwu[kouoyzxtwiwknduclv]wkokzcbbqvjxtubqg[plgujclgyfmafflyurt]rpjrpxriaxyinneajvy
-jbmiqrqkpbjasqhvwcv[zlyzpnhzdtqiorod]dkigqgjtzmpleja[ijenfaygzeceopbmxks]iwzcpoekmitcckbxbzr
-zixveaipmutzulr[awdlukrjbyxtssfksb]hreqwpgrawaqwtqpt[bykxrwwuypetebhs]xhtujigporvkxqot
-cldscqwnyjkrzvyegsf[zwsvoudppoalxeja]dbqrfscekpmhmpoellj[xxxpuyedbyuihdzdf]bmtfdebklpxvuacq
-ohdqlkppqasvyrkkjm[hevshusrmyhuyyo]qbmrotalialbvje
-nvwdnytzqwrugam[pflhibktydncffbnlva]lguqdlkusqqwovr[bgufsrqjnngbwxnhuco]uanvcpxragayfoj
-zkvrrzmgitfjnit[gezdzgcdvxdkxytcq]avznjhxyjldbqpfoua
-mmyxbuoieontkaxvnk[lijzkcghkhiryhceqc]zuouxoicowwkhklyp[baqxxkavhepnpepnj]jcdekzxrpfucavdq[nxrhabcrumlshoitzba]httcbsbgoyhjpkv
-hpzoxihsevceefdjv[nxgkyykcfpjwtlz]lkszzbxqdrwyktr
-djqunzvzcyxmjqhy[qapfiyujulhgqipfm]htqbtlhlsqxnjyply
-lilhndsdretyqjojrn[oxrhvlpgqiotmvruvh]hgdlazecfzdrmegmnw[alxxixmnnjkyhrqjgh]mpbjuwwcyhdfxynyk
-fcrwgutcgcqizev[nwszwhfvqtdhrymgqf]iiahiososrpdafnt[gbkrardsossgcvu]fmudukrxbiqyrpi
-xpcgsvaeydonptb[ewpsimxlttaeoth]gersjqmmdamhikqtv[sxyvukeegkkbbarjknr]sohijvshdnoawujw
-vnjkhbmpsmvxkdt[yrpltayaihgspvnjxb]ivhwkahhjjlwzxfpz
-ofoancxlupttxku[hkedaqsibrvtvqu]zkssllvuecmgtqvs[eklsqwgwuhucbxykl]ioompempaewmnco
-nwviejwlkyokiqhuvo[csddbtlbfdwtakxlmss]fxdoqlbdjhoslraj[shasfhtvpcsajdsmxfp]errsdzqcqzbrfnkeux
-gvmytvlyluvnmemhgjr[bvqbhytqwpyemefwo]sygljhpvyjnuxzjqy
-zootaoveazcrmtbda[qlxlwntntbkjtkqve]vffdsbekufzemgwomh[vzllvqlmloffyyldfh]alltnttrzqrchacoiqm
-ksbuxsjkmtzsfsy[shracmzkycsuqrei]qrmgsndwzkqhtojsn[innhjjhyfsffgsboglx]zhwuwgyrwmucjfii
-dagldnrnugbavjwiiq[vrsiyprmsvuapxvn]piirprosbofdwzuuhn[epdsrdcpgzkkzdjle]jylrtjltlmvazfpmh[rqqteknolbyzykdysvr]ieejzvgtumekqapi
-mtamroysxwglblwmjn[gmebbprtzaogucvyzv]tjzuzqyyfuihjubuzu
-pcfbudkakpzlyou[zznswrvmytntytfkt]kvudoarqnyybzeddvn
-moelqaykzlstyntby[qmpxihbeysykajdo]omqcjgdbuqvvydd
-ddyczdjdwnoacci[wpgjlohduqnlrifih]dfwcghvsdezgdixnpxe[ohhccenoirazgekq]lqtssqpzgusrlvyrd
-ewirhlfcfhkqbvmvi[ixrorekrimzzkckpel]ihyukzubvqdpnmqpgu[mbtybrusfomfdhlg]ucrcmbvpnjbghnxdo[lyajfieycgiubui]llelwgnuopqhjax
-jpltuunwbrijwnudg[ejxyrxniclwnqxxnh]krckhlysnmqahsz
-hkdpdpshmftvxob[fsdhonsqalgpydpub]dirxpfxsxhpxliqg[tvbhlcqkymtbnytjp]xuvawokttfililgwgue
-mdnmunbnueofzddapl[wxfahokzfixiapig]wekvqzgvufgztlgldh[zwglgerouhvhtbrdib]xeogmvaqszvkdvxv
-mbqnuqonmkxmczjo[ueqnkvfdskaqwesufs]zmoqtlzfcwqaxdnddkk
-qoaqjkdsftjstyjyqd[fyvizziweplccjt]ryvpqznfcdvjxuu[syspurpgsonxbbdrcc]vvedpafqmoeugwuize
-ctdgzypcrjqxirm[ouyjhaohcueqwdez]kroowbthpspnnzgzuau[pqijczlztofszvdzhx]iccbpchemtflqnhdrnw[esvbnyvlckqirev]psrquqfxaotuzsojbt
-rgukaurlmsyzovie[noclopxqrusykxpix]zbbopbxzogbeppp[anouobvemneuuztti]rpnbuugshsxxbbkhauq[zpqywyyxjfabzyppw]ecdrhvipvzregbgl
-vmbtrbtoajfkswgy[kailajjwltvmwasynoq]goxmpryedtsrgkx[hljqifnoadoljqtub]xucplzmspnbxvliaap[tfqpmrhbakiidoxwa]iceqprkydjgouemqsmf
-cvpnedbnibipftign[cigxthfejgyjzvspaam]esifvgljjjbexwm[uspsplcqhomoszleq]qnogejwqjdiznyfellc[sszzsifsfavntyghfs]btswodsrhcrrbodmtz
-lvxwpuujqxypkhqfymh[wtizujakvxzrqwpols]jffeswrfpnhhakyhwlz[lzyloeveicgwixnvdx]uvwhpnjlszclssbf
-noblqdnmgtyjbxjq[chxjibegmcbmljibes]edtgpajthcmqgpz[qafbzkjfqbjzilzh]aorhwssnugyflolh
-hunicsoijinxshpfskq[lniiseazhvpjiyg]wirqusdwvaiyatimhx[jntjijtppuekuvvzz]mxebkmgiqyfaglow
-wvzgoeqwcuudhjlc[nsjqegpxfiwvbtyuo]hehqjsarzkbbidy
-ncjcjhyagdubxcibe[qpddbjyualjarnnpkf]cizleaqaaewqysxwys
-jqslpqaqntewoglud[xtzdawarqxbigpuf]qnxdyobxvfsrwoaz[snegbwbzchqcbavh]kipasixtzznhgkjskv
-hptaschabsnqdgmuzoj[satvzxkqetnonungbjb]gqhigqimupvihhwy[nejqgulbxtzfjbjlya]jywahuqdzrufxenshjj
-sjgpoxxqtfsltzk[jqwzhblplilweukbso]tgorxisfymrcgyr[tfbebfnnljlpcfeps]ahpjfbonoajtohthzri[tdgaokthtdhxpsg]ajcykosmkhftnrjqphg
-tnwtnvvrpilvadiy[taucexvsohfmaxd]cfhrctuhgqwjgtll
-xzzmvrhyhwvprzczwz[lnshilvbyfjqgff]qfkoodzijhqkpuob[iyyvvfibosnuwlov]fhbcvpuqvpxmlolhry[osdmjplktygtobvt]msazwlubhinqvyfh
-wanhwievduqinfwlcou[uyalesnoaqmajcc]zbdddgzmqprwiia
-dfovljmseevxcfarf[enpclythxgepfzqcw]wechankwzxxkkutq[mvzawbhttzrauulkxvd]emcdawwiunjraebra
-sylgfxqcfrqgeeuh[dljwdydnbuddmtdgp]fhenkxvmwvdyaukaxa[xcdbxlqqfgqtjyhoi]tbnpjbnpoxxaxef[rlnmcnmntjlitsmn]vkculrpgrmqsrayre
-xexefhsfpwtpxuygp[omxfywhnlcapmpalz]foblbhtxieggkgpcru[lscwcbkqvexwzzbri]ipjoiumgoyugfzq
-hbeghglpgqnwpxqio[pcujpvhzhghnyjkmppe]jwcnwmqwctqgoxpj
-apqmhkpxrtrfwulqbq[trthojavkcrlcgc]oikizlfqpukeudv[afgmhbusoqjubra]ajbuhxzuhecopcxm[lowqlmwiyvmdojjla]jrrhjmopywkqrhlgicl
-dxrqnbrkijtvmkwq[dvtqzljjbreayipqgp]erhjjvypeyramuaab[cjedbzbceteuydrps]kolgelhdemrbeviu
-gwjakwyuaxixflozol[omjuyjzbtditgoznip]nqybdawthoydext
-lcdwaahhbhajoai[cszvgduipwduhgmo]vpsgnhmtypusbgmhwnb[qitqpalswmqvjiu]iyjenmmobfasnzqefci
-tkxizzrgmsxvmrdawsx[edbhkciwrqmoflyang]nbuwbbspldrfhic[guhvpvocfyjpwwclv]olxhqqgrylvzzqxxd[cnhwdegsxurungopo]rdenofdlpgilpiuvmr
-wkadrydzokfmuiah[mihkmnzzjladulkvb]weqzktdsbwalcdijda[rejzrqqdtbvrwgbgojt]ggruyvfdesfdwenyx[jjyyleykqeskpfmzl]ssqauxmvzygppvncz
-djzzsqykcfbhgfoq[frykddayaohlxmkem]kawloxhrgcpronph[xxkgjvdfespwmnja]jddmrdznkctmsmaxih[uxotxlcobxfemckshh]irmewesnknuknipl
-hzojrovrbmfobhsau[itboujfkrmpgjpsvsr]qgczawmbunmisxs[dtrvnzrayqlvdpyzbuy]wrcsquxgcxpvbwwzlqo[kqbfajfleopglhfui]bsoomwrdifoekal
-cntxerwyrvbludhaa[fclfiyjfekdtavmgy]lnvvlflygrewrgswx[juijxzrpwfrmshbttg]yjeuhzyjbmbdslbdhf
-gclzrtvgfbqqqcl[fdkwmnpoansxtklyusn]ywwzqahbabjbcbzd[kuiejkftwfuzmjbiify]tabpjhaiwzcdnzvof
-hmshguykeqstxgzs[fsnsxtrvkdyrlek]rkzkooteryozbwmda[jyjzddadewtuaqulp]gtprcoocgdsfbtduekc[llfoixzevsmexhuitz]ppiutxxuvaxhzgiib
-ouvpvcchazfdcljaux[kxqnkynylosbuekz]arsuffkkpzlwuibqd[lmmxhndkoldfbtyfpw]nvcrjoborzogjhgwn
-ojesaevpprrzqaksixa[ykxbgapdjiulhmxgihm]nrxxnhdwodfgqoeproy
-vzbltcugyxvtlxqnkxu[fcflcasuyaljgewcynf]azqaltkfsglwgkeh
-urcslegrolaaalf[grobiijzrtgpntne]uhpzjqkslgahpkehix[prmevyrajmgfhsjpag]kwfhbrhzkojqazxjocg
-zwfeopovkggasxxb[fadbebqmbxwktwfdeui]ftomtaogfvgkkdrkc[rdkdznntsigigjiv]warlzbzbnfbjjsh[etjzyzfdjztsfsyi]dulnqfxjoewssxgkfb
-nvrsqzcyguparczn[ewfmgkjaibzjoiex]kpooaykofbtkpawayfh[ssuzuankcdhqvold]qaeuwxgakqvcugn
-rnlhwrnjgxwleghohuz[nktpaaaciwyfagkpqw]yeyzojziajnryse[bmpxxtaljjigfiv]ojzukghfhfhykqrcdyy
-doqbqcwjoldvwtws[qaxghysnphejfacrnkn]iqyhfkjogmrkjpk[hfjqxqeuzwywwmnzj]uzhpypjadzqcpeibcgc
-kmcmhdptzlhgqui[cpluzrcwihnwxrsdoj]czbxutspkzdwesrc[fccnqmeaqfmxtqqng]fitsnmdmyzwsifevbat[fxhgcmqhxrudtnleoww]yhxgwphkxlzhxzjnvcp
-tmjpplcwhmsaxav[epfnxqdzfpxmaztdqn]vwdoatnafiotogpsxk[lydghxujguhqcjqtbbk]mtvqsesoxvybfrxyoi
-fslvgbiibdkhchajyb[zpbhqrokrbfuqrowop]gqqzoqvfsdfcjcdurrs[xhqfcfytbbekivnvod]jxjwuxivnyhppvfhaol[evfnrmrjnnhychtpv]emiyjcjsnojxexs
-gqaygymjihevbsps[iepworrljuepufyvne]fzfjulzebpsphczby[kxaohggiqnjpdbf]bsjfluhncewudkumaxj
-mvjlhovwivdanexv[iaphahshtwtnhoeoqsk]syolycabjeiwtwtec
-ikhcujftlekmcnmcy[ubsoslmlaitakaqb]ruyiqnoobymxiim[ppxtpuphuisxnqumd]qxjhzfwvixjjmfgaqej[bdjpilcwzhqphfumpny]itvjttbjsbfmxppif
-xhemwtnqvfankrccdtk[bbjzsytqxhxcgtedp]ksfozdggjvyvpoyw[tberajbwhcirnenwv]juojuogrifenjsbldn
-bczvqdwkurvezjxgrg[yjvuwvfypobetomm]vtfujjaergrizoots[snwcbtqylvuhnxyvb]turadiqlfjvclpvbweg[mekdlejerxpllbf]bgkveafnrceyxufsqj
-duqeascyrgxyhlspebo[kzimyrleaopbbwmbi]xsxqyleqvoscazopte[debdbibiuaosfdyioum]vjaptdzpitqctukwhf[jffyamdmvkrggbe]qrnqpwcdoditjixsc
-cuxdugzthpcubgw[qjvtzbgagyebkobkhf]tsbcghahxswropcgj[yenmfdvoxlqekjsk]kjdmhdgepvdoovzvg[mafjriyxqtotmhxgvty]mdyayljihzqxhiga
-ehkhfoqcdkpyxeum[xvjaglxwocodctbzj]osufidsaijsczhtfg[rvmapxxierwnjkc]pgshnzbphxdoaitou
-wagqtjalswmbehwmuwm[oarjxyzwyhxzhpgilh]qapupwvuflcoryf[hmqhnrjiahzdfbaz]kuprvbaykjhqagnl[wfxatijeapdinkt]hadtvdjbkdduycdut
-emfkovpbnkaxykrmwjg[otoxyqlkgczzivgdt]nsvpzdvcbsvrbpo[vdfxwihznfpxlbsju]xbcniikjhgzelav[opidnljejcjawbikt]gedgtkiksnpijteviu
-fxbpujpvuboflfip[dogcwovzlakonhdyww]tkzftiqvyzumadasjtu
-rqtkvmbmqtdrqsahsdy[dhaassflbjfdslopp]zetcyybbahysvheand[uncbkqyoidhvxjf]mxqjozeotsollwolhs
-pxfqsysywqfsmername[yfcktnozutkhniqyp]tjzzakrnlxrtscena[bitenzjdqfopqevroqo]zujogbgemdxiaven[dtxlpfkysfcivyrxqt]fsgjjgzltbnlvdojqvk
-guclyozvgpvbuhktwbh[qmueutcpmdebodbilp]vglsdvkxogzhzewjpl[guoovyobczavohc]jdguogegerfiwrxthui[hdcvpajqgpsoxuoawmz]ztwnqkdjnnwazrdzpc
-llcocydhktglycn[aqvpbqqcyyjlfspio]bfwtqbvqbywnhvn[bdkrsfpiokzttiazuaw]kchhszhegdhxega[mgfuozyxaqcxmillwlx]mzcerkylhvawvyujx
-jceiyppxbreywlqlc[fizmzubzyefdntbmd]bmholmqrninpjuux[wkbshvxwlfhlrpkbk]bnqhoqtiqqpsibgykwd[ajvhuevpxmsrjrdwt]ejcwhcsechltmxlycwv
-lhzgbwzjykgdqwj[ksxhpuzyromwycwqtmi]fqkgkgvjfshsltg[ypmdudbfamagwadtia]nxqvzfdgxlwbbkrssc[zqmfrjzhsztnqbdgo]dvzoywqsqizywigsqsm
-vvnbnhvgcpquhzbarub[ufazesxvliazvkcanib]agtuglmgoxupumcispr
-mtpdvvydctgradgywc[mtpimzrgtmnlcge]vxbxcxjkpticzboc[ffiyihkovkviqjifrnt]yhxctiahahicybqti[latcrvinlucwkxhmc]ajivvpmxwiypcjtevwh
-dpnjvkzcoyyzmgvvs[gtjdsruwdhyukkx]qndpbpmhkdngjmab
-raugsxxkqxpsglitbj[ncskiewbnqnhxvojfx]qnqtemgvotsgnlgxyb[exshfmlaagkpxueykd]vgcwastyxsoddgu
-vtmkqugezjlfpad[ljdytmxdmcfjvqus]zwkxtirtowwwoqybn[wwbggxlelxpmctsyio]ojizduyxsklhvogj[wkjkwbzdmusrmnwuq]dnvercuduocxwzzqvc
-kcuaibmbtowdpkk[behnytmljmvkfzjzx]vwmeazoaavjnyopedp
-jzmgdckgiwbhbits[qapkyzlxkcinhakr]zymyymfbxgiypcn
-kbcfgsoqgqvurokxs[ygvbgzijbgfeylxvl]xsjucuevvfddgod
-unfolwpdrbsrzgoo[xcskhiayzcpeegqfoe]sqhinsvvbcdboctc
-yclpzeggejjnvkssg[jaxstjrzmutqmaqq]buvqcwkayhypitxnmp[hpxwubjyepaqhyhud]qhqlpdiqdhhgffsgtqw[ijhwhbvlbixaeywd]fwpyiwyrgoquoeuicxp
-jwgenomewntwyxiawpa[eqcukoqwwwaruuaeoaz]przxcbqvsrozygtcyl[krwnmcxmgcgfbvkj]pcifuzymidokmsecl[wetuprgdinttljgam]wiiixvydbevhtscp
-vzuukbqyqsivwpeeygi[bsfyvyrjgidexcfzq]wyfowikcidviqqnzcw
-nsvfdglsbfbwlxfpfs[hdfyjgnwdgeropdfian]gznlvhnfjawhokhugz[klxeguqtsnydunmtj]gaauhesdugovoftjb[agqwktizuxyqgbvt]zhbzbgfwnkahvueja
-xcnkdghtgpxbfefay[iekwzcvfquaynjpflf]rfmwtjyxputzpsgr[rxbiyhzboydmvufaz]vbibxkxeazvkbzpnrqv
-efxnnxokdpeqbimle[sygsnwvurqpxovmfv]bfkvfubmjyasmvc
-pvyunauqgvtigep[ypayrmkixxbagcbawlh]gsvqfsxbquttcaayobo[cwanbliqbdzlcur]ckdwzoeeeldqnmpnzta
-uaxiegivsmmvixygiih[bwxhotmjiqmiffwt]ifggldhrjitovzh[wtrrvwjwudasapqdal]zegculmtzsyaxytuhih
-hvikzocatynjoxxzjrr[yowwrajfokqlojraj]gvquwhdppqvtcvd[sqcangyggkdiljktl]fpjugbjlanzohbvfylb[fxdhqobssfucfmeaz]mzrtcejhidkqkpqc
-lcgelocktqpqhjgon[vmfhipgnrbypfellki]bqgdqxjnlynzdjogpbk[ppgoudyairolaaomp]utxjqpmjzchqdhz
-mtfryyrtmzzlooy[qltyhniowpskiqmolx]nuxblfnfrcqtjqfbzi[bdslgcpqyowecpp]vlxwrojvicfzzzfb
-widpcxggzgbkofmmtkl[bhvmncpisdisugtk]azxcnslcqsbtyufnt[lqwxnibqiwuwzwkf]iqnupikuhmhvvhf
-amceoqorrqtczywlb[znieihkpkxkvvqxk]rmoexicvufbvzrcxisb[nrrbalocuvporahypgm]sapytlndnufcmsmnl
-ldbwysbqqkcizwlkqk[kxbcvzlolkrtyzou]zsqlgwgtcvtkmrc
-bejhbhwlnmysyqgzk[gombhcspwwomoqoprog]zgwpzkhgbgaveqpe[kldisefosjggfqzo]eiyzwmdoqqsrpekrs[yoblfghskpxbimnq]ewghiykdpitzdsydl
-uxdgjfelalnofqouoee[obhlfmbrcdwvtgs]hgtqhblpsfyxxdmruq[amhlljtgsqandpxg]uftttypexliymsri
-xwcoczwpeprblqvdsze[fcqzupldpqdpibi]peaetflnafpkrqz[aibobqkhvfzpwaajxj]mzlrkrfslubibbu
-fpofuivhqvybvczq[zbhaursvrqknspvj]zlovzphchihqwko[bxcpnqiijtjpypqk]hmdzgwlnervibxuz[hxskzadaiwuhkjrvia]fqtcewytffzarnbdid
-kqzfapnhrgdwnrxtwcw[keiqggcxbtzwrcvrvl]itnkudvtbvfwlcvguev
-folpqmauykgkbtb[sajzutpltmpwuvzu]qgkgeonxzucthfluwfz
-qiniyhvlxrpcbscgf[mmjtkliysclrogfxsx]snxccrqkeuqchwfi[wbbptxydvrbgemquc]uyqttlcltqvqmhu[sawrjbeubszmuwsjuj]rowkyiykcizmcgha
-xafcvdeuuhyxixxn[abpngbyvpnkmojksc]anahdcroysddmoxf[tasztimgjqwkkic]fiycikeddfoyafacbfl
-fzmscbkkolwovgnjeb[qzholetigkxxmnmkoc]ffztdtemtdnustwuu[zjrqslegqkywtcaqod]qdtqbyfhwehdezedf[qqvslpytqtjuzrkc]knqvowafliildhqxgex
-hicsgtpdpugetplbufu[lzlwcptzokxrsxtrl]smxnwfvtzttcsesdu[wmucgluptdavbca]xggqqcfaxxcagagkx
-hwnfzlhdbchsmjwaytr[xfggqnxtnpdjzuyqm]efiweqzxmsxetmyjnhc[mgjnkbfmmvyrwyocr]jhviqqnrgzjsdmidsjs
-nvouetegmutetgw[keqvyocxdetebkcgl]qfhnyfdnjqnklpad[swuvsfhrnzsnatb]zjwqmrmphlgwdnms[hdlfprihcbcemfn]lrraefojxvtpxljil
-fowkqklueytawgdxklx[pmrpenfrmskqjttdqiw]ttqjijvoxxfxrrdve
-nsyzzlnqjssmirvejh[gpqbubkrsqphkdjwg]gvzcxqgbvhopkgy[nzlfaemkjnuwvhul]vxdiuaimpogvtkx
-pofmqefryoxboubl[neoxktodwrswfsxwruj]frlrumshrtcllqqf[erlodpkifgfpjlbl]bbfocfbyqjagesavoc[ajasttvajmlfwec]enqqcyveejcayzw
-rqtdsfpdgwrlmfj[nmeovqshevzueyvd]ibiplfpvkyxvacl
-wtvwzmpwviqbzol[oqlqunyszsyebxbm]ywqypuyvaiegekaok
-ijcorxkdzocwisjb[qvcjrwytrzftjicua]buuniicmziszwzikph
-pplaiaulcciebujjsx[hlyeskfzscwmeqss]tuuolvvbnyymfmo[trsqblvfyagxmgtwfk]kcigogbmkzsjlsrj
-dbsqyxlovoghbra[lwqmeeclsvfsrezsed]odqamvyyhsmctpqegav[xxoamahurojgqse]tngvfzhoprhrxsccgnu[zwwglwyqrieusmlfmrv]tzfresqfmfspigfeo
-tmnutczqpsydibk[skiokxeqdgilzjq]rfkxwumjpjulbkiz[folgircuujlcjhjqxa]snhsgynrkjecrsu[vukuvrankaiilqegzup]clzyhjlcbrfdbjrzlu
-opgifufncugjrflllk[epkqgmpkzdijtdedk]xmvotyghoniyalmmg
-ovtwjnqubjphsgapb[cnrcpnxrfclncasoeka]duqduyvmbzwdopyxp
-imtmstorxxvbvmz[muklxeyazsgitgb]sjuudyrlbxgtlph
-zbnvlmvzeitlrvclu[rwlyxjkxlvgeyfzdl]uzlfzyvmybjonpqay
-cdxryezdoiyoopuzgl[rnmncixgvbxromitr]jgqlptcrlpzdrqh[sstvgpzcldcmoslnycc]cyrecvckpuyjqifsuil
-acjvnpfqosyvnvzbjyv[tmnczokfkjaxcvwjo]cszegpeuzanwadl
-knqqmdktrcvcikcfvcg[lnsoisfwtfpizbpo]xfxuxthdxsekjpi[qsroiaojvihodgq]jaamntgiaqvdasnz
-mqefdyhtbqynychpbh[rrjozrtcexpbrpvfs]dotleanpfblcxfltod
-coayqpuuvtnwmxzhgnu[fyjdjtselprfevq]elfqjzpryzqsyqykkb[utrizxtivhakgjoeryu]ozeuxjmcorkcejprcr
-ybbgylmtmhxlhqizp[uvknavcimbacgtcaq]bcmdwwkdvfnmnunyp
-xfdywwnnhzqqvuywq[drtdcfuoxvlflptlca]oimttatgiboynmu[sdgkeffjrteokyiby]tdiaadhkqdginrtqpq
-fbpfhfecwfprygkwu[hvqikgwyrdwtieahmt]dvtcvnchfsienpasxw[ybkvqrxztwzpsnz]aecndxpzpamjkanchaa[gbjwjnipsmepfxpee]wqjnfjiezpzacmgf
-adwjbyiantljqwsixso[wpjjoobofoumdxgrxv]rkvrcmmrlditmjtsh[vthldqtnlpjrqbobzs]efwiuqkqzfdxyhvgim
-hbbvxnhhxsvghuh[fcrgvyndxojknfr]twczivatsbiynqjxeby[ckqrjoolqrxxjgejzua]omspfwphybvgiqpsc[hmnpdaumzrmqrti]sdysxoudxhpllkknvq
-gfussckpoykcibjnoi[fqnfbkgojenspavpz]xqwvoktikoqyzpofg[xhdumbvmqllllthhsrv]vattqhipurbfvlk[hbebbjewrlmxdblgq]dmdhdbknmkouvie
-tupwpbmrvffvqbfiw[rqpefvswlzjnphduk]mvafdoftaeiojrirv
-bawbqabxqwpswzezv[cjmoppcjgifyfignuf]uawfxptpbgjnqbv
-sekswalpvwmmczwdxbf[wmcngumevhrbffuzwp]tqwvmkfngyrhgknowv
-dovrepylcvtomveqe[vzzskfllpjbvrvrkryl]byjsouhntlopqffti[lqxrgcqywryeexyao]qsukbxhzoifswmycw[rktzizqtdvetwyrchc]vtsdazzrpipfcrnxbk
-ydnkchnxezkalny[wlfhmxcboamfrry]rmzprrgselhmfbeamf[dssnudvuvyhvzyacu]jyzdefurrnaqrfzq[rnndewpbutqgejcy]qxuganmeckxcpdtd
-xhwdvxmfxmktgaz[qfzqjtuqokjeznwalq]ddgmotioparmkkudqef[pkgzogoaxvcwsao]cyebyhigpzgyclscf[qehxqzuztsluyweopsq]tikkkgtpkewkzzkdu
-cygqebguktathghp[qlkscioiowgqftpd]ytftmijxsnhgacfmmf
-ccuocdvpjktkdceebi[pshiishnrprqohwpt]bubrhtrzuabpzzvbwrv[msdeugbygsvewfxco]nzavazcgkniyxva
-coscymyrfqgisrge[oggmfoqevlabvhm]xfyhzwpfzhhyhimqkhz[cybjjylavqoqjyyoy]igzwdivoxazgajmiy[kkxkhfunkpsgyvwp]isgotyzlmyzfqrij
-vaezncmuzyyjpeomif[lyvwvohtlkcdyuxze]wzdkddeqkxmqbqet
-yxcqysoxpbwjlqjdp[jinwxwcdeflygawd]hgdgruqilmuzuzhsg[ivpimcyrtifudwjgso]ostoopidgdzcrzzyzts[vvaiuzzuzywesuzk]ccmdnuyihasnldexf
-jhpygjolrfstkxwt[krdivayaqwfuktykopv]dmposdxasvjkzjesg
-lcprcppxkrnwuytdt[wysluivwtmytfgqpks]orlmxnkipofpsdteaa[vroskwwxeeylirbkna]zkeahngpukldeszwuk[harebfdcelqdbfemgo]usisvvczvasjomnjrip
-eybojdjnfockfbsdjd[xjxxevnxuwjdamien]frogttytivtegcy
-rezxczwcihbkywyq[sdzzflizzygfiovwyw]jhtiwvelkbaqhvnylca[xpnwnmqbaawlyqz]kftcwdejxaznztqsbhy
-zitlyztihmeogushh[wpsygveulmddxdzvwvt]auvwghiyvkvfxyzf[ccnkvkboczqbgcmekt]hkqnuaoeffocspxkck
-ucliphnwkaxtwgnma[wxkbcziemdvopzeq]nwxnkykbefamsdo[lveynsoldnjkcdn]kluaaaoiqsepyqfz[bgjuhrlfjgiyngwkwgj]ofjimzheftgbbyrugn
-hshzrytllakuifsbuap[znsqxjzxbeewshkb]tdiohjkqimfsaijvmvf[wxvmhzzkjopfxhshsol]qgjutmxlputvudf[thwwxcavnensivbscm]dounftyvyaoguqzy
-hktpfbzotlbrgddcff[adqmcoiraqbphjpag]fxxdcjqhwkftprk[lfeudfsbvnqjvywynfl]whirlnojvbkpyndhyv[xpypetlsykaucaibapl]gcpogvgqrgensxdeyh
-afbiuqpasfjkniuw[bqclbergutdzfdqhdpm]gcgpimwjmvopfjhk[geztaacbsloyevwikqp]jjmlssrsuxmhbtnq
-ojotaeydgumtjrfdtam[gpkjanckhqjvfjewt]zonzrwxnucpwtrmqyhv
-llkryzvclmpozerpao[gfrhlpemunmdackfmp]fbntrvdilgbposhu[koksbsqnmtfdsyifpp]eswrneaxvurkzfs[ixjekbpjqsrhnpgw]pppbdmxsdflptotr
-vbmibdiednxxbammtn[gqvlmbobpzpiuoda]agjiighkbopkxvwakva
-fnlgxejzkpocaonnloc[ojrecrvcmirtehjfcvi]mrafnbifqfcqxpmqdrb[obuqfqpyrkeinweynd]qceebfqvcmnowjanh[ejpkcpwkjfbvyjmyzoo]hhjyeulunsuagwq
-nubgjzyeuxvtwcc[vlpjhggsyeiulml]evysofvjmwxxazzr[tapuneqjkzgtblgy]gvbvijhcgtrdsybt[sdufwiyfojmptfruns]zqzvbotgmrcynfyq
-ibcblmwnlhhftwfd[ajuhvgkyaqeikjgju]rvuwgrbnjxvbcgdpy
-hizeoqbkkesksvtjotj[wkvmcgctdzwhzlubt]aegcgfmdneprdbw
-lqyvebgqsrsfbcdccps[hygatrvziszspyihy]ratonoqinqfwcmm[pfieelpgzrfzhdffhx]zwaytmidpntpolajcg
-admawesoilkvcfx[rqurmchqtkuifxm]tliyyitqauzegwst[zwpbngnlemkipcku]hpxfncvznjgfglvugk[ruinbrosnwmxdzav]adbvgjbxedbmxbkpxa
-gpqgezsbrdmqmeihdr[etboranxahpniwzr]woeyirnlebizohoa[rufjzeicrsxgitspt]gltoxcqgcsnvlys[dcvxqvoivyuxxayd]zkxlasittnitmoisr
-acoxthwyfwbhszfoz[wphyzlksmfenksfs]hpzmfaofkobjpcdxzs[sncrftlydahuqmuvoqq]ojvuhabayhrsynq
-nxtmkatkddomlbnxs[qdqxrwoaamrztvkzq]ycyqxxaijhrpzamcbh[japizeqvlqsmdqygr]xhxvgqmbzgomhsm[kizldaqvytagvviondv]tidqihojfrzvyxy
-lllcbzykxbdewnyff[iomemkjmyaqllvcx]vjvnigrbpnhdrbi[ukmffsdgnyqxafwstg]ralpevvmfxtqbzyii
-vphviazdmmvtcyc[dcomcirqycymvqkm]meeikjmqliqraeqd
-jcgueeliyoclqera[verzkovhghnquyndr]lptflbxptsugmbhvf
-rcdghcuautflhme[zngtjffrvagsmdrxurj]mwsuxjbytlzyhinxyr[cibaxfqjdkmdwxr]yikrelnmbneqrsg
-jyvaeqjealrbvbvekn[yharteswtwefyedz]wosalojtbxzaujpiba
-cdfzjfycznejinx[uhnuxxhxgipoujnarw]bkwbisknvmurfnhp[jwbnvuvlvegrddzf]bkeykrhmjuphuvoza
-aalmyxywwvbwwttad[daxeeneiiiupzvqz]cqcjxzindssjrqb[komptxyxwgtnuedefro]xfbjflfujclbqflke[fpatdmophhvpcmwfj]cqbuduaifbuhwiy
-kogkhuakigjclxbjoi[yuidmmdeopwzvatxc]qdsbzscrwpmnloga[xsnwctwrdpgqvggoian]yayspjjhhpdsyzkkzx[qbttlvpkbplhagtb]ndnljzkxhgdvclz
-rojijwgcylsaspmmrdy[jzptmasniljjjusl]fslcazgojebnrrrz[ybcsqnloovizrxiwal]ghjlkcnvkjjlqodusp
-egzqbmomtlqvjfo[cdarustihbcqwpfpcv]fzxqpzavyniyjbfvc[wkmiofpbdcsnbtj]kmtvlxnlvdjflivtuge[jvlzovzdpwxwbcak]hwbtpuolbupvwfcbh
-drzhzwluzurvcjogd[haakukjmwslumvgq]cmwkhsuahrqxfae[kugdxfrtkjmyyfheze]dyxxyffqsfctugyca
-mlalvviidgseekfkqtk[rmltlzesxldtmsnyn]xdqfkftanryqfqrqkhc
-vkajuyjjhekfhmwwek[uuanfibpmdbwxesfmsk]dxpsqnnmrnspifpcyts[ezmjkdjacskqhhbaupr]wkzxoqszqigbajudnq
-wmpzatzujoibyjdle[awbuzjartnsdxfqtlh]votzdrynubyfrdip
-tstuekiwimhtizzlky[trscvkeiiriseqj]glbwxwiwdqhndmnku
-kjgjcnoipwnlqnk[hpukxdqokakrgjgjpk]nvinvznddzuhupepemb
-vuawkeimjefqtywj[mgdvjppiouqnnyhzz]eeemepklcxhhfot[ktiuxquqhzrojqo]zcwlowvczfjucqeo
-zatolywcfoplujidaz[avcmpullpablbdhusiu]bkwehsbzcysrauzz[tbgkmrwkzqfysfdh]anakunhzskapvmq[cqzomvulpzbizfuqug]untygoozordiywrnkm
-ozynyagffvaeava[lvsgzdvrtdifdoxgvwy]pdkwomqrhfolkmj[fhemhaolmihgxlehn]huscypjzuujagfaqk[deqkgecbrdfhskujqg]grknbktwdyznqgrwm
-mywakayudrxzofpri[qlywfoydoqmsmaoygp]xpwmtcqqfqsmsys
-sdwltsgbumfnbqq[irstsqsogmppmlmkont]lrwnbdnpkxgfhjeo[eqstbbwumfepxoqaszs]fdrrfpfiotaugunbdrr
-bappxujhicaqxhwiaoo[bjvhcmhrnldlwyrf]jdxfokaxlkbifuwyv
-jlziyvwcuubpsziikv[mvkolefxtgoarsk]tpixifdoybzfwnwle[lpbkitwthyxdbvwflp]eyuzdxvhuukuiaqfp[xcwvlmoqpjnehwudh]sqxbifjmrgwknsno
-rblicwlpfezecfhati[aqqhagfhathupym]vspyjiyytesirim[rqjyqiviftryoyychs]voksponpgjfuwsp[tmsccufpnvjdtgs]llptwgpugyjizqfch
-admwljcwmrudrrph[rcxxxswmdlllfdwrk]etyjbtmryjxeajzccmq[nivhwmfzjwaspuon]tslmnzikhnbtqwkf[xnwykihihgkletgdy]mrtryzmlleorzwpi
-ibgqtdglmjgcdfsycxt[ruddaxuheyvamwyi]neoneshgxmsbpydg[ytpshrjgditzqmjdlz]nlvhgtzsbzoskiva[asuilfpsgtgyftgtsho]xgoevzdtjemapbnady
-appgubyezsrmwec[wbqyvobthbuperojt]gqxsjlchxpwvdfvdf[xlndklktmbpjkzuo]molwavhkvungdkvwywm
-jusgjqhnjemncvbvy[voitjezdotclvwaggg]ffunuypbjmopbbvoh[lhufstqbkhqxqiworpi]gnhhneydiasvmbvbga
-hvboappbxdqyjvxqyd[yukgymhpumetulsznf]hgiqjmlrezzsfndrx
-jkovbtabgnbztjmzsoa[flxcmdoflhlgvaio]qjxscacvdykhkxclej[taocvcbcyfrjgcxlkm]aovpiymrcdmebktxwfa[coviwkpdmukcsixdob]trjjdhlgwwkwtegkqmp
-ibnaxwwqjgtgxnlax[zozdkkwbccwdbvbpf]dwuzbcgeqfepczlvwo[pmlmuysuwyudzjam]pvhpqtcigtknoqxlib[kvwfykhxumzltcxidt]hybnroedkguawhgl
-xqwhbiiflggraco[uwhisdtpaprjfji]dexzbtghefojvtt[nlhtexyhufqeneytdtu]fpskbqhfhavnbkjxwn[gtxmsoydrotriljoov]labmxjlalzgybpdjm
-ibxakiwqconeyudxj[mwzjwhmnlaobsdy]gvxbmnzqbrzuorla[dvbreuhggwgdtbjet]hjrvpdrakncsfejis[tstdqmetsguihzdws]ukllrzriimevvsekrkv
-ztiyqybtvliidsq[mvhqxpqunpsqouvgrbx]qmhkzbqhemycwxeq[cdadaodqyhjhelanr]rtrnroumhiwdadrbe
-nswbgqjuxdygjrihvn[mkznbbryojdlhwee]kccwymwlzrsilyn
-sebujequsxstufe[romzdeirdhctzkmemwt]vqcobpsqzelktljh[twewiabushguyyp]mktiojirfewuoacey[tgnliawsrpkhyko]kaytwdodmxqandynomu
-qvfoyofzmhctntofr[xcokguepiaisrpwewng]lwwzyewekuamxxlepz[vybjmfsierveheb]bzvvxsdlcohnpmgir
-txjecoixmxyskgactb[tvgiyxcbgzkdmgb]yvjfganhyoguuygau[vztmvqrrheqkzasss]mngxndysymgybqw
-ptprazbzxzrjpnrcbko[qtdvwjwftefqzaw]ajavbdsfdjghhismds[vvouytxwsxpkttqr]kobwalobjsrwmxz
-ucvupuxupiasbzxsuo[hnocitmtlqgttgdr]qghjdvyrttaklumszdi[oyeqkgycqizvaok]xpnaaapzbfqdzvcqhr
-vvjibkoyadzluivaen[cesqlbhxmigdxphcr]ztmuzxnzeprichmdsc[daemwvspbbljrfc]jmqbyfpmjcddlepf
-ztncnhqvomvfnkhca[ohbigcgrevrnpvuwgpv]lnjucgcpghvtzlrgkh
-nsdamwafqwcjnslx[upwtncktpxkvkyhd]smtcegxuoakvjrl[dhvmeqrfgnbwqtd]zwlvwesmxdcnywjdb[whrrgcaujehwqcf]ayjiiktvzvxxquszmh
-vnqareestxydfvuvj[psgzifyszldodtw]zkrympmklegtsstov[gblinnqlnfqargqx]hfcchypjbzvbleabbo[xvlxasumenqxcdgzqo]zyhgaickhrgscmo
-jqaahcqcjjtinevp[kkntdvvdghnkloliin]zmrsdzabbeotokuz
-vnrmthshyygudsrbu[yjvauysxhjhnmqenmkd]jbjlrunbjbzvilmyqf[gnoejrqddyzsdixecs]qipibwxkrnbmdgtevfx
-uoqovspbksjvndhjz[gntlvpnmkbjcbsesyk]thzecqozlhmhrpm[ebvhbuhvuyfudyeyeey]zdlhgafvupyipekqoqt
-hwilsmnzpcjvpyor[pmphksrtsuqgkdqfyx]psibvhgullieqqwyd[uqesmzorfwbvwgkiu]hlxqjuuflhxlgrub
-dzxxmdpesgrpwhw[ohdfatbpppptmdyia]pqxvivkjxrisnmzbrl[iilqjrtayjrvxccs]gwfohsvsvsldpwaelep
-vaenounqqmpnzww[duovdncntfceyoqojlv]qttmppevxurnlzde[jhwuqoqwdxjwilrgxil]ehuvfpawjlrzmssbzkm
-wwxcidipvnqzxsvhaxw[oivkplzzdeoyqlemho]qthsqnpnbraqqkeyvk[pdkqargzfikxoxwsimn]biqpfsweppknwjvuwx
-yefdguujlfuicqqiq[hqlabsggdampkda]tccxpvlmetflxhnd[oqnlgkzvzbhvnzzwz]rfugmbtihisgdklb
-cmapvofvmxpioycw[wsmfasgncvdkvjnodyr]dkxkldjxlpdineg[omntdlldszepbdcynah]swcjxnbotrewahi
-awbucpjznymkfhjaa[avrrlftouhjbnle]atvuoxpckhvplxm
-wfrfilbmvnfdjycnlsf[thxhuqnznohekfern]ndjiygqshnkfehr[jpdgoiqcdevzyrywcp]iuqxgoskimjzasbvsct
-crckwgzymgpzhckbgct[euhwrvuqcknwnfwokiu]muiqtteekeqzajvnuc
-tljyrckyrcnheftu[xshakjmkjvzulic]mrloxmdpqnxcjhnwh[yyqdzldmfgsnmph]lwlpnskgxbkivqku[bwyxcdoyizqjmfvmc]reyetuasijwucrgylh
-zkisfuqufwbhfklf[nicopfmlcpsvwfq]nmwkhlxmquqelszgbe
-cqnuuhyddzalcxc[fjmqzkljrqjbexcxxf]pbjsvyixepnkthndhb[xztvuzlknucygyvegxp]nwxzswdvaspdufotcxs[bivsecxgawosnflmfd]bvdtxxionieorvecr
-txqpvnrfxykothvao[uikgxsmnyxwlobod]tddprkiwjtdcwbobzrn
-qjgftnxktteviik[hsnjrychdzepxamtfop]golzdtnptijzmpo[gfgevfrczlektwaohmu]vauncttcwnozkrwc[ljvbawzsqbknkuktnn]inwckpvsipmunmpo
-kqxvmryochlslekzhl[ivuyfsoefnqqtwspxtu]bytaafalzlqvjumuleu[apezlzoaspstxvknv]mnkfbppakmectmiafs
-vungsqgzakhfjlbuwig[cgydynonrrgfswomgev]lkyqpvlplfsmznc[kttzkoqpeplpfaoheek]ssijcynyhenhnwvd[hleabsbwqkqqnvdd]xbbxdphvgzmnauj
-rxweekbgidxrpbcxk[zvguddibzffxqcmvq]edhnueezmvxinaxyo[mqhjuhujxklirvkm]eaozfcadmhsyfpoj
-rcdwnquofraczluzh[gvtnjtocgohcsiswush]gnajmbxnrzppwobfjta[dckvvzvigupevbt]veqtchjayfclaltohjl[mkwsfnvdltripnzdkwr]jhdwksbflywaaul
-iltlipfzwdrsmefm[brcprzzhfwsrzbk]dlegyxlpizwtlts[fcqadgpocjjnahyqm]htwrqtzfxoeamiqgeq[utrgqiasppoxrbhhv]hwkrxhaxxtltgbuvj
-ljimkpaohzhoifdaiko[dkjxnandaghzxflymm]szzkmlubraphtnokpcj[irrxpfhtabogipufkev]bjucnqsbphjhekfvco[vejyxqrtfxuxeuelvmv]muygwodxspxrrijc
-inovovgduyohxdw[tbzvjivtssmlxyc]pimyxafhdeyomgeu
-ivahljnswgwewyhhn[jvfdvgftpukjcny]rtisgwgamadavuw[lmwlmlrkckbundmzjvo]eqjgikocnpbjpdh[mdpfdbxenzwycoou]uelglssvxdcxlwucz
-zolsnrosfihzzhu[ravlcysbjoagcvaacmk]czfdqdbrlvweyyvbq
-vktqafvmirobwwhtr[iqvczcryidfihypuz]adgkyomqrwfucufmm[ecbtnwriqiiaurzkn]vtyotrwlidvraksywke
-oagqrhpfnkdvvsqemp[qsjyvadkirmihtfezev]vuuantqauwqrbyzxpev[mpaqvjcfntbdcpdi]ghgstpggptgbvwnmyiz[hghmuvsvhqxvxmmnx]owoulisjbqpndzgt
-yyyrtktdrrprfdtbyli[tqbcxefwdtzllez]uaixdyuensmvobo
-rginebxdxtfoudqwqx[bvnzfxfxsztzqyyq]dfvdsghoihksjcoccbe
-avmokgrhvdnoptv[ngynfydflwspxifoi]lcdqccyarzcasxrbue[navvkjotgujkewhrx]ogzqcdvefknpghfjssj
-sshuolwwobwchug[cwcurmfcxqblopvho]ghvtsqgltvvlsahwqpt[skxuphjregpzpqm]epmegfynfypbewftism[mwtakvgutsuppqz]tvapecuvnpedscjkfs
-vsqfdssjnhoineb[tmcwmioejrnbdyrq]hlclokouzhvmmywskkk
-zuxeupjvtrzzlwezm[gsptwvqfzpvkevapsvq]pvjuezgybonsblmmxdv
-dsyuvmvaisuqxff[vmguqxuvvtbjrrva]ivytyfdovrfmzudyzcw[kwgjymkeadjgvdvxarz]rpizkvgpobjriqutyt
-rpetcixepthhnydtsx[dvivlhhlgbxftlw]ensdqrwytpwniviwh[uierkmawdkijrbrbb]ywvqqtldiulgtft
-iruarpzjrxupbdovqlk[cipcsklubepettbee]jfnvwjcgypepsbnauh[ncvfofkqfotujbat]moqzftmyjreztaugkij
-uqqijwordoicegmn[ihceutxbgzatiwhtd]hxqgbplciimactv
-kthovdomnavxzkrtg[utmtbhgqydotlxos]rtwopdppoocytum[ptdpdrndjiboffigipy]fwxyvpdnlhjofwjtwx
-vitzjdhxjjossygyje[vzysmvvgddhvkufqb]fhwstpatifhmyespsay[mrpnqgygncsiwial]cwbbaisjnqrpuzca[taqkhmlvfdelcrzbryp]kwsdxlkmoplziobgct
-iwybfvkucobqwagtdf[nafgfydrpzzdujp]nzdzwcpazorvzncb[niuturhwvakdywurves]txickuysfxeaamhlv[kpiwhdphpimfnmjinua]crunehowomfdmznrc
-qololsmsdenfcxmtqxo[orjyxjutzakvhok]wgcgzavspuxtiyhdds
-fvzbruyrecjzobgjfnv[tfnighcrmbgeklgaq]eanwrgtehcxvxow[hrmkbicsuekiicxw]pmyfavysbfzttzncxbm
-frjvccazhabvndxri[wrmbltymeeoqpqtx]hbyuxmlxfrjrzifpj
-nkasezsbfuldeolo[wshypstyfliqxplkh]nsoplkbnmiagngvusr[mwpwshlkyfrxlgcofiy]ycplnfgorpssaitngop[rtplyrqezwrwqhc]houlrclmoatskoufgti
-cmsmitcywtmhtimj[pevbzyuhvaqftnugc]rjaxtggjpjvayzmhx[pvfplwswzpusjzhom]jmaurmlkkbusduxd
-tshzomvzzouayvevgb[esegiphlwqwlkgt]letvbhxdhuzidevee[zngibooquknjqqxnxz]dtnugmifjztkwjpqd
-uuzovqhxwovqeki[ddwwgejprtbquodnj]nafunjrpotozufcf[lqyfeicklrejcwwrvxu]kfxgdnpvqdmvvitzt
-syawdtcaspkeubwty[vyxykmhcofzktwfex]fmevgmpetmzurpou[bgqqdkgrojeesxj]lhnvraueoksvtjz
-hkyhsguxgsejarhub[kuluosrzpmogndwe]wzqvcpdculcwgqldxm[uybwzbsgzjqfspayk]nysymudwyxdocossgu[usnahkjspekuwvgtje]gtjxtcjsdvtzwmf
-jiuygraiggbzoxz[wopmhgtzdwlkyzvfhs]kquojxccygvgujcopbq
-rmdqmtbvzoocsjddyj[mmwewpzkjayrxkortj]cznmpvsiqtjdpbgbbf[dfgdncqhajjrohr]kjsivnolfcccyijyd[smuudgbnrfqkxzec]zukmasqygzxrjqoz
-zvhafubtbxcnggnnec[khfuhiaikrpowmg]udtuciwamjspaojuks[wlzjqwtmrfrfxmxcfd]plaqjdorfrbkkppep[exrlzahsxksdqsllkn]fooqtqpmnglrwokq
-rilxjscompommcmc[qpdxzxqycqutfyj]xvoufpojhanaloymvez
-crvrlgjjpprknkurjq[tuvlylfiibnpkzmi]ghncayxzzrrhwfe[atnpozkssbyznplv]elzhtwbiernezqns
-yvdbhamisqligavziqh[jcfjonwpgcszajk]xdszcpfvefvmlduoo[vqszbxqazfwgrfazh]geltrpsnlfyzzxjsg[usmmfawdtvkvkcm]wqimqpbsojuimmf
-fsgjpguxmrmwxeymhjr[gsunymylqpnrbmiqyi]bwqcxjzweyndcslvxx[rhtvuzqaxazgzhhwp]lqiceppxpscreytystv
-zdzsidcfertfbeifye[vdttvawxhnsjirsifn]abpddikgqtsqalilwl[mgqwvkdulrgdgni]bqjuliwrgnvycgnvcr
-jrrmfvdpwdborgjxw[uqsuxsointqfsbunl]qosvmfqnyadjfhrc
-huekbtocejhhjud[hzglqavqagcxaaksxp]afqncrfalluiiqzfo[mdgrvbtzxdzaztpeg]lsthchkkrvofbaa
-lsehhfmwrfuqzewvxkv[rjrryjrjwhgtdifux]nnhqgwmoxdcixsna[wgburhmplkpkrgmpco]hrakazqqsstcrxupvv[mhacbkzqgskhorwf]fbobhetgehykvsbmb
-cjmaltrbirusgyoirp[eipxzkuhukkdcdh]iqyymukrkwitywb[dcvtitgqvetxqip]sldydwlrcdcrljhzu
-oqpgfzdkcrsrazei[geqerlvxxatddmn]igakhcntksmsttyqsv
-tjhfyftjaclsdwzby[oiinbkqwzmhzxeic]ehyliwwisegufbhh[sqmpgxuqhsxnzdi]whwxlqgetakchwht
-ukgmtuvowisscvp[nhzgobykdniheamz]ekflzosxwmggiuuudz
-sqbsxlbyunhhepfx[okuhhqbyojpkahiz]hhywggdmcojawfpvkhx
-xlqohzjcztxennv[cnbtlwijpkczgrk]pwxkxivbtxzovdn[bekntreckjtfkrsihm]ouowyjrzyjbgsygj[cbirdomndbelavpb]ujdrausbmqhnretkhtw
-jaowfyulkleymkdpl[yxwftdgbtfzugqnnzwr]ztmzcodybfzmfrv[sttkedpckbjaxmqvhds]fidvanwfqvpywervo[jtludguqxuwucvzcjmv]mfnoqzvgatqhvteacyp
-txyjtniwndqckudby[jbemysikizywlxbv]bezhcvssxmbmzgpo
-gcxfeqprbvpwtdnrxcx[kvhziidtwrxlhejxm]kxzumooacujxvuwsiui
-vvzhcfuecgfvrxrnquo[oqgutuxthxlcxhpke]liqjotlxzbmsassyxrf[colshvmiwbfjansdg]vggdkkyqrjvthtvp[dmozaqtceghrabasafj]lnsoewepnlbqvibyk
-keehyqsqydfzlqrqqu[obaslijmtiakxkc]wmrxgysajmjymaqpas[tqwlwdqldidsapjtzct]mjeqlhemnwupulj[xdnkrxbbtlkzeapnat]btxcxfncwhdqlhmh
-qwdiosimjitfulva[dhnypfmjunifrhopd]plrzlaakgfirzcccif[strfuwthjgfazeoq]lvhimnjpbpagrozczhn
-adqktintsuslnns[mtlbicyrgqgnxuhqcd]mdadfpkvbkvkaimvghc[cvqgxjplvvqbato]lbskgsbvqnvndequq
-brftuxdhebezivqio[yukrabpvgetpxpylxj]ldgifnehggvkdtq[pobhasghdmctwcgl]ccevtzwnziffjhqu
-ibeocesspzaammu[twfeunwtyqohdtz]kiknftbdbkwrzhrdj[ywsjzyncsuyykqgu]yqbjeqoftsblixeozlz[mmcmncavhecsxbxi]aumsmhzrbxpjqrxllit
-hieqiicvqswviniteuv[ubxwceioqqhagxybrl]kikxmdnftjiqazj[oyvdrxwqbljzkjbh]mejsqgnksglqmsfrlf
-zjeouhblfsglaxzz[efenlnptrfbopulk]tbdiezqxnkiwmifiyy[pylvblxazwozkdv]guaxwfuktjlovasatlc[blnlcbxxlcgddfquwgx]jkemembgzzxssliiywp
-juscmzarbykdkbcf[naosptvhazhfydzz]yflhbtlxgowuvmf[bdmledxprwnfcaflpf]fvjeubkojokjcfnzoo[bmmclnpuykellsdywvh]vibjnjgmtpoyvdw
-kqmrdsifaonqprpach[chzxtugxvhbjujlzgq]ffbjsynmytyajcbsyn[jsondannallzwhz]gjrnybnhyxjismip[nocashryyqnbsszebpp]pbugutcxooiznkwwim
-vfziparbxeibtccl[efwcwvbtlutmoltmrr]fjwkgsaambdhwvefs[nsrvprujruqdlxrls]ivmnrtvdbkumpiio
-bjweouryhlzxnkfj[uuqptwyhasahjmkirh]rrxwiqmpcbwkhzr
-bgdivzqqpztnswtd[xwfurbswsweduce]osimciokvwbydgqojkk[yyjvptlwdknyxnzpr]cqiztxdhugywyclvz
-ftcvabkblehqjyqtl[txwnhqhrsrnengcl]skhszkrtpljsgiylab
-ackokzybncuxpku[xzpocuamnohjypcdq]dwroulahreyhkraojf
-hqlijbwudkycvijqs[buaclznmftiadyidde]jxhkyqsoqbpxcjgsus[atcehpnpgwuchfzekk]rvyzujpclugrfyksmk
-hnrkcioqaeeqjrpg[cowbmmovdcsubwiltd]myuwiosvtmymgfyav[yvyjgtogmgxxnawpda]saqmtvyakacfwsvtxvd
-tyanupyqajrxmuk[bkxkehodeqxpclfebq]kiupgpdlxfvzydgs[rvbbrqbdsolzrgse]srmrovuaxvxvzmrmev
-pjbnyjsxcwyhjzpvqkl[qtgofokbciwsszwa]bwvnbcneuvipqaaiyjv
-ecxbamdgtlfpmqhi[khvmvwiorzygnitsbb]znripfwspcqgsdzosv[nfhgdavrprmveeexppv]uhzugtmfmipmaznbby
-jdoggfnexvkxovwiatd[xzxovisxynejpyxhfz]ciehyiyumbbwwxrc[nozxzgzvotunvgnhhjk]umzgdkvcwauvkzr
-qhdaymaijahfkqzw[mbjhxuvbksqtvxwveau]rkvgvfqsehbynbom[keygsbhockgurps]nzmhlxxwjlpjhzbhw[ujitcxihwbjrmrep]cbfpxvdzbljvbfpzsw
-wiuprpjfojcowmy[vmrpruwhtzbwyciid]ntbkrodejcrwavjfqfa
-ctqdkuxwiricymu[wexourbkgedaqbybfj]revrxjgaoalievfbj[qtvcolrhwgqtjesuvkw]ozphhuwwzzguldf
-bqpwrkyhlysqvwxga[ghyqnatqnccegjnkgw]pdgglsmagwkwemidd[fcddsukcrksifkv]cyutddgeoqcyopmm
-mxmpasrqdexjpqfapbh[rqeoslcvcwqteki]zpervmncbpfbhwaxmd[rnljbhhtgiyluaaetx]aycxgjfqyxhgeraelo[fukyvtlgjzupjjrxvt]peumsiryqvhwcsutrj
-nbdnniplhgrqkrcd[thcyuekybfqraxspek]rlwhyqiavfrfglg[luswlglyiuklvbuqe]mdgjepgjbhuyqkcs
-lwueejoqpguiciw[kpbyblloubmxdhk]omjurxlkfpsdwdmbl[qnifmaxwapfvglrt]vssmqdzlxyyrdgkwh[ljslsxolkkivoakh]upwkosogsrzzuej
-rfqbvdzxrnrbuhvw[wzurtnrnslhoqkdoaja]vuxsxofemkrjzqkk
-pqslistydhvgulggwbi[nipdejpoxqfmbeft]frepgyumygqywwycjl
-excgzlqtguboybi[guywktnzbmkwqrbp]qghuyihqlgjrdbuljs[zrkzhirafcadgqnifuz]medyulldvxdtpmqifpg[lsmokycxcicnxcyfpe]cobezkjtvpuqyqu
-aajcheqlcfjvktswy[lsgbzwuxqcbgicd]skvwyyeawvlzzfp
-afnnxrxdhbqqixcli[msrrsiakxynnwiard]tzanbapzvxtabeuz[rbyqhswrxrofedlykg]phyilynmscckkxgbhks[enrqxrwqiotksdor]phnmohcaqxspqhv
-pjyiwunebggfgpgsk[ovrxnqwfhtrjoxwi]lmkquysxzdebvarwfxu
-cdztgjverhjafgemi[aogtmpdwqhazrij]dmypauxszajopbp[sdsrejzmjvpjijq]okitpugefdhpbfnzs[jyospqqhusxbhfuuzp]btfwfpiblknocxncj
-djgkwjxzxrgsncwd[iuaqmffmnfklkieaq]agtkftischmbszqpo[conozrxbpdsuonpvx]mflbagusvgzybhasrlf[ntidmtstsedfdbfwost]igffrxgipzxzzyjy
-ahfhhpqofpjyshcus[lrxchnknzrjtzkgt]hvtqhnuzihgxovj[wbnqnjjnzltdyvxswv]bmppxzhzgwdsckuo
-ghwlmylxxuybkpmo[bkxcurwihedpwjm]ypkvoiavnzgzlkahlp[lnxohqbghwsnbeqgk]vsegowbzcrqwcsgy
-whzaoswycajecyuw[nwzgcizbidljdtoull]zfyczyjiqsqxgzsjm[nfkpyfcjwjijtnb]dabgzqajwpzsczrfzrl
-sitsnxvhgjjnlitqs[vvlbonwoskugqxo]bqitwdmlvnlcziltj
-avgdblmcidneynp[gkjdefhfakqungkij]eztuncfdkicjhaytdzw[dcfldbgzscsumjox]okqkplzsscszdsxejso[yihmpxvcbnsofchozr]easrxwgppwzqern
-cvefvhycaorfsfbmi[fkvzdrremrlrvdl]cfcjirtcmdphvfircx
-wegfumofnzigbnhy[oqkrudppjpvcuvr]fzyxsxrktwkgrvyiwz[jkporwybtotanposc]exmwkvygccdurwge
-iqfavtweexjxhdkz[drnsnxjziacormb]yftyjvtetmuvwew[vlrdviggcdfnribze]xzykwuzopkedwfqjxo[vnadxonxshmwhvk]mqbtnfjmhjmfdftwm
-odyopnscztauzvjvbfe[zpgqzgzcqclarhkkc]lfuvvhwhtlypbfv
-ogaqzpgfwlmdrjgo[abvqsomptscdejeyfg]rukgbtpqwyyvnvrdz[bcvgngjhgitweuc]bljvftlzomvgvmlkzsd[yhpnqsmblsnfgfnyv]nvnkvwwllyygxcdnef
-jlbnwewczmvtoshkwk[rmtpjyqhqxturbfc]ulsjqpziwqfjccmdpgy[neunvaltjjkcxvf]opuswwcrtqbkqyq[wzpxgeaohprbhvamaf]ybxisfhszawrtgsj
-mmrbaaqjvgpshmn[exjdqzgpzdalrwmtha]qrxggoccbehivaiegs[udbyzlbkpvwfkaot]vfbmvytjziptkyv
-pjtbkayljttjwyztu[clbiouysqsjbyjguhe]srltvgtetxcbkud[qnuhjnuziihtvqtbeyw]iccppmvrkzyehgiv[lldvqxdqvpcrizue]vpwqjhbktcmiyed
-vxqpmalvgeaxtkpv[elquojhkjsxpmks]dqvuljielvjopjcuvsx[yoklegkajhhpatv]cnfivppgdnkjzmrr[vnjebiwfefjgqzle]aqkvijxvgljbxmm
-lhkkzniihzzsqxdr[gvhbztmgmlicdoasdxn]fthfehxdcnyjhdwvsx
-sthxexgjpexecjzr[semwlxfagpybhblcq]ztkmocjbxsqnwfs
-tsswuaezqpzyevei[nolctgupccscwsj]serolamcjmqaawea[qgjyyldemhsqivwmvtn]rlmxvchrccptrgmmbko[qtiqgvilvevjvlkxc]jjcnzdjdxycczflslq
-geiglvdxwpsdtyt[isbkywwxvuzljpnv]djxvppprsgjagqtfgl[wmhnkumvdpikdjhmt]snjqvydpmjqutduh
-ksqeegpqcodzekvp[htprcliyvqdgjbqv]sqykqimpyqiwktnq[bfjsisougvnyjoyha]ixghemgcvicbedylz
-mwomvddjcxrdzmqplow[fznhevtpwhldwpo]ygskvziyhzxmtbcikbl[tjhieqjuukoqmixm]mgzzrsccohxzfgak
-xvdiafigrvgrckwol[gttxgvtlreruvonzl]fgwyzafvtwaqdwuo
-siyvzqpzfobnlgtxn[zcgxyzgysabhpvsviup]xfdpicxyxyjgxyxd
-tuyintcsfdyhfxofk[abiuiwquiscebxbk]zqazrpoxqqswycjwvk[hayvaaykkacbakpom]bwwhqzhuiitdaed
-ckkmzdomnglfwcbeh[avqftwjqckajjqe]fkpgyrqzygfcheoctfy
-teuvnsaipkrkmuu[rtiypvevtipwuelkzxf]xqywsffobbokraw[oonkmkqovksdycu]noxwpblcqqbikpbck
-bwgmejgaihdorgcqq[djldztucejcjizv]nuuzvdhlgqscyrjmab[nwcglzehbfzzvgr]aybubdihvypmvqmpfhi
-gxrmeqpjnbegqjeuui[iqpcaqmpavyeeqkye]etydxarxyxculok
-wakuruxdmenhmcsgt[lndpybwsvzyibmd]tfabajlzuxwwhofz[msknqgraxzpzwytjx]lfoqigitqufmhfmgwgi
-gpusiwyruzmkoluea[ofbgogetujmjnqv]dzmarlipdqkgwdzwzd[uhsfvlrawossxvxyk]yeseypubhoapfgdjom
-rcmnwwzrimrifziyoyg[avrikteehxhxcqhsq]yklfcrtqwaxmoepr[lahpskzjdwrjonqg]wddynujhryzkunrokho[ixwzkdpcqefelgcoabt]arjhdevhgaqcohbut
-zkcxzfkwxxdtbumymqv[qgaztskshqiukhwuelq]wxzpzaxuhdtfbimub
-nlgurkzredyklilaicv[mtxzdczugdhoowtp]hnhcyeygqrbqdnsc
-pbbcmecbydtmjigfn[giiambqbdgbgntq]zaaqvlpkysxuvbgbo
-aqyxolkflikpaxr[iqrnhzdtynkqymz]rwmgahzmvwtfebyguxh
-kcxhmwgrvommccee[oqvsuahbhwioqeunkz]mhcyripmlfivqsimnpk[zptnyqihvavtlxkq]guacutltkqoixskg
-ldpiuuwsszyidqxqj[tsmectapcwuyhhy]slauiehtpaocaeqyd[wbhrligadmsgznlyvd]nyvfiipvkthxjuoubc[zplkhqbtciuqnhjhiwy]olcmrcsayukgcbf
-tzcpkpyrdolcerqnwu[zqvhulfxfhgaehbwf]zaekvjegdligfrsh
-ghellbvwbjaummjjoss[pevgyftbjzmlsryfzv]kjdgnwfofftlxbiabir
-pidtrxbnvaobubqwah[nftxjicikdapqexh]mwssisitrwjgxhk[nghedqdzfdgxaqacas]hvehmhbxzfwylzdrjf[bisktoqalmaapoomzt]lwkkhvacvuqvmsv
-bdqjqlmohbjvqlson[mupepkeeoofwydse]ekylhrfsudqdcvkv[joofkljfkmpknazry]anyojhejtzfofcg[zcvpdeswtvtngyqleri]seqoyrfsqawkrudmg
-lmjegqfshvauxngz[ysmejumumaurgvgrsy]xrmslpnljfmaidojz[mtvwolafkcxlwjjthy]yjqsssxayanfdrel
-qmmiampdlsscnqml[ymselibefbqnqakirdw]uzxhisxyqljsdvhfe[jhjnivjgqdfyeqcea]nxbqpgyhtqzcwoptq[frlnwadwwyfnndeqv]qcbefaxmhgspalprcdo
-tavfmtbizkrpnerc[kmenfsatjafincrwrlk]pbbxvydrsqnfyap
-hwrkfzaovfbmrqhff[qglmybgnoytlkma]ibbbvmtqegqqxdk[gquqtiaqekcwiudebb]ozhpyabnxipgwfs[xqcajsdxhwpkofa]ssaordrnwjyvmcmjtp
-pkyhiseqcvejtkbqcgf[xvgqerenvyizecof]sflyqnazxuwbyexzwyq[zppuknfnnngpwihe]hacwithomkpaveqjrs[whsspxqxxqihxrmqxvn]ifsktqmduowpuhck
-xqctscaefqpvqcrm[rqbjdsxwoynqeoubwz]zycfrxbkijaedhkr[rzzbvjmogwxgcqa]hpzjokedwwmsbcrggmd
-hcbohuwdyeacvgmbmea[mmpvzmjiryorskh]tydknyaqhgcxafmqj[ejadhaojfjlsfxs]duohhgjdfjffvwzcgel
-ltlddqcbkkayshw[qdedbdppzuqdhfaxt]doedeeehsibaylpsnk
-bywykrbttmmpyacsoo[ghicjobuumyckupnmw]wzxuueyajmgprxe
-gejngdvsephfgyawm[eahzdehzhyymhcwx]qejrbkjhhplzgbehwdw
-hobcaacuxkoxnutlayu[yvsylobmhtczpxdhvh]qpwhgyojuomiubmahcd[pmspsmyxaqrdvcpwnwj]ghdvfbhifxhphkseh[ntyabnyuoadseevhvpf]opibtuiwjogylqzt
-bbuecmhireivvxmtw[kkvuwrudhmpqpmqr]cqrzfeasrpqapvtjqnz
-uxsiwqfamsnemtcqyym[wemijyiqgxbcsvdz]tdhlutowbxpxrkrlpx
-tnnlwlvfrrluuxjnvx[fgijrjghghgrkfmfb]lslknlacvseuzwy[acexgqeksduhjpf]enxevtqjetnyftgrad
-wiegevfedudnajr[uryivbxbutbhfuh]zrpurmrupgeggdyc[tfykavyeulosotky]ahsieiakxnitxhaa
-cdymukpgwzamxpe[ihvwjlomeozhnxq]zqlglkiyekzhkesoyui[dqdkxlczjrxgbdfqf]pdipsbuxwhibjytdb[ngoqkjeboqlsuic]efcostvlclbxvzhloan
-uuavzipkjlcgutoxrbc[orpbrqapdzdsagy]hbgwsmgmyowonxftjl[wrimpmzmwyjjtnkaf]qmlpvrkqhqbdswyyvpf[lpjhsulqumdzgjxuajn]yocpoqqrpuquduay
-wivyimuplkhmmkxioub[vqfixqklclmrbume]trenzswrpqljwctfat[ulkqyvjjpchvkpd]mvlwfrclcfqziho[pbmrqudqsivfemt]osmrlwtwstidtwmbmzc
-owpgvzzedsxwjjdeuz[kyqifdbwfxcphnb]kyeaxxmsplabrbd[gayquqvysxjwpckzlvj]tiuxhodkebirvmdb[zhnicexwwcgbbnfd]hcxwgyjpphxocggfl
-vrjvymyzflpaqfy[fokfgiaiyyzruyt]yvfrfomlsjqkvtps[mprfrwzeokyjmdetnl]znjipokvzxljjgqaw
-opczfzhpovblsevqcx[twcavjnyjerbqfqvooy]tmyyybovoyqcygzzyk
-gpifunuvcpqjornc[wcenyqazsxzksun]dijyypqoxxmjiyi[kdzvguquhohgsghqqko]tzknqsgldnnbotqnocj
-xtnewbseisluqott[ukktnadfrptzmvmnmwe]nfevmvifmaaubdrytcb
-uvwgvqvzikkvvaltpbs[darnokckfpuiwvaq]qjgglscrdhximnfg[cplqfytiupsnlwjnz]tjjkzojxijhhghoo
-mwvyjvnzfbptvndlui[dvpxdnwzdssddngva]nkvlbcdcwjumrqmjuw[xgrpriwhdpyxvakfpsu]jzugamflkelhfrzswca[hvdnwrkyrvcdkep]kqyiaalprdowzeudqvt
-zahhurbvayisuhkxluc[dpkhtfqcplnlwkr]moobahksmsqtmxasrw[oyxemzzmvwvxrldebja]tqnquzqoslugwcqcwtr[vibjzqdbmsmtxckkkn]ylujuamatwbexgo
-ffpiprpoymeaccwoun[avnvjzwvzowgthwymt]sakvpfnqtnzdyhodzud[egijncssvgvsofu]dplbxmzfihrpopurlvn[knjefyormeaeoni]ubcbldkemxgefbnjcbj
-fpyokxpcrydmqzkgr[gprmekopimtigwz]fobjyaxokhstzjsgkw[njzhtjqrhoynlzpiw]svrqxlhgpckwoat
-srrcdyevzyzhxnx[bbojuevgatiabjudws]zoxxvzrngllhtrtfm[rxoiyzmzwoenbodp]keodzdiobtdfgrxzgye[akofrgfwqtqblvntv]rfyrjcwbfblulkw
-kxuswiaijpaejqzoxes[cgyhiwbpjrhaacwe]uqqocaxbsotoaei[runskhbiegmjwfyjv]qgnmhdcjcbgbsztap
-kvzutkvgsyiyrab[zhbqkvgbyqzgwvfpbf]nhtaiwzmvrssvxsrdz
-tncgsbkllaugseepp[axryamrptnzekcb]xcvqkfuggjcfqhb[mtmzyjnvrgyuwtev]xziofjwvnbsothqzdm
-hmjthvqdelrmghgnvxg[cvfmsllxyxchaglntl]ikpeldmfhjdtnvaw
-sdhirfhdcxlwhxevbv[rfktrkotbfwiolxd]bhbkmmbdisqlclttbi[ueaqlmpvdaoxhezzg]baphbkfivkwpmtj
-crzkarxgbgpitxjeunw[xlonohiojoepwnuhd]kalfjqpazwmwruq[erssxjpfzosbcta]exvgtqljewfuwioyq[syaeqtgrgswbgbetkzw]ofnozzjtykajqcuc
-xdojuclultxptlxgci[nkmxgmiyhrrfgoshmeg]zqxcexaabvdjcaiarw
-rewjiwxykozqjzneh[tczrbiawzwtndtqnew]yxrgwvnswgyxjvnot[khomcpuiavkhwjsl]ksqiuqyarwwibcssseg[dsrplcalbjojxlecjdo]falbpuscbjsdxvyn
-dusvvyynezzobcrt[yrikyxqxqreoqcyyq]vkjxvnlnmleqybmgt
-qzmjfdvoruomeilaejd[ksrwqvmnyiessfejo]lvhmckdfwzoxwmydxm[icmiecrnoqepcuzctl]unxwrfwxgnijdxqjc[tuwcbylgfhpaveyak]qslgbtviucbmeluf
-djblesvduxlxfxp[grmuswjaheivlqvtst]yrqstsaryoqejwkd
-kpyoqmyglnrmxculu[tuyuqjronsgluls]whuymvpcdxvxrimvmow
-lruqeoicrisykqejy[ruqwiitwyrsithkyo]hbgqgiywqwsclcsn
-pkpmmddfcezjrrs[rbzbxotrbqlnmlpidpu]aakddaqjvbbafbnk[sendmtepxbcpttn]udnifsqhogqvszi
-foqjzmqhghzmymeq[isvvkjfpmvmhquoidkk]tskrbirqdtjpxolwzw
-pneojhviynihvnv[meuldylhohlfwsxp]nmdwxhxuexorktj
-gpnxdnxmueucaawmctx[ggcizpwllvbffytwv]riqcitchmdekosocp
-kcoafhejmqsopizo[lyoqftddzxuuerafco]zrvrzbmnzcawaydwg[bhnmhrnwpzmghrprzzw]qcrnkmyfcdoymceacg
-chcabwcrpxqnelguile[ckxfqhnrwlulnfgxjb]toauhcbsxmeirtlyy[cfgmasaieapbabcgdd]ijenfrqiaeiehllwpvk[ciymykejvkzxsbxy]iiyypzaxohmykgbzej
-yeqhlpncjcipsmtzpi[zoidbyeatjrlgmi]rcrhombxichyykncbwh[wtduqjwbefekhnwo]kqemsisbcrcjaqzdzw
-nbxvvetblqcarlcku[njrccfhdvxtarpj]rhndgwlyfzaeubc[imtcezhovdlfyixzwm]dwughoowqyazwaziea[slarywwdukqwygnhre]efzdruetqfoqqxusb
-vhvbnbyluqqaqzolkrs[fbfwkawbihbzwlrhd]npfzyqkoxlgkklgxz[zboinxtlzrqbwcqo]jqhvalbjqaogtyn[razwnxfkshezamemtr]nywqcxpvmuudyqo
-jubvozjfmykufhrkk[qhbaxcvcpyzbrwjlrij]itseilbvjwvzlgqjfe[lgxynowzlpqgoyrk]inolsbnzxvdmvbrvwqu[hjzfopqwsuqvqhb]wffwgmhjubihiqkpuls
-rqnjadbwfosviivshb[rutsuesebrktxitgy]abukeyordcrrqvrgf
-bfveiveawwoqyluxwu[trxwkfvioqzltgafma]swkyqokgtrprzzit[kuziuekaorgdgqjgi]zudaehzrjfzogiwb[fyxwwswqrbwgomriqo]sqfjrdskmdvalkhchc
-pnrvpotetwyvodue[xwkxyzxflrvxdfogk]kamxypekoelgwktq
-etjkovmlbwryvhv[wvubzziqtxbjvua]hmrqokvqrctugqdazz[ykobpstcxdqweotsi]eiczvmdcfjpvhdyfnci[eeklndzunbzipcqubp]tjsktxuorvbnisy
-fnexznsqqbhygrm[jgnmivchcvxgssjcm]klqcaszkwyzzecve
-pdmzjundpcsxbgplk[lbdsyrmgxnatuwk]nwrhpgieqrtzpktaiqw[dcxtjtkzvlxpibanjma]djszxtofdcuyfpdr[kzblikjgqfiaykr]yhiqqurlkwlrrjo
-bwtgmmjbtisnzbnyedf[iniovvuewpetwsg]dgvjyrzfrqcozekvp[xsulvxvvtwcxuvbxau]vvjyodjlbbjxigdxvxv
-jcanelvhybigzhplc[lhgjkwbpdlcybzgacya]uwisdadjoniyerw[kzcrorifvylivkhs]ssicvecwpkxbdwq
-tuxlnjuyudvhazlxdf[oknheznyzffrtcb]joozaraxuivijskxblf
-rvfdfyaemhgyeynw[hmmkdfdhadrqkxzzmsj]ugfozgghllznjhdxw[ucrgusuuqthlgxx]ipiercifxtkghbkf
-jgzrilirvzcocaphnz[gyrvhettmmhxaxbmyg]ecpwkoozcgtpoac[iretjtqyscaqfqziu]wqjckfkbfoqmmjkuhqe
-pswuxyynrpckrquj[wfbedboaabsgnnzzzwl]wgfrecpfkvlvjzl
-zkcihebtrfmiryqkd[ybedpynfafkkrbfdm]ovrsmnhexyqblafad
-pbkoczqfumwdpfu[gtcvqjuwknlrfxre]crpyxhawudbilybaomf
-pnagrmxhmjftwltxh[aqlhxdwuzrvnwjwl]xhmgrrajywnizazyrdc[hxdxewvthhrwhsva]ckluhnyewiiqazzmvd
-amjksgqzgmoavvxtov[ekqixufaaepczzusfga]fvlmiilpsqsgfgg[gzcyehzgpujyquhrkm]caaocajhmhqzbacvpog
-hitezskizncharbzyz[nbwuldsjxkjezjq]monndtwsxuikupvi[iardznrxkorquvyvwlk]etzyolkxhyqsdirbaj
-ocsxlxpsgimcvori[gawgkxlilqzeakhzds]bodnyayaioozoeg[bmaukrfdlswrnvuwy]nafolaiqfeendahms
-kseklqtakbkzzhfd[ghivxwcqlgfgxeot]levjimgmcfpgqrjjic[ixwevpbqkyzthafyj]azdxqlromttwteeqep[kxyiyoxyhvgqlmvscwz]zxdujwvngqyoabmrio
-elgbshsnykhiyndouao[nhumkawagmrztsamd]fwqupmyuogneywsyhub[zzcemywfdswhvjpl]ockclifwawqsyzt
-hyetqdpieicmycip[ciwciijtqspvydxsdu]zjrfhyctplqvypy[hdewteddlqfaoifgy]murcplulddvzheegmgd[rooqfiqsnkjeelfjcag]pdzzjacxzdzmmgmqwu
-nufvveulfkudkrvskbg[cdrvqfofoxmqwtv]jzgfbywojzvwumo[vvshcsjnhobkayk]gkwnyerwhezneuze
-qhmjnzcokmkmvclhfh[ywruoexbmjwuxvrk]lswliylmniqdgybtyx[yjrzasyfroiuaeps]xevbxtsyjknqmeuv
-crwelvogceorioqm[xmduhdacxyzodslgtv]wilmwenmmnwgqteftrx[zonwpkkjimmmhbrtls]vfbovjoabzwjpxd[jjxievceapgflzeldwb]onucskcmpkgsryl
-ujitrvtlzcrtazmghgm[mculcmczwibnuhtunnt]izqgurxwxhwboygvmf
-lespfnkqubxfoqa[exmzkeazfrfrkhzufz]xpunddczqrkxtgorc[ymsbogpyjeimnuola]kufhnwzukrdayts
-mitdlhggspwferwda[fcwhldszpyfznayp]rbfzewqihtcwtjznsp
-wzhbemsmffcmcswdvp[jcbuktuymokdqfjj]zyhqthqbczupmcmkhi
-qulvtldmhliyflccbyg[mqggwujrznjefvjw]sduatqntzkkvgfqel[fyxdewnrtlkkils]utxmideawxrzpewmee
-ggpinoooeucoxmezfi[ovisfbmebypyafknejc]ccqkrmaimxmvxhtain
-cqezdujipgzaara[afkpzozyzuitollf]srmeiyjzqjruima
-ivbrwakbgkrxpilylu[eewfaajedkwjbdrk]stsichtqqsksydtubf[umxwxeikoyehrou]kwddyduytdhdgdbyn
-vowwatzholrusydvmdb[jarugsbvowdtznwx]oofschlksdrodakrk
-oruwtttstrcvcgxz[cvidyuxfxluddzxuz]jckmrrmvolclrbam[dqptqpdwkpewhmcax]rtfmeakahrcbazlzsju
-vjrkcrzvefpxgardmqb[wxmurzwunsvjaxfhik]meiaafxurfgikqg[dkoextitsnfeorgoihc]diohmorpmlhisrs[ibtzwvoovjmdpfi]oelairhwcbbltmjcjdr
-miafjehtxwnfqzxg[nlovpfjpeclnmlbm]rleupmgzewtvuewypt
-osoaytxzfrkcljfjv[bbpjqntkuuwpgupxsy]bgryerdaukelujvayjt[gycrjaelxuemeosc]jgdfpdoltoqnmow[yfwoyzixdzamgqweb]lvmnjywqfjfvyxhb
-oiksidcbtzhhtnegqa[vdxnacjfxbcsjzqdq]ixvwmdqdaleuzjniki
-ngbyqfvobuxdnjeqia[ksktvzdyzkvyvjrgkos]xwuslzgntfwrnyqrod[cxmkhhwyremunrbc]hijkgxizhlyzqfaay[ljwayjqxyrduyoebm]ancrkgmzboqtwkjah
-kxcifwahsdmqasrmwi[aqzdihesmgntomgmj]jkhmcqvxqxtshprsy[wgewbxfsobokszgsivz]zlpavaqlwvauvedwf
-ibhzychwgtvobvws[qaestubbbtvyylbr]ovsxlggntxnneirtot[kgqrkbiqracxbnbi]lzpfersavecdddsytb
-abjcqoeeqfhvqmo[eferwxtafaxzidjzbr]qztbvxsaiyqhcsdkj
-uqqngbvhyfxovmdods[zwyybohwrhprvxaaaio]cgyaactenmhiokzh
-hiqqvjquvdkfcjwmo[jzrxnmbrqfhjhvppdxm]mwvibfiltxmwroeruo[fasknewgpsmftnx]aubymogtwkseupwmr[xnyevhhalilxuxqqvya]mastwtyfihocpbjngaw
-aqvkyxqnjtthgkjxr[ahvjgtzfqetvqhz]vcaijasfqaygnxmdba[loyjulxsgyldkotlefn]lnzykvlsbkyuvnqb[iqjxfxdmjgyxboyzr]zbfwxpxbthtwtnjdaw
-iweumcmplhykolkazmb[zgzeryniuwebpka]hsuxltmwyxogseiogl[ogacxzbrbvopihzm]ipogfmqtohqqfvowzl
-hlvbzegrmbrgoepemyh[luscnqomtcxbpxjmxvx]tipsuhgnhdavsubyqha[ozroemaxbdbcpnydjqs]xqdwngpkteoyyvkq
-fgpmkosjnfnltkfy[sxqzypihbntsfnryubc]oygetjhbfvozerfzw[nwvofzjfuwdzxncwvo]nvbtoxgwkmhnyox
-kbqkyxwacrffvkoxmb[tqfooaoggaauopcanz]ptiakppuyxzwzpua[tefuhyaqzyeteexrsj]hkuwublifohismiqg
-pdbrixpmacobfnpg[mxmgtvdlsuyhjnjxz]ghuebmnxzqfljxyutl
-ichijthjvilenbfg[zeibnuadotzachqyvej]qogvchvkfeskckvmxw[plyhbwjrhhnvdumajut]xazlyayoobgkmevrpho
-cbkznopiuqsssvle[gecuynehzvcmfuzcaxz]qfihmsdjfsxymvesb[jtriyipbkkpfnazcj]wbcwllfdxxdzrimwues
-ntxzlslwvxztbmola[duloarwqzkzxsfag]nzrsxasndnrktih
-fvvowikdydblgts[xozwhuhhngdjqnbry]hkcwbqloymkqjyzpj[xfwuoehhuljposct]ashitwoprqcooweytiw
-ynbifagloxgkzlydhk[qoxltvqdpmqhawcvef]wfnbtiyjafaqfujr[crcuopstahopywinvgc]ppxsgbvevlrkdgsv
-tdgutgskbatswuizuv[zpmhakbnxnkehhf]ffuohvkaxpiptot[zlykjduigarhxygukw]bucqoskhlesclyzbpd[igdjnevmqlibrugc]seyjwcizckvbncjwon
-holbjgzpvhqirwrxts[lpvaadhoqjjwvijk]etjusqwbrccaqea[livhtrfodwoxnkvk]dmprijbirsnzuptikc[icjaaepybpgnorie]imtoivdxpujjmlegqn
-ljywtdshrtzqzrln[lqzqgywtrpgszaigfv]vjyyvrbkjdiiminfas
-xfluerhpuqsqnrq[rtxglsxbetzajmo]bktotbhryqxdqfaf[cptmsctjrifdojglh]qzpxnniqwxlbvnexlg[vooexmzwbpulnxxv]eumwdzoixhfxkoavu
-xmomvhstjavjyisvhs[suremlzhaiwhikzzojb]urbiiuvmveiapcybgz[botikbmkcfsghtgtcn]jbsrxdkpxnynfibgxyw[agdmtydfehaujynym]xfpytnqyoafnuott
-xjzhgefdlodsdahv[ihwwnfbwhcjdbrdixy]kmsckqifucrgpocyvc[pudtuuaebkvsrflz]qjfwaaylzyhzerjbhyn[fsnmlxncwzsdsqp]edevlblbzmwkgkfluke
-qxlppzrvoymnsiyb[ybyeqxwtoberzwvcdlk]zsofrmazkapwiuxwjjn
-jbdmjeyxyksaonmswm[vhxyxtashfdrzjzytoq]jpkbmclxjtprrhmaz
-vxishfigjpmdwufh[oykzgieieiypyrqaxdx]etgleieyrezvbcg[scrtyttykipejzmuhy]oxnektqrkndltaixnj
-jnetcyoxmhjfyfjxm[dezndcwpoghexum]xloobrzxrvanbbh[gvcaufplrrstvrf]jgdhedqsxchoorlai
-enbtwxacyokhcwyhxp[ahjgrmfhavhnhqoqsfs]ahdcbzojcfgzkjfe[gtjphvcbwzsiohlha]lwaphixwqbmbqhyoccv
-arwtwiiowytbbjsumh[iwdhsnllysydgbcuxw]kummpwhpyydfdaf
-laidhzhbdwoezqhi[eccvqcxwasyyzqvhrw]oobigxsojqsyijmjmu[kinacswultmqsxdhw]xlildtoykeuzgzl
-fbwcshbijakfapcqzj[qktwqwrlnuktxjvuvn]nbzsrphskcxzuzho[lrbnsyzvrorznoq]ewytfrszdyhcrhpcx[bmzudjktpnqxqwmblf]xtwqqocsaxoluhsh
-xgnhvwkwhfbprypnak[yuwpjkfdxygltniuepa]mmbkjavsboilcvpp
-hprznssbfrukcvu[mojrsfuktavnbhzty]ipdxnxmtbvsazyx
-tfdicuergiqhvie[wwpqnqkyfyhuqlb]wovoujvgcwuptcqhkd[whhyzgbflhplrff]kezriqiamcvkeifegv[kcbdxrvoharumkgzufn]xypaikbmpsjqcbxrrp
-tkqpijxftrvwkam[yyajdcxgzrkhkroq]qfrbvprhxlpgunqqs
-fvwgqznbhbrmcaubz[lgsawqyuhadojbqwrwt]gzbvdgpwjuwqsgokqy[zpzdukphcvdqgpdoex]atanoaretkhxbyzw
-fispfedprcrygxs[xqiggqkjgjhaskp]thgqnbgscmrcfqjckbw[tvueixxvxlsnaupqed]lshjncmwxgzzczjssh
-fplljoayuqmjtjs[vnlhbmvowousilhym]emygvrnfsofwobaducv[flrnwxzgkghpboubuh]sdndpovsuohytnq
-utkqxfkbxtoudnbh[bjatbltbacnlwzlbjk]eunawwbizxdytndqc[arhtjgntcqetkeikojq]jfooeguervzgzgudb[nhifbismjhcwqyt]xwsxwzwwvtqoadmgvoe
-bxbifxmedhwkesbmjff[ncfbdgsqfejalnqyar]oifushwlnfxghktjhtq[gnapwycvocshetc]zzslupkhadbieerb
-rrotstdgmwqowfmf[zlddfgpxgucuestu]dvlbhinllnkxdybha[aovlzdyhamvvcgm]dzehxcilzoxrmcyhiwb[xkeszyasnqsumpx]bnrsppzfvjhiyafpk
-qgpylzwwdjxmepsc[bumaitztsvayatapvl]gotathwcrjrsknrfuk
-odbkgubddtpxdsgmhvh[mbgpgqafpcrymkkdpsd]ieabelyvewiypbkjm[psowbfplvsxifqwq]szgntjujujycbfy
-urqwuzkruqfgejkdoh[qxxkamiyhedlffzg]hnfntvahsaivnzmawf[mxcrmrqtgmnplma]gxcsbxvqcoxpddj
-qzkfvuxmfneyrpysh[clufxjecvedwwegflp]rcxzfazrzbgogna[ogoplmljfwvizwniudc]yewvacqgzcjgdnmasw
-mgweqpewhvtdjnjdbu[pecantesazignmq]upotybqiovoujemqg[ipzggdcevkbkvpyz]wqtflwovevactij[ednlhfkzrtfwpuignhd]epfijiuwnczwxdmgvzd
-lavqyaejctfofhdend[enxgzalvzelvvxdt]dkrlwjpuipwnqvuv[ishvyxwuhxdxujbgkev]euytwzxkpwccexc
-haibamsiwfwmdvzu[aekmrvauzoxdbtury]tfgjabbgdrwbzde
-gqoyggrpzhfgrkjjw[kwhwkctzmjdpdoeey]ngurqljoormcjarv[bmvadfmdgpwpzfiiv]fkfqchwhedeymsa[etqtnxepdmolklpa]tywoaqpoowybxcoqq
-vnvmbxxccmctcba[ncggihzavxxxrhb]mblrxjgtypycewg[syiizsazwqrhsllezvs]tpzocblnycaokaphz
-ffpbdxvenqkihvvsi[bbukwnounmzzxody]bzfefymopdtkpdm[sjbemcyhrspadzkuwi]xlhinxfjjeajzuqjkuo[zfpeikvvdfptpxe]dhsjhnwlzlcxbkz
-gulvdtkcmjewjchf[auqodvrekgvzxzyiwee]rarumiavqvnbyqu[xywssgnmbeefrqgr]lyyjmkpmqxmjbughzta[avdsmuyfdwvzrzn]qvhfqmazlactaxtxi
-vvqlvlsnrxwhoxfnac[sablzmrjccqvauyjfao]avdnqlseflqxtgb[masnpoqnvjtkreifrvy]lvtoftpiotxcstvu[vohbaippdypuwpkuip]kxffhmrvrbmvhecnui
-kclmgqkaprofpmdm[bhbitgjmddxhbhu]hmasnpqsttrgtmuq
-tvqcqkarkyqtpvea[fjqrifichijyykq]qqtmxszpmovzfvk[xrcoyhzyxwmqwujxp]nzlgwxpkuersepyhy
-zalveeaqakqjhfl[uypjekwlbcplfcasa]sasiztlswzyhvpd[weglkkwlrrvdvfd]mvsdbveypnjsymtjka[kroszrkveyammdqqool]kgmxohwwgmvcdludvdl
-xbroawhwunnamvnaogo[uzdvwckcbkaahqltp]bxudkhzxrykrkffaiiq[ljfeimkibushcpclbia]wztapafqrfdpwcwpyz[xwzhahnbnaxjorpkaj]glhfrkaiizzidtmfi
-cycyarwdelrstoi[rivlkfszzvyljoa]hkjtyvycydwronsgyd
-mbdqighfupmzacpi[keeoafjlwzqeoaryo]vjcwhcjkjkandqir[auactffhpuwzgzm]ybkwzkxyevwrphq
-cpiuxmmwrsjzbyqkfms[buipqvxsetxzsgqi]tzwpfhknlpwmtxzggc[nidtlxvnowvutuqv]qsohatjnnizngzsqxxr[klnzvuognkllhhr]clpjgdupfpanyxwjg
-hhtduiwmfhibnpmhjm[emakclmaqjnvjsjyt]ntebrhiztekglpmhsrg[rgehmkrotjobrtah]gzlybshvhkoznupnhr
-hyzvardyeiddsgk[vszukhazfkwqsodz]psztzqehiwcpifdlna[igstccorevbmgfae]vdapqjiijwygxap
-towtxxuitgwhddsua[bydcnwqycygmimbrut]cvnvgtuiuduzjod[gpazublcnojkfnnvn]rozlfkywwjelmry[wvtxeleixyqstxjqed]vsuvzaskgyooigoczd
-uywuytlehdznyxr[goerwtisqdsinimd]abuktfxdobkfqabm
-rolwzkzesawhyxddo[yuuvalxthkptulugzh]tagfpsdniekrekzkt
-nstbvilzeselffses[cpgyssgpjimcevp]ehfkumlscjuocclfhel
-idvdfrmadfyhafvyixs[igsqckpzuelddtl]eclbbakcdyttbtse[irchopmhiqbeloiqq]lwbecblskhopzyw[yjmdufblseluvukftkv]nnawapbepipwcsfz
-thqwduckwmjtxwwmj[ppnucfmtpcsawxvkago]vojtdpukjwwlnirsvle[cscyjfrxjlgxhyu]fldolxqfbxhigdom[tgacpmzitahxucqpzke]copdqvctocklhvrq
-maseolhlyrjuoqdazl[klgwgcdfwhpwmnlklcx]jycbhtwurlwwsjyuubt[cuabclvzukvmoiniql]pzockwxqjbtadsspl[izzcraalbnmcopcr]cqdxcrkdnwclxcitizq
-ucyccfdgxaciwhx[txuygxhekywmyuaaina]szfdjuddiopneadpot[zpjsnpjtmicknxkybi]lfirzuldnatglheyhnw[rhgqfyfxlaunabfqxl]hplszylhorbrkuy
-vmgeqazfjldqcfif[fuepxyjuuzxkect]ywoxrfdxbyjomjo
-qacfshruytmlwyj[jpqmllbdypmnzqoe]sdhmtuefjbrmvmeby[xkyplnmmmcrcmixkls]motyvnyucleirbnmrys[zdopkcnnuvxmhrg]feeagfdkgorsubr
-knlaaiwxponscqwtqla[jxilqsyolsnanzxvqi]itqqqbrfpcexbnecnkw[bpcxykvtdbxejlcda]mxodmdxzohrturffnwf
-txvqlvddwpcysvkctlu[wvuoeprflcpycbghfv]ksbpnggnitrxkua[hqyiyucnvjqsceml]uwwwbxrjvodohwznlx
-oebxtpwwjtewgkwjbv[omataxkuqenxmxolwe]aiepvclknbgapqh[wywlrbzliilwwvebxbl]ljsiuvllqbjrvqzh
-jznegbplekeeohnf[hegaqbzbjwdhgkouzja]msaozvrtyshcajexwen[cnleoafnzyvbvdfndha]guawhzetoxlxmjwt
-nytoqgolirudokcgok[qjtvenvrstrjjlsbvzq]mwhkktxfsokxxqb[pgswnhmmgzcrgjbqcx]amhrxgwmcnykgpuzfb[dnihosgggajabkoq]jtyxfrifreihydzwjdx
-bxihyluintytvypxhl[kbnizownozfekbhmsp]sjgxqgjbhoftgmbck[knoibzmlipdnfca]ofyxruebaspanxxhakl
-xhrlcwziflvahls[babpaszszfgfywj]gkquumhyqvozkgubcs[gkjczyujqykeifhsylz]fhmvopfsltpzijdw
-ntyxwcfpdgnsyau[eqjxtsfneseakvrf]sbzesbxxrrmpmlazhi
-lwakhsvcamfxiceusua[ymczlpqkoiophom]fiybjcxhftziivsrsok[sejyfiorjpptboakf]ipsamdcnfnlhger
-ncgeewwfszytkag[kizbzwnxepsvdxsbzbm]fofhxxpymrbqvcco[swphuoqvhbpghtku]hvxqclwgtxxqywhhs[ibvpkuiylqazccin]oftqdvkbzdkmycntx
-yhnhzwjjsiqngmhe[jtkcipgiclbqublpfs]glxyczwidjilkqoa[ytsphdvgnawjsctty]xdofsnhnpsylvmso[pmjrjgiwhqfegydcs]ylfcipikfzvmpjn
-pwlhyvxnneepoqexj[jsnwzbjxibgqnpjgdf]qndnlnzxewcrjio[hccvunupvbcyptqdihc]rfhmapmentuhoiv[kohfhnoakeglvnasojm]oggzhzybuuupwdrjrtj
-eyglfycgaoqwsqqnue[woaxqinxtvrhsbjjvnk]cfnkhvorifhxedbmbmq
-nrqqggalpihpjyu[dqbqopedkxhoqqnp]qguazmdjtenlvzgoemw[ccjlmsdaajwghuikrnp]xrjcyfkrrfxddnjn
-wkiymdlskwyjrft[ovucvqbenolfvvu]tzymrvmekxnlptynj[dupyullbzepmmrmgwe]fnjtcvrvzstijxq[elzfqhyjdyprzfxa]uszwjwzbbzgpcavynk
-jrdliqwwffvgzpu[mxoivfuwuqvtxqmbbs]tvtlqzqgwzgshkpw[hspnaspqnjvwybzfzxd]clkhutlibvxzxfrgg[yujteartlwdhzfgsn]lyfrxjqcpkcvcsnsw
-gtfhmxlpptgvgwob[xlzqaoawpmmjwszqmhm]xalfbbroilfuzzqm
-gqxmhinpeppmdhbdt[cpoaeltrlzmfgsipvg]iqlrhncmkmjijjh[xsbdusetrksrxjiofj]zndjqyxwvmsnrbcyrmh[qnbxczovjlrrvilks]rfpihmkwzmgxcynu
-abcncmuhelkxeph[crlbybjylvbgtsk]yvnbosicedmzurqcm
-fbhtialrsrrtpwcxxh[pisambikwkesdtbsj]zcdseybwrdrkxeiylg
-sehxfywgpznuuypj[upswvzwnkinocjk]nabhugsxhitlhis[ilrwksgypfqgfexvuhv]torregbntatolgchv[kkimpdkcxhsxyuczj]xpfacbmnrhcxnbgwis
-hldgiynbgrfjcunattg[nwfovbxygpkwmxnulm]xleqlwcajqwnncww[waoaudnttcfdktcd]yikfvdmekcexcrhsi[sntclwlhouhyjrob]wqpclaistsngwfmf
-izblnsxlmqjhxvx[qpmqqzakbjpbapwtlel]vmriwjoqlrttqpoxay[ylqzxxdpycurefadv]ftcuduceaycwejp
-jqjtnshmtsvokhwnpr[bxprgnaltcsqdkceygx]udqckcknpvegeryj[zvjfvligrqxnpypoerp]zhzwojzkckjwgdyu
-ohxpnvtduqvsihjt[eczkrdqlgyddymrdjfj]zzqhfijxsgoisbwpd[lysfkgekxvqspagq]kemxkdqxetnkyctjp[bknjdsvchfxflsrkuum]wmxncxrwwxxxgza
-xnulgysrzxheppsiril[hdxgzhscbjhkcntrmsy]vhedyohrrqclnoe[nnuxdbtlbjvaddo]xivkwdwvmkplsvfaal[omihwmflpvrshkcoci]hekqpjtrjlsaomfd
-hfyusspcypxdbgzb[cxbfccrumbqqqxb]ygsuxbxdfkisqwstqp[lqctoagvchrmggtmo]dgmcjusbvlmlvkdmnpu
-vmpobkctlhdwqjyb[dxeinhrldspqhgeu]ndglldouuoawkiwtask[szkthuhxdkmfqoqwwgq]zwjhzselzvirjadzvr[rholepzsidriqmlepo]yhbxhcmbkvripyusams
-mzscivdohxhfkdqet[imwvpkunuzbhbaj]tohxwppjtsjykxrj[nhonsbadufgsqiysn]cogovslrrwexgzujn
-pzsteeyowqmhzaqao[qsbohgqamrksizzs]vscfiltkxbxwbdlold[psofpwfkxhsxllnz]odwbidqaqpuchaew[kruwykloeqpcrjzon]famaoipldevywnouele
-tuqiapyobwqwpwbqqu[ycphsbdcwbmklro]medgafihivwegukhfof
-lficcecamifbjwk[sdguwtafkigjiapxagj]hmeqrhxptojctevbdbu[zvxeefaytjajdpwi]uliqtzilzcnwmbfusnm
-pvyzncrszmuienoptx[bigapupzitygcxstqx]rqikselsbelyfjdm[lyqmdmfyofksmecg]wjceogefnlgelpguu
-hmddytvxqrazumnnr[hpeurkbdfejhlfvg]pedwizmuhmtpdwh[efikgkrhnagpmqypzx]ltlncfegswhwcxa[bakxhwhtvxcwcxtmofk]zwjvbxyvljlfaie
-oxgoszggsifsgrck[gruwptjveewmfewguku]otchieijhojsyxi
-kunxbbrdhibhtlknrq[tmtsuhwakksyets]xdugxmqcstdallfqgq[tticbbqirncbjtx]knkygxawcwdhefesu[rerbfffgddyehtvl]yasblwlhikbvjidgku
-qoqnwslopcpytqy[zngrksptgviifcwbw]nuislpzizqikmgn
-khmctigslwdgzghkbk[veaqghpizqwjxlwcf]aymehevjgpjgwruhyc[hzgzilbhyoazljsk]jocgjmooxqxayzsa
-xodvowdhvnquwtma[kvlbfwwzeuucthg]djlyemkbpudpjlnrkv[cbaqlhuwfwwfvbdewx]vsjvsxsizgwsakpx[pzyowqndqdbkdakdney]eeylqpqpuqvdyyr
-cmdykdqavxgeismtlua[iwviddbtauhirfcabh]fhpsinbnwrcpxdho[tdbgrmgscvzukjl]rxupjtwbwmtgnltbjp[vgzucvscpzgjnvg]zftzsshpmizeksiz
-kfzmwzmzdpxabvi[ftkotbrorpkpfxzbg]hgbrsewdgnnqhxvueya[lkjknzgrbuzjqxwqseg]oyzaqahfuqtpbzi[yflzhfxwkugpetsqli]nowgjqaquqhrlxz
-ktphtjqwsitgbaii[tjwcbyfrpupwkvzrol]smlczhhekwxtlvxdfn[mqfupholnlvfhuv]mvdhzncezgunydrk
-lrvdftzasxbpfgb[pglmengmgfbnzxz]hbasbstksqkkqpwkcbp
-siheyyvdmjiubhlapns[xfcaevnaoexubdar]pgbougfzkmlzjqygdta
-tblrafqbjhwzbwbe[iefobcqdrypwnwidvm]olrzzrqgkwiefngf[asvmlckavcwtuosgkrm]esqsgwmiyxncjjqsqp
-alvaycnbqdlvvnwcnq[jwxzjzgpnzmcampkye]hepmdlzjvxhboxh
-mtfkavmnrxyfzvkes[gmwvavomsyolkahey]dnqosibjkplwzjojus
-gbckujjuhwnvovpfqw[qwievsrrtusgzbscuf]bnrjcovodutibjtq[fxteivdfkpixonphrog]mnumbxikkkyeositn
-remzamtzlhwpndrknl[xgrbcgdvlvrcdrpi]tnzimcpmxzaxsgpu[klvglrrepqxiiewn]lozcwxnclirneaky[nevhtplqsmuhykzqxf]fgmsbwdgfwjftndzi
-aybmjypdrytigyyip[zafsvprjirkniuwr]wfdyfncywtdtzezdbtm[umbxrtflhquwdofgut]lyjixlycobwpwvhfp[xoxtkyhvwqgawmike]bfqtgcxvcfwtdpl
-tugswvsgbsfbiyzcm[akmlddjckugylrea]fyzltfupxnvagbshlb
-lcgvlozzzzpzxeoee[zsvjydznyoadkvyxlsq]wqmgagbkerqyxjnnx[isukybwewezizpll]odqwazjphoaqhzltms[gtqeysqpwuuohdbhcnx]yqtvojobgaluizidrbn
-agnxxgirnprujhsk[hagcvuqcwyhmkdqmn]zehvuytegijhnfqnk[ytlokgpipjcviulp]hsomdskdngoysnbmg[wztsneomppnewhrl]gpkauttapxhcjrsicvy
-cvnowinufvrjpiqtq[kuavqbtrcelpcuasmk]poksbapbwverccds[qdddbhewvxgfoldib]mthrvrsfygbhlwlkcs[zhivcpxibufugkpigzs]qffdjnrsoigwxqhaf
-kovjiaxxjvzmzvmn[cmrbwjccgphtstvaiq]onqfbpryjertymd[sgmcnqbseodopnnd]gbgealygrgjnamdq[yrjuwjfvmsmgbur]ldiztdwrwmeqrohy
-tluglhveqluxpiy[wrsgxdrzuigwzfsby]bmhqmnbecjnyutpwlbk[iifejjworkzrsaj]illltueflutteej[adfixnftjenvyrigmkv]zgsqagrctomzublltjm
-fhcnrceynkcnnjxj[jrevstsodmhopao]zqapczirtxrunfhl
-rzmxbxurpdmzgef[agevdburkuvnsrof]rhclixqpruwxuanwxct
-vxejrazzpddvobzlq[dpspaddyabqzrjgvv]elcpgozzkqjsasufcv
-iaodnwpcpresylkhyy[dltvlrxbvnqslzzyvox]qownkehbhjprbzf
-kqbwgctrhxwrkkedau[occltggonhshykttsrr]snshslgqtlgejanlg
-jpesfmiguicqdcnkm[oawppiwdsmoidvkcre]wfifgnhqeisplngcjkr[wevtsiuznmpapke]dqgxavmudniuaml
-ddewtwhdfjatjlgrt[ceurnauksrgwzondnb]znsvkdkwsimbmdxfkh
-hwjwuhdokecprunbju[jhftguwujsuetdriyu]vcgpesthcnwuwpwes
-cgizaalsahfzkcxab[nehrqohgkmbxiufyco]xbnclpuepsanwrwjoo[kvdifptokbtlihgx]hgynbeebmdwbkwrfbh[rlypefyljzefnft]wwevofyexvbojyc
-ckxkzlpwrfhwzuep[etqgjhcmexxvaccx]qqkhjttaudjpbjboeo[gihevbqqqumfythcfm]hraqbarwvqnmvtiy[cbnfqzxyjcpmwvu]lrugefybnoiopvzi
-bbmhfnwnuhvdgmoibjq[eugipbrefcqiniulz]frkuvbhbdiaoaqdcaq[ksqqrrhjltlxvet]cdjhqazjzfrphjzjr[aspkvkpmwhkzxfeic]vkhbjolvoddtaasvs
-rxkbkkhnaiudojzsr[ecdvrnjjyzyqjxf]uxctotuqtvambwea
-saknwxxhcybeglwr[molhqlfbvopapnuco]hbbaomsdwcfwvoi[rlvhmvffqcyftricsyb]pkeuoigxjpwfbffif
-pylywhhzktocomu[sehthaaqwkyerucg]cwfmpqudeylrtavze
-vmawzgbfmmsivwfqclb[fpvwdbyrfjgmidxw]btatkdonphkxtprxfsj
-kspofpgsttceoft[fcqagpbfoujjulhp]fkbxvsbuwioyngydy[hnoxyyuhdviahwsf]gustmoflyrtelseo
-xyiofnffruqapvtgnr[wmigiedeszezgunm]vydqpobqqrisgtt[kolobhezpsiolofxrlq]abrzbbmtlqvuhxl
-enzmvjyrzypbbtmbvx[izvhoqpjgqgmmvricf]dbghstbtqgqawqjr[irvprevogenchjy]gbiwvcxncbjjvwmshsx
-uavpufepuqdbjedp[itqmeflkorinwdpjwp]hlrnsxymcnxwulsmfk[bayxjuxhtpcwafadefe]srrkibtivlskepjxamu
-dlwhxttrwjlxlit[atmcusmqvonodkfwqvb]ilfdsqjtjbimpaqht[zsbqjwsrgxlxbjqmulb]feblytbapctmfuao
-zfzicvjnuuugutgymp[owgyvyjfhrqpuukkgok]dfkfwodxgvrdqelliaa[xaumszuhzjjsxwe]ihaxfxpxjxcbhjg
-gmsgnyadjfimoemyzt[fjtprppdzhkorpqoo]eyxayeizyntiumrgk
-wvdatykekdfednl[kwpjrdcfjjklpdofpq]lidlhawqalcyigapvv[ukqjuzvvxehbwzhsci]rdrfhnobcwtvivgcc
-wvqxpnxpjmzfnfy[xgtkzusumupupuqvn]vmxceafgkxhnosupdkj
-ypfaupbycoerlpnhvk[pjrtdmwsmsckcfongoo]bjxlfxbekwvfruvy[uccfekaoczxlyigfs]gnvkjcwikenkmvgrpdj[yrtbyzxjkmpewjpbstp]nfwcwhereraqwxu
-cqxbsrqdgqudcci[olptuqqvfgunmstjc]xnppdflvdcjfviaemlm
-asywjbgrfvbfnkhnc[euubbvzujqjnsxtmel]gwxqasfbyjazgqodfh
-gvnexriimytwvefmo[dtuxofcgyfnaiibqx]iaaodpjwjnkbrqsmdzp[nuvnumldfhglafg]dpcqqfdrekqdfyfe
-hnwaqtrqgztvegfhj[mzqkcvhmqhzwmhlkc]kytpmyhzrvtytwvfkqk
-latjxjyjkwwnvyrbl[bjnilknxprpwziowcjn]zpdvccsjiuhfwrkn
-nowozzvrysgsfhxd[lhgxyitirlsyljl]nodxmmwtydaqkoxvu[vgbjtbbjqgfbssytsk]gpzprrvyvseifydxz
-sjihqhaecgshhhdrbto[goawszmxrrdtoxq]qvywgrnewpsordounhw[oaxydcsvrzzunbizz]nzisqsdrmmsaqwt[nmyxmrkeainaqyfe]eacdicawhfuobezyao
-oyztkiwsxqcufgqk[iyxqvktohfnoymgisag]acfhjawamdhawitvjg[npflzsugezpsmunukqa]vhhxnunvyxjtehyvv
-jzfmuzdlemckyiccan[rykdnvtoavzjtjxtx]vcmkcuioriltvpzzxqb[jdgqayewkwcqpkg]ulsujrvqzsmnpqgvg[lshytukyfqhnjehk]cpwbeyiudngpkrl
-uruvigtkkoqkfdbqkre[wyvcwnxixwkacuu]ajvziogdmzueetqzxxx[fyevgfzreomzjbsumi]ahbhcyjbadiacwjplq[quesxyjqfbckmnt]oqehbkjyoxsyczfta
-xzqfptkjpiknvkyzzt[hklpsitbnhlozgp]pkbgrwmqrbhohay[mhphptvyseydwfq]ehswmqarsalmcatb
-ohahitbjjxlnkyb[umyhhgtcasbfbxqx]dxyhbvpjjatkwvpkyry
-bcixbnnzlqxkisv[tapovjggqzlwlmc]vwnosivvmdcfsor[uaapwzmzarenaplcjp]jdcpazyedcdkdinrrz
-kdofbgwblzpnocgpq[scfdzdrueknbdud]axnfckaaghmrpfmk
-fisxkiplryvtnrvm[sypuemhvxvohsapkccc]exrrwesixcvnhzpopk[hpsilxrztuukzksyax]lixfijobrlgmonzui
-zjnlscyhmjmoofha[ezglbbmqulybnvf]qvbharzbfbbustsm[tdeqjfbfxeiknfr]chpwwntytidtnnjf
-qildxsfzfukzbmre[jykfpbbfelicvkqov]pyemzfzobutliokrrox[uplajddwknupdnfje]vombwrjguiukbiwozj[kcutkvgruxqqcuykn]zsbonxyerpjkfpnxchj
-pdmfyadwrblhcvecezb[fhqgurbenzitepyh]xhhtisxbusntgekaps[yefgbqwocpsexwq]emmlcuwjwvluecbfo[ohehzdjljocucatf]zmgbwenmeuiftywp
-xhrulprzdnbbzenux[ptzrrcmdscsuryk]ognjzqtletsyrcy[snpqabmryhyvcyztmd]lhkwhjylportbbo
-xphruwdeuqibzdss[ubuaiomstyuqgcgzyn]upkpgfqmamubaqhkao[ohjojarsqpjldirf]ianntdwcgclwmyzwjh[qqeajbudidxsqfw]nenqeljkdyjucrqnsgd
-xuydzitbfqwpaafru[jasqmetengbkljylhse]wkqxkjwkoipjfhkafnt[uolbyhzhmtupebneng]pcjjrczeczmoenefu
-ievtjpcjrlfqwisl[pzhzabrlrdeadbtpyec]sowfrknejwbuvgs
-qcuiylijqwfcqwjisqr[icjobpbxzjzuaxc]pcrdpfgwajrudfhxb[oiqtbvhfvitjvuts]ctwyepzbqlrtwuclz[smugjsqssswocjyc]lhlncivlmhmoexsrd
-yqmqbdhiciqlgdmf[rywqydtlwdocdih]ofxwyqckxktvcrlxsx[rxupkwzkvwrmhuiz]znbksfkkqxephhb
-bgzhbpweidflkmmjc[gxozhwikjiygyrm]vykpmxdywyfummana[mcqteiumnmmoyiwtcqw]ntczagaqoprodvhxbl
-gvtyicyxseltoqfgk[eozvokbnjytodemeo]ogofokdupjyhzdgrk[fucnzhyuqkcakflcky]zfgxqfofzfdxyzetc[kdgpxyithocprbr]rpqlihcmgthswhvz
-svrwqsrlntabucyssj[trbqnxxvtfiatqd]isjqyfxsoarfetrtgmm[lnwqkkgqucipvocrk]cdcsuvgwvzurnxleuus[wqjewzmcvqhhgwawyo]arzledaetbnpjmwjrl
-jttgsvurypqumflcm[ccznbkqklwsxmva]ooughikefyugfvz[rzsyqmtahohpmnq]kyotvedmsjfshan[bwadbneyfitukleqbyg]oyeonratlyvtfbcrs
-rpbklfvsjmisbnowf[vupfpfstcrfdxipqi]wuftflxmtftrcrb
-igqcfvsqbbvpmgflu[kremgawldkinlqnr]ogcijqlgvrvbloj
-ncjbiybzlsophbdemtc[zszwhtluxpobqclp]unvkyqmemvucdtwt[bzmibpkgwokausrgo]btnixophsknmjrqozwt
-gxapkeestvvhodxnp[xlvglgrlzjdrpjrps]sephfhztipqaftxnqp
-zalwvceeodddhqqyrk[znydhdhxhprlmip]bjijtiotyvfgyiou[odtkdhdrwuzpgwkf]kldnjprzjewdeyzmdua[wsdyljqvdmfdenajaks]zcvlwqkrytjsryab
-schsgvlniqevsrjfkxw[drtzpizdeopipceke]bduaeqelcxyvykt[vhoefhavfmuhjkgooub]tzgcfhwkfuvwcif
-wocmjawhtyhxksjiktg[hftunpxmlvyxauvnfj]spefcqpimqgjhnou[gmzejgwtyavnatavwju]vccngpxjmmxlruac
-igqxjgofompnnrsaxoh[lmmrwzhovfloeps]loixvtpiyzagyvgq[yaiiiuvpjpuldqk]jwpjsgmvglkzuiepr
-jgvoejrytatxvfqwt[hinkejefiqlrpqy]cgmvjuyjejpinjunld[qcdmwbqbqusirlxh]udhmheqsvmqmczbbofh
-qffigxgklwwslnts[gwhobujjovmwfmrg]menqzjmmxrgchttltek[fwegvyhranuutxgxec]fwzgoobvkjekogpfscr
-qlphzfkuyrhvkmsfxmb[unvtasxalhelbiw]gwqjfeftpkxtfiru[dhkyfsvpktyrttk]mypdaocnergxlnbodpi
-pxdqzshlqhkrhzwcqkb[tudazezhnktsxxexyq]ybzclsifzrgndcaxq[ewlslzvwnqqwvljgo]nwnyptvummeraaoow
-ysivygqkobbtznpxy[ydbgipznapsnkzfq]upackoodqdqmpvbgc[qnzvzwnbwrvgvwn]imcsgjzzaeltfxyhbx
-hcqlfxoahajthjesrdy[nammwfgfdqnjewunwz]pdzecgfgatymrrntt
-vwpdygtfuvbryipr[ehziaqbphyzzdolbfsv]rqxvfvafrauzncapu[dvqlgdgkzgpbjuihbl]sdtldsvjvvtlvjdgd
-rajovnvmoxozjldjd[czqnvirgxkydoaaxr]dejvwkgmpwqvnvnzzsb[zwxifotwvljvpkxae]taoulidxuvefjqxjdu
-jywqykajspyzvcw[jkqxjzfmvcrsqszgim]fncjgfxwbvfdwujhooa[otrkhmvyonynxsyap]skgdhtgcwmzixpdgmjh
-wbkndoivecgnkrid[tpdmkrufmawhpijryk]untkposunbiezua[njngjktbavkmsozyy]dqotrtnnoxxejcz[nyinrkqzxnsaahwa]zpdibcyegeumjjgowz
-gexzzkajyulforpnmb[mwihfmwsdpjjsnaxmme]xavowvaqybvqcqescdq[hjymwnhorqcdkoxv]myycpwmcpxinhru[koqbxfaoankdcpi]hgdktcvvxvoolccqcy
-alpcsvxjoouuhjrgzo[blnjpvnbtcufzsxqn]ipijmuwbljfwuxotk[sgpwkohrsfeypqc]vqlggpiytetmkifwc
-ixbszxrkuuzvvstrn[kdgfwhiapjrtiervwi]iugjmuvqljcbnmumal[ajgjfwerxsqqyrxuvob]qcdagpdvlnicajqcooo[qtuiukkwxyevxmgijtm]bgfetysdwvceqjc
-pdbbmswfeutwunlcm[ywbxptxhgqpjkpeenbx]wzzaxgyiztbdftpm[lbeexhgaqvezxfef]fqktklfxugwifcfaio[ucpewlhkqnbsigioumy]cawftwrwmbnfmzmhd
-xmtduxirbkbxjrqkvg[ythlqfokwjfwowrq]dguxbidgwelcrbxahi[mdumdnvbcsicvki]yhdgylmjisngrkcnbne
-yzilepuvsfipivcroyu[czocwppwvwxjadgqpc]uoypwqxrpcpdzmsyyqx[mzjaguojtnjobsvpdx]vnsywqfvrnpipenwka[dtiayvtdtuyeqlddh]wpxkwbagfqncorkomi
-qyebzyuerdwfocyr[cayytpduwkezuatyb]nuazweyhjemncuqpp[gwadeldyzfsvyqyk]gqjdzsuylxshtoayat
-eliktfnkrxvywmvr[tlnexbwvbbdeupd]gynrdmuppfbawfcb[dqsidilgsixsudputz]odwsmpcptosjdhrp[mumunqhddegofkrpabd]bnetmxiqkwhtcsgpuui
-wuozzupdubqhnbm[siwvzeelxcodzissd]niswczzlnrokkhrnd
-bjxpecnvcntfbqdyqy[hjawjkugajcwmouz]ipusnakbyyxmqhyislo[xcafwiwiabdlxpaqqo]vaemogopzemmnilw
-dlczcabztkrsdznjlcd[atcfirjxoipnvnoobjr]ujnimmhscetvevwpj[vnbwetjzberefmavwuy]penzvgcewibypznzpv[rqsqdxopumiqfftcb]qrotltpgkmzcndx
-juqqbnfozoikxscqata[cgretlqkyynhwhmk]yiehuxyidjlzpjs[jdnlbxkxvsufsduoulo]ymrfqienfjrrgraxfh[jlopugujyekjzrfet]hqlqjkulbfsnnxyksp
-epcyjxlwzmxwlulhx[pxjecldoxjwjkrndmir]baneyblyinubutjdi[cufdnjpvlwbfqbulb]dbzgyztjopciduxuo[paqntbrciorikaw]jbpsfzmzxvxlrgj
-euufrqxfhnfdzlawui[zwgpectzebtpxfwbym]btexmfeuilnoqsbgmz[hvnxaanolwzkygx]hurfyrjkanhjlaz[vdmsczzhobknlhoslpg]bgitrvjaildspbz
-gaweiazdfuixwqo[qedebtjxaewtracsgk]qnmuhjsbvqvcnov[aabcxwfcazxjqajv]xlhkehyvjohrqkbzyow
-uqxzgyclomagldxv[amcvkpboneuscronwcs]qbeqgbmrdcdtvsc
-xgkenttkfbysllows[bamxgmibkgysryjebgr]dhfiqnlocykclbofdzj
-ppyfzqrjpxgouxmsduv[euokodyohaiajyvsrz]xfxsvtjasezevkjwjk
-vcsgnfhhjkjssirc[kfdwqpdjaejqbfaxu]riqzqfwmwnsiqgamwm
-tvxtikdqugadgbux[niaxwpplrlwrnipcnnc]tcunnqamexertrdm[xkxjepysgqqdphb]vnxvtxntrsqrfjaz[akxkeqvlxgaorhqnd]sfhwarxbzfbtftuflr
-lwklfaiawghiwljxxow[oqmepnydmfkjbgkrjaj]clhguzdrfrmcoslsghh
-eqtzgxqoviujmxpg[pkkbcdmlkvbcppqrm]zjzmsjmxdkaknido[sellbmhvshvqdsslyq]xuokcgfaxstavgkni
-gstjodvjotzmvnm[mfvosfrnlksillaqs]riecejrjvhdrjvdl[sznhzufedvbdhbeq]msgvdfzoxeykqyx
-ivwoejkryedvxpi[autbisivgebnntgixu]papdjtvhwtxgipbhes
-apzalddmyxxmfysm[cdzptytpjydinlfdxa]gnjxiwepetlucfl[izgqnvcdaqkzgtpvwvk]cdxqaizjmvdnxigkmvm[cdybhclfttdchsbnyzs]xlqahfrmgnowlgba
-slubhmrmovzbgdw[dehwvsngduvcfkontgs]zeiqylnomqgevvikm[oubxjfwewqtdjwacb]mqjinmndnakfemp[mccapdxlrmrevbuaas]hcjdpjgnoguztrdjgbt
-vqeogkqjnfuayfpioi[rnkeynfubkpmjalnz]ybrwpzhiscwtyue[vnhkeaqwzawibjnvnos]ctmmursouxvylixiqko[voqlscgdnaelsbxcshf]azssljeollyzjjwkxin
-sanarwdtnkaemdsoj[ojswyaadxpnpzcm]acjrepbjwnnpncdf
-uvankqvbgxtgignh[zaimktolqipleig]mobimtizmlgqetrxkft[kooknezmesqkqisip]jdpwwsisdorcrryvyjn
-lkiqyvxlouvphqf[wiibwrighxagoiod]mavajklcesvhiytvcx[ntesmbqoxkadtth]kovhcrsmmtllhai
-ilzqxrlibfavovp[hrdmyejnxrlntti]yqmycbqlyitgkumdm
-oslndtyjgissmwhqbo[lguvaxjavhlklnqvd]cbmjzevkakhfauq[huujtqleuzhwcbpxjf]hiitxzclsgphiembgwx[ixccjsoybxmjmufm]knmagcfohytzcoq
-eutljtdlueiugunxsy[bmbgyvpiruvvuezir]vksxzmgftqglhrowpk[wphxqgxjmzhuqrwhce]giazmdryyjldglcivd[nsicphjzfpfzlhfymh]pfpeazmsdcttsutbs
-tmdniznfpsrdaivxpcp[nlebmzzfjfklqixhk]sbusrwexlbpswiyslbh[tuvimwrkchmarbvl]ykhoceojfjugoim
-vjkixsnkgnhzcsj[eqauuxevvcbzmlrvxk]owiikpkahbpkpuhkmns
-yiomyydjxljwyxoeh[rxyahvmloktamapez]ygtodyeyjtqusou[esemeduybcbngynmzl]rxszjfhelknuyjq
-hayzvqcfdjowlfeavo[mmcaawmtqthurqvmlfq]kbdpwcduhsjfbskcin[sueeedwjrdazxpae]drtfzfbefgvneiiqtsn
-lfsgnugdavjvstpk[usjflghmtbzdzavzgos]vajnuirkzezjgkst[ixiusdyawuqkbnacri]yfhtwiifnoltnygk
-fqvyvpipisvelyjfa[xewusykjjogfsupar]icdydlsidbisscyn[bpibwwfzoqajtnxlad]potpbswobrhcyvy
-wozhxjyiybczbhbqvd[kfsajcbxdespfdewbjw]afcsihkfitjosfwxb[fngvcuammwspeglx]xizamsngscxtprjwkq
-kmakicivcpvmjokl[rnsobihgweztudwrql]wytavzsniyqrdrxu
-nawqmyenftpbvxo[nsztprtyzoacbxy]jiwvrmgzztoisveafzh[kgpykqugwgvfkztnnz]qqmehjutfdzzowkof
-mxddcacabljlmyxmpn[zdlffviwrbhbjhl]niubaphkzsiybwkmh[ysxwkjpjhpyjmosgeo]kkhqupjsegymyxfh[sxxdsrtuwgsznnvhuy]licmdzzrtcxkgce
-hkvugidmuerakcmmsn[mkmrvpqxfoghbyxr]brkgsmexzyvqztplvgo
-inbjfdjjfofwckfckfo[nhjqvxeoedsfzfpwt]snlalnxxyjihecmxl[qtoxbcyxxtvuliams]bijqmocptaquusurml
-wmwfxoaocwtzuhvenl[yzpbmaoazbchjxozl]oulzkybjweqqzml[ydkamvkncxomqsibme]fcuomzdfejvijxeniaf
-clyxvevuyzylpdud[jmwhfhkzrzzkawp]nwcvtlwlwnbebgdz[cbnfsolnppgafml]mxhbrzrialopbbk
-ekyvudgmgzgiomwt[ebcbzzamsuhycbcvc]gzmmgrqbbuvbzfebh[lyuflvjhaxkfxkv]bvnmyumtjzismbtig[nqoxegjljmzarvyowo]rldakoyzzgansfefpwr
-wjhfgmicaoysnhmcer[kocbthyqjwsefyepgqh]vvzlwheralmhnixsb[adysumyfpsahmkntv]bnzgyilfgsepwvrdbdo[yqcnxfvzlpjxnvv]syedcecdzbffhmpztd
-qdmvnazvvyyxqjkm[lcmgrtbttzwijqf]gjacmuqivbcttnp[uduzbmcdayazzpr]vabqjkbgwnjophdxwvr[yyljnrcxwwcehamtg]psdjpizyavaebua
-fzjlpppzspuaflfwtv[dqmrdnatqlqnvowh]bevfgmojlmxmvfqb[smrcvucejxdrppkldvg]nbagvxquhrilbzi[dtbbwkaqepopjtgsgnz]zebxmxzzszbxtqeyjmd
-kipuoxmzbydfycmkxcx[bfmjtzvthijzhezx]aiwnfmjhetyrdahmi
-hiekvarctkixnmypau[dafmuxavuaosooos]czvsosvafizsjiouwi
-epzppyfkcwcqiirpm[drxvceywherxdpnxl]pzylclelnhztrgnqb[qrmfgrtyqmlnsggg]seaeqafycqwjfccuyhv[fnwvqeftfesdvyu]djdlucfogiqnrblz
-ihjtuvxjkvzqdpepjd[xzmyhwkdjooosritpw]rsvwysjoukgevdeve
-wdgepzzfwonrsxprc[oefuycfwngwkrgklo]fbckfdmwzzwfiinlfhw[mjebaresrtulcvkeb]aqxnxzpnqukspcol[hpfnupcjrkswiwlgzz]xbnwmtcsqwbpkxys
-nbaxkwtbtodcuecg[xqoetzqgjhxmuvfvnoa]edvwhehydqhhfjm[xyepeppmsepsaixyisi]txxbbqwefwuffdztlnc
-aqeknneydrvnameefot[dduhtgzqtjyggmr]ausnandgijmikvgd[jjvsfofhypkfrrc]rgzmkiqggfaesoznlxl[przqmabciaxkcunhy]cnntseafxmnjldcp
-rxilrztnhgzclsgy[yaxsuppphljrtcxev]mqyqgjopdetsxzmutjk[adyfostrkvhuajndjaw]ikumnitoxctaqcpop
-ntotlcdwgtsgotovhyj[wgduvgtqijgobem]hhdytbkiplykiejg[sntkfbyrzgguijtwmm]mpxnepfkhssujwhegbq[sxpsxodobizsvppqptl]uqlqlsopbfmgliw
-wbyugpjhymzlgbl[zdoddxxbnxqimlo]tyaobecgkbvrmgajpga[asriovkglwqiukcxtjk]nvjqkrzxwicfzdr[vzqasgjrafilljt]eobbqeenineqwps
-xbtwnvkwrlnwseaids[znlftryxezmidoc]suigxfrnxfzeudpi[ahlshriqmozkpiogtc]zpjiwsbdawhjynju
-drjfebkgnrcuqyzpezw[hnweqviwyjtfrwpu]popubobnviqwkqfv[plaxjplhmhjqjmqjsh]idacejabrvhfteelbiu[hhxwpwgvjcncpjcovv]tqyykiwalnnkoniju
-fwdnjlvptzmxpwvsli[eidmcurldxszfvvhjf]bshskptweuzuqtjym[dpwmmspdxpiqidrfz]bulnlyngfaybqfinqn
-khvidctisgemoswq[vzknkycuuvznnjkzay]rvzkmucboqomxkmtuvv
-ymfxlhojyjfqvctzue[sihfpembvmdtdda]wezkljquqtkcyiar
-cgzdjkbnmhptcggqib[autoeqiibhxdief]zapmbimuvhywdtsbtm
-gilwnvmvdyftcdmvaql[esmtawtmepovyih]quztpmdplotzlszav
-sfsncarxehtgmutj[aqauaojoqabkguvan]olgokvyhpfjzyqgvbcy[fsfdkbxhstvxlkzb]ozwgbzlhrocqpjoseq
-shzexlixgxazcobmdvz[bvrebdcpytgplvii]gxdgzyoqpmkqznz[wuywofxihsgxgpcksgh]lwqsslamcrmkobn
-pkjlltvbsjnfarycgf[gwkayyieahfowbrgr]ccgyjvjbdeoilsznvbi[njniljtubngiuwlil]kosrulvapzdufvq
-clhvakestwquwywsohs[ubwecsjptinhzngw]dvjcvukpkdrgpbeua[svetegijnnbtetpgfu]nfejtethkqavpol
-vksryzexymetdykenw[etxzvunetbovrwttr]pnmwnldqzmxzjldnmh[vnskreneiwajgmd]rwbeletsldocxguy[agccpaxhrlfokpt]wembexaqbprlrzg
-wrxyiatlpvvcuroguv[hfcsmxesvpwfgtpqip]jbspeicucxtbnti
-gbxyskaitzeogoej[drokshekgcpxpgktoi]ivxtocmlrugoguf
-sfzpstesdmegcuhn[drrpxmsfpcjvqerjb]jqcvoeifgceremgz[chsbisfayixexqer]qyhonslazxrkagpp
-bfufgciknfkthfbr[tlfmuebscorrclekjfx]offqunmqlcetebpov[bsbmhnbmmqmdbpnt]knkjsvpmffjqvtqpk[bryxvufxbsocwnd]hkxplkqhsymumxarn
-ftafmqgtmaazvmstfq[qxsvdxplpesqzqg]yrbkrhtzaqtygxjheuo
-xqgmldfvsmitjzhbr[yrwujpzkzksxdbthk]jblnpmdcljgadym
-ijtilnlhxlkhoaftet[rgzfrfsilxhwgpzx]gmdwwndlvtvvtdimd[wyghkhzahfwpaknrxiy]ekpkylqvvxypaszcozp[hjdwslazthbzhdimne]xuptxflgcjgdajfgqa
-ceklxvygwnkfrqvwd[qxjqndmhxzvhicvcf]lvrzumjuaawtgviue[xdvdtoulmeaaiiuqa]xveikrwzicxctyy
-pdvdkirojjubchc[iylcutkspnuquwdc]uzbtxemzazuwottv[sojezpwrsstkdwkses]laokggzzeaobwfus
-ibuowtqicxqiifze[emohxvujvolopghkrgw]secpljnouzblzup[xvpvnqvnsgsnmhwdpbn]ykpvwjlhtpdjlflxvye
-botbhhrfjqjqwdgmeu[itwjgbhzrqnnagvy]pzexftzhniligeyd[egtdkuktihxgmdd]cumzxbfgryzedtsc
-dgvuwphikpupaovhovx[nbwxxhepxfzlxcoma]vypmvuopklupuzlk[plkvxscxriyzeln]sopaaxvckgcbiahm[gpafvifmxvjouczus]uyqhgsdxkcylwle
-gufjlajgktlwahsa[kwtpvwbvjzpmpbstiyj]nqkkgajutaofdauzmfq[zihotkwlyixmfsp]fezlipznjthttsiwpj
-lqriaqvyvawemnogd[gyqqrvivtuxxbzf]xqrrsgnxbpmjsgqqr[zfwpyfwojhemhmyoajq]pyninwzcjzypmygy[qzftysfhztknzjo]zyybzurfxiolsik
-iojvqxazkhdwzed[jnnntfrduoxnyqpeszj]dpeducyducrsuwa[rnfiudvklwbdbho]lklubgxkqldqalvh[ogbeiwjdaeuwjyz]cvhoaaenmeuovocvog
-kxtwtkvaixeisgzjky[cnzhhsipmfawaqzc]gjpptvjnwmbqqbuum[qryazcieexjwwsvfi]cysiabvuldrkvsxqgu[koflanzstuwaebjih]krzursoabnpundffqs
-bzqcnugxfeixhnvk[sjyuxwjdceauputr]tcjsgbmvjklijlowud[mdmuqbpupxhndvfcd]ypgdbaxwopztyqelfis[bvpphfvdscmfbhynf]vjaytjezersopuqa
-sceyeinwgkcccgn[sgxwelfgqimdwzlbj]uvyuazuplvkhpndc[etahwkowloxlylnp]hletqjpvxzicdrs[kyrfwcyoudjlueqrvr]kdqsjyoajsfenmrol
-atkckckrgntchlets[tyebmdckmayofez]hryglgphkgeoswe[jeamxrrzxgyzvmuh]vcvejocdlauybbz[lnnricpcvqztoumc]uggeimsqrjnppskl
-rutaemkjlwrslmsp[jwwgmphxqlggydlsh]xdudpbdjfqtcgrw
-lwddwkagigyjsht[zpizzqoqkcbqmdqfqp]vbvigihfyemwjqusdh[kqgxbnysneqgxdwzkpp]issqguyhzmttxofz
-zzxsolnnbmerygtvvk[bhfexiwvaohrbqbadi]zdsieuxicwijamvo
-lbfovxmrghyzhfdybb[whedwghlrxnjtvqelzp]oezlanrknbaxtmo[jtrlurnbhmuymfwx]puvsiaizbjtqnot[rssajpiwyftzhoacoqh]ihmzohwlncqrfrjpbpn
-mflsnlcufwvqbhye[lslradskdqrueaxvoez]iyrdzgwbghbrctrmdt[bqgxpsiwleisnru]sjwifvnufaaedueaag
-rcdjaebyojixvatc[bjybjvqonbvdtyjwet]rnatoqmpxauyiezad[ltcfporqmmavmsjgmrb]sdiogziluykhmgcjf[bkkhyuslxlarrqbqe]zzsdsepgilymdpnhw
-jikhvuzivjikuxkmlus[vsgrhafeosvtphzg]bjhxequjxbqorsnhx[pvkgxrttjofimfuq]cmrxlinhwqxhrkrdzpk[xugunnrtpxbnemj]hapjbouhnfydllttkdt
-xsvwiruapkldajmkyx[iohclbiotvabvkhkngm]qfvbpipvniprtqjj[ehcphknxkybflhn]ackdoidsuczifwx[bdbekqnxcwwskgxp]ofvzsecshsgbqll
-rnpjfqpbnpfqtlpkc[itzrqowsquwryisqywl]mrkjwermsejxwqubxwi[plxkhpuflnhspjficnt]djldgtkuzafchfwar[auijeassmbtfdsd]etfcwmifwixeffrtpco
-nkqwqvkikgnmwcnos[nmvtwkyhwtwyrrupx]emdniphxpavkede
-tkcdryrjllweves[pqdjnylpftbbktemtkl]qlykuckixcfhwuczikv
-cfjwosfrfjwgwognyjc[jiwoynoxdngalmreoq]otqvhbkwlkpqatkx[wwgwguxuzwlorap]rjuopkpuaftnkdeg
-icgtjqangadcebdax[wyosawgqnexwsdqq]ulyhqvrzrqhibudyu
-mrrdimungjnszyr[quzeqzycxcsamewykb]vqrhnvflewxwzvxwxg
-aciggfsvhpeaemh[xhizavbtwzpsxdkgzdl]dbqpkvkmrbwjcle
-ctxwfkazxjvguatxus[hkcjonilmmvovjawir]ruwyywhbhkrheofbpr[qeknvkabxrdgfxgrp]hymknrdlgolmqrpklal[qbkzigpdxfcgnfhdrqr]hrutorkgyzxlqlujnv
-ocyqsefzuzizjllui[ttpjltsmxnkavfbviwn]ccfanejrzrghpnb[ehkgwatoncpnwfpjc]qkwynkumqgvxuslirgg[vrnprgoivxrsqlpbmke]jdygjgsfkbhrbfc
-necmpldghpppjggvw[vtantcichlsjgrzdxlo]bihypdunzshlhxktuk[iusfpqesheojjdmk]ycztqgqrqsuifzgnqvw[oyjhytgpicigpcf]ewrixdzorbmmxgywf
-tsddziihnzqushtoeg[ldqhzxrgtfkcrhecrm]nnesvhwbrujwmon
-rdapxiunwuijmxrqf[qvekjcwvibpucemj]uidzbyozcfnpempx
-fdvouzrhnlgyemqqqa[rosijdvpwbgnxzzr]moxykttwbfixxvflpje[daadlshdcnrwftzxpjj]pgpphzgfkeapstad[rptqkhjmanvnfuj]drurgqqilijigaa
-dcdcoboftwhtitlto[qdqpbbobdncixqwhmn]cdjrukqmcdbzwji
-fsmzzqlggnjqunemec[oxrxnckqpvilfinnolv]mgpmmemxrkuonag[wsoiyculboqjnux]urwswywdpuesxaq
-gpughkygfkxahewxsip[licxlfgczxcqejs]idnuezcmwhwgryjare
-shoehgaydkpbxwshf[ksbdsdldhfsxjipf]ubrrcyykdsgnywhojya[hfjwtuughentmddwd]wjpsomayxantmltuoep
-srpgizgochbueqgg[qeqltfdohredaspdbmy]cexowllqgvorkapnkc[kfivkiksqxospfw]naiqwxlkjowysnh
-patacqalyfmxulxxtkw[hyxkhrfewkpafeel]thgckmswuwcjgcuepp[lsfmmxuvmiyyzzxu]yiktaounkhxoqzm
-maeefdbswszxotz[sdfwswrwotoblvzk]bqmhwlxmzvjnorn[phhhipunsmqfmormtk]aasvyeqeffypmcop
-fhpaqlgiumuampggbha[tktjydzyzgbpqosq]dpqodhygfzmbfku
-iotcaohleclcmtwp[zirjcaznbsuwrbbspl]vdyhcyoroztlltnsubz[nmnaakmudmmobxzk]xjxybbzqfoibovwhr[tpzyhrmupmrfoeufsv]nfvtlfdnynqiwrmnmt
-bsadpcmsvgfxbpskka[bqcswpjvfijomiajzjv]zjzfrshleucdcwpf[ipqvielmzuykgbs]rsvzmpmpfahujfofx
-fvryaokhaacjqgah[epbqswhzewpvaip]cuveezfvkvejvvaizr[hlhatamayfeqllu]ixwqbzzaekbgxkmhzaz
-reyvoyklzltgudphp[oxjgegadnwxleogg]ljmtypolhtjwpvs
-cbihaubuoteffoyu[svxjexmihzibcqb]jzdqjhmjgugqyur
-krpfvdsywmrzxbusjl[juomxpbfboxgvkm]brhpobarqecdmqkiwy
-wsbwcjnpzputekmilg[qhdrjrdtwqqaqsymipv]fyrpxnpnbowlhwkcwd[wcxmrmmzlznnrel]oamqtpijleztiuknf
-mmjzxbxoyrxkyvdtss[cikixrlteokbezfi]urjcocznnivoqkf[wzqgjmuuvuniccrj]eiarnnhreduakcv
-honratmzckbtooiwan[epebkioukueaexbb]xyakukoiqfmtdhvxf
-auczawuragikjbyg[xqvricdlkrsbnmjqymq]uwinnxrbwluaanvjyvz
-rrpjxhttogyefupw[cidavmfspeeooolb]ucfrrurpkeqltglk[ulptzlfrcvniduqkc]bytebcgtpqkknxpbh
-ateymyqwgrjfwemgg[xppbfkjrlnizskzttbw]genvojuvqaudosfm[psnzsxmpjtdbznh]kljgvgkdvezzljte[ovfuojewcuvcqrfdzsk]kmbgrfpjzllvrbmpimu
-mrvctdetjidibveb[msvevesuydbqwrytbh]yiliwznzilsslmachk[mqyuthyalilcmdpxz]ctawteeyyrsbncp
-xhqazvqcraogaog[efbpamcmboregjesn]vinozerwxjyrytyd[vmzmjnevhaiidnhiuw]nvzsnlixrdzmzvtgfy[veacynylxxfkeep]syokzdwmkkhirrz
-swavkosetgudxoshj[fvzlrzpjhrbnbqsccn]hlvbbqalpdfefmaxdse[ekisavmzzlowfwcmqp]hutgwyxxcqjdiso[vraskyhzrfjitpxakqa]rcljjityeqogidyb
-hidnzkzjrekzkkqqpj[qvvuzioihfbxhglu]nzlgputvbrvwrchwhzc[rimjeexwqbdnsdn]tfzbpsuttxirwszy
-wiubbpcsjjmtbnd[thcllhnafhmdojqr]viplkejozrbrwacv
-jaywbjoscfdifdfalf[lvouibjhzbkxdqd]mcxggciwqqirwcyps[ztiybfroldnlieeg]vwnzbrghyfatjsxsvfl[jenhflndcjmgdojv]uyxvsnfigbtgaemccz
-uutahwebslojhtl[affybmhohxqavah]xocumtcofvavgdgl[xlypyhazihrgfwllp]ptfnqjlzbaccyoaawi
-akdzebybusompcsooz[xgymxdecspvdvkgit]dtnhtzkelcazovecig
-jqajvhvbrkrynxg[yekfvwkborakrkfl]bovxzhceonjclmgecgy
-ilythgztqwpxktjrpf[igwywudlvdqpqbu]hxmvjverypjvjtk
-dbkmmuymxedkowpcws[kxtthcqfurgkuxxx]vkypnrqtmhlsqogt[rtixamexlrydluvxe]nbehtyxipwgvefctyaf[cxtipjkxixrgawvomc]ssvdpknocgugwjxpzpf
-fidyxymrgwqpntyg[loqqjfrzmidkxskyfsa]mqilmzklkzhzedf[mitpmedchdhhzxdqpl]roerrhbijrjwmsm[quhrsmqqujwufnm]layxublhkfpoykadvcr
-njsjelrfstonstmhq[crcgsmvxndyvyfsjku]yvyrpgjnuimkxcutgvh[gwmbqumupsdfrusp]sbedcqptxzhsohroth[wudivolpxauvxvxbpqk]bnfygsxxzqwxumonnm
-ivtobvcmwywqtjkfa[tcfyhhgftbsswpnvbtv]bkuulyhtihhqcckjo[lgnkduoojrzyjhby]uwkeujommiprdopgche
-mzrhrvpuyolqlku[rlofuuumtasfuknrasa]tfhglvunxtkafazyehj[hrnjrlpyjntwosogwti]ixtpihfavwqkjnlipmm
-jzhfwqxoqsgnrnex[ccrtrnroigtbvrnjeji]bbhfsodufjqhjvplii[mcubmtdgwttmmnazhpt]hovifldmlnbzrwqicaz
-hcchhpmerpjppsj[wftljcxoqwtoclz]xihvvfjfhefdkeip[abdthspjojqvwxx]fhffpflinospcczm
-vupulseekbaiaoempu[zupmjydxyobqbfmy]xkyopqxvogwcpuwnud[orgnovcpbpqecljkaq]sdvcakqwdmgydeeup
-wruccyxbyiexpnka[iirsbfvggokpwli]gztvpqcsckeaiqofwf[zdloxqdlcazkhkppz]jydaafpuoznegyif
-lwxqnbbzjlckuji[bzxykmlhlgjosvs]fdocjjmtlhlghzvj[snveavqbuhnzqktmyur]xcoabwwqxexqzakbrh[iqkdvngcdtlhlhudqk]edydfxflcnpzrcjsppt
-eokcsyiozfqhcbzffj[uiczyrevovzcgvu]mniuhovkpklhedhx[gbyzowvpnxpemkcrccc]avfhgxxldgtjxuy
-rxjbmcovdnxoxrjter[ijiplhrlromkesgs]xwtfawphuvrjimntwvs
-uuwjtmgqskgrxrlzt[nqzvntwfmxeptqylma]gbahtqxvunohprsd[strhrrwmxsuoiuvi]nhamfjzlocoufnwbgu[osdxgghdsdkbqcpj]ywmalngfjbjymkz
-vsmcjtzwfubhlop[ttbkmxwjonmuscwi]ikjuxrmqhqldtfzqa
-oqhkopaodmimgikwcg[biimzvsoczaxfdy]bkcbjbcusyhdpfo[vfnzlymbwetzhbcxz]zyntiiipnkmsjjemxq
-hzaeznnipwioicdfa[lperfrgxekbntipyf]mnerflshwywujfsp[nrkcmayjxnxbhuvo]mdxovxksmxlwvkbrdf
-cuqqyiwojnwvbybcps[bujmpcuovhebtztm]bektaixvzjpofzb[egiiqzxqdlfwoukjyiw]nqkjlpwevuxeognpnq
-ryxoyvavwharlbwzeq[rphqbmnaiykgafsftjs]ijrqxkvnqersvvryz[mevoiitcztvfztorohn]hkchrvkqswjpyay[staoxhiuifnbmxuytlc]fuawdkujedmkpeto
-caowivzceqsclbyp[grpcqqthiebrabqwhxv]bzmazhewqmbuhjokm
-uhrtxyxnakvjydnroc[fhnjxathwyyxszmo]zzukeuqdhxravrs[zqcltmosvkqcekap]gjartckwucksqzcn[smddsrvnfxqjxya]gkumdkzqxcqxfyhm
-ldzhaqlkbxfagur[qvlstlwnkzbmxlxw]reflsfhdsosjaaesps[qajtodlxlfrbdlj]bxytsckpxumuoklw
-ghjjrxtnytqatjfxwt[opmvopscrillueslb]zsxtxstrwnyzolxk[lyeeidvaghynwkckr]shhkellgnhsuekrzoc
-vpliqrfetzttovx[nkmmjlsskjhnyxh]ayockmlevegaseq[auzorvghfdfuuajnt]poknhujvpctqrrycfun
-vzgpmpjvlzbhzhlexp[zheyfmgekvhjsnmosaq]krmficowypbxwbztrn[rvoedtkjlfpxtaot]rxwejzlarsgdlayv
-jfrznpvhlbchvre[obxfauzcchgnzksp]fgimlwasdrgqvquis[ewaqnfexmitmuxhqnp]graisawghismkouwfv
-nqmcashwuluyxaxcw[fdqovhbtwijgklubmon]dgxewefrjkhrylq[maeguvhvptbgmjdwhxb]dkdmdobhsbyforzmqr
-huwexxqnjlofulknxz[qnbpzxlpdlsqrti]sbmmwvryxqsrfzpm[ucizjfqroaflnixzbpr]ndztjtaeahzmkyords
-mwlrbdybkjhgorutus[bmbedqpcsxwkganh]ttwjrjrvxsikepdbvgs[qycnjzrbeiiplxarls]atrevpowofauioaof[nlhyhaoljptrowlmyo]hmeaxvwasyaszlgq
-tqsmjetgtzmxfgakjqs[cbnxrpnckgcndpcwiae]uavavaewuucokfrm[viufzfvvuiuuehyxcw]nkskrloinkwsoukw
-roximfsrbnzyzjmn[bqugwcdliqyzyaqiupv]rpdidncsfgexyncbg[amzmtmqwzipkjfy]fqnscfsjmxjlpoccvfd[bpebfxoinyaqsgjpb]dykidfsbcykdobqe
-rcmbmjwgmwathepxunw[uoieoiytmrywrjevift]ourmrqqatqnwmrisyu[bxodgsozbekrcuwf]gkaigbulsjxysdiawg[kczakejsrndvzdirs]ggjgbhegtgijrdz
-xtksmozdsgsclsxrfh[afxjsmsjpuqnomb]onqkiyrogyrkykxjr[bhvnrdaenimevcx]snufewjwvfqkafjjzn[cquvjkzxpbfbghmnpwi]wjbdkkloxxgsgnmriw
-doruvpwqkvibnww[uslnnvqcrwjlexech]cshujlmmujfjdtjw[pkbasqruzspzipwrqke]yypbzzqwoasgldn
-aoxxznvrxfhzwyyq[byxxvystyyrlzvl]jnilbnasrzvgbbhrl
-wvtujbbebuyuazangzc[moooepbzqolouuyxij]vhqrubkyyuypknfh[gvfucxhufyyjefei]axvrkaeaqlxxfip[fiazyighxscxhiwydc]acvifmzzltvluos
-yzyfibzwjuddaoxc[gpjgkmckxctlttgcdcm]rmjohduchcituck[noozqqxrakiadwu]mipigxbhlbtngtpcpz
-zipobscyynjrecng[jeekozoaoyuuqmroisx]tgffoyomlggbyjnnv[mcfybdsenqhygjo]dnzrpghyroqbcje[aoapyvfyscqfzhihddf]vplszbvbycwxqrhb
-gcoyyfxpuufglqfsczx[ebjwlqjgtgkqdeike]xtuuxrrbgiwhwqdcyw
-mdwjuxoulckloxfujkj[omieaeznetsnkeoroh]ggnwbuenkgeujmap[ghrtxfonaxyhfogpjub]ptyopzxhctssbwlpwy[xmpglsqcnihwzgbgm]yqmqddmugnlrbnqkgci
-xeayvddumafiomemh[euwluehznzxvpmzbz]fxcevhwksvwhrvzid[maotzdveeldpyetguj]cixjfwlbbbrrqmnoklo
-larctxbpbdnbpqyyz[vzooyuwrgpgtjtq]sgizsbcjteinyxto[jbqzsxejwwgrpcgzwrj]bpwcfwyglhtuxqmy
-zbxohuvlboydqvqhhkd[wgcjvlrppivpnxifvk]kmpdiwdtpmrctyhy[pprsqaqxunduprjnjxx]zfbqlbdpmcgfwenem
-ghcjhgkmyfejmua[mqsuukbcdvjmdnz]ixxelnebxjrtrdwzlkd[ikojyewznghqksregl]tkthqugytcsdudoggp
-hdfwyjganjbjhbjvswz[bfaxlkjfrkakeedg]zrkxyzbozmchfqgz
-inmdmdyssqhykuhn[vbjasprzyxaphygdg]ucbbhyvlsjjdqri
-zdyejivfbywyaaqljp[sxmtwgwmwbqelhsg]jesgfubnghtsagcu[tofvxzmzzsnywhbx]ibnbzcdhusdiqhgika[sipfigjsngidlzxxneq]bljavpomkpqzrsuuo
-uahcmotfanpvzru[opmqbnngxtudnuyc]lsvafzhwwwmoagl[kzpffwsffxozirgyz]lsbjnbzflbiprwuvurf
-rzietxnbixgvzxnmzlj[iygcirkrgwwsgpcidzr]bfrwgfeyyatmalyjsl[dweehclvlbefvlcp]qurpnzinmyweipshzs[lgbfgdjhddmtvbzxu]ppxtzzkiizoqqguct
-zfsvifntrvbjgdcuc[jjwqwhifqbxeqkbigcl]fmyuetebsksddti[hmopwdnxvmqwqflr]jidndiejmzoutjpkdm
-qwnlstjkluchubgkttm[yyndjrkhfqrxuyglebo]xdltobqidrkstozk[shmmslerstluurc]fxkrzqnfjoalxcmssq[bjenpehkwbxpktb]eaallvedtajrnupomva
-zxqdqrztephcpieqdi[rigecfyegojksvjmya]rgygzpdzmpvogeurni[odgdyrqmqgrcmhfcu]ggdgejoiritcrdxxu
-ezhzkozgllmnompn[sqyilkceizeygqkwot]pdkuklrqdgtgoqap[yvadgqlkffoklshvf]hkgwcnlbadpbiuzvkaz[oozjtyzsxujalkwoo]dhntuiangtulscbzg
-zvwmdxzivmtzpkmhnp[qduttqlbrhetmuj]vmykluzepgxxilmn[qgswpbooccvoxlg]ujndjzfubkxmvvdib[yrneuetnuktitut]vvwnzxosnenywomkyj
-phuncbfvyiwxfour[oauntpjxaqvwvqn]liffvpoxrbljogpcwvw
-usabjelvalpgdyiyn[hywbrqfeqwkizwnxf]ebpcgxloqmzflbeag[dxifrjggqwzokner]ndwzylxxlkdcpbk[kfergfdezgbceby]uscylihvxfbetfnog
-afgmwhqdwessspzx[ssbmbckihwjmiaw]zbbiktbhykmehed
-hforuldqhrolhqsm[gofgjhapikxnhhdn]xgdarfanlnonwdielb[hvntptxixclnlqphvq]hvvdpsmvsveyaiubt[hiiscphavjogadmj]bbfjdjeecrhhrspxdpq
-djtyronibzvtixf[yvofthnckundxfe]eccattkkitxyotbziy[afdaacfefrerytfh]cquizrjfjtqgjozagid[xkbcgazeolbliwp]hukcarrfnjctdycpfb
-egwoebxchfxxlrr[hxugiprrlfwmknw]cpmfgzxzakyhumd[evzzvvtjwwzwzywvk]lwcfpjlcgrbjszjvf
-hktuhumsttqsgfltrdv[rctkgluikouomerrv]jblnggtkdhveufixx
-ejjzogefxwuyadzthjb[ibrhegtzukygkfnziwt]utcbeamzzfkbrmqonlu[yofpkwiuewvtbswaet]zxkgoommtfxezcfcweb
-wbauuixpbtjnuos[ozwhlzidaubnfiuiqa]nlkdtbovsytnvjz[ztfjpnzvymrefnt]nixbxdoogrxdvuxbxbr
-xadpfckydqkmbvbj[vwdzgyfbjlyslafrp]mbozdmkfztxwailiuv[uttdatknprbzvjvucxh]cqcbkumzxiaqweqfiry
-bsdbnkvvlwpezlhc[cdzdiuewblcmciggdgp]halpvjdbnpbdrnkz[ikoyxulwagjnwego]twyvbkffqxasqbomi[ajwtpvliyyssqjex]cfbqtoqqlggpufbfx
-qoqtovwkavyaqbkwmd[vxuqdoobfxtanlwd]zklibywcjpksseelw[roqxvvoifjmxnarqvt]zeijltexwykdvpd
-obkgwgtfxwjfrepg[slekjheburvgrunuaxf]cnhsvevmitpuwokwee
-flulgpwvsikwhpzpza[pmlcfhtmvuiyoidfbfh]czcxxurdakbxizbbfb[blpwjusbzbdwugwbcv]vltmmzttxuhooid[hlbpbqjpqyclebkye]hgozvhgdplllxiio
-oupstawbevsasbhv[ddvybaqnhfckfvdgabz]nooqiufueyoflccqzc[jyljuydjddholsx]bbejlommzienlhz[mpbmppjwfqrgucxdqxx]sjohlscgjoprsqt
-augjtgfyoatluixgc[atdsbsouunywohfnk]dpghgakdvfscbapsm[nkodybopavlbeikalqj]myhpkcbsbkbjfgj
-whzlsgvuspnzdunurbg[cypfmgrkqjeppudbdy]civtfkixnmrkqmchhg[ypyakrsygkyvmfmmyf]blihjslfkbrysntsl
-xeyyjiqvduxcflt[xiqxiqeepbpkkydtzxs]vbpbdsaivyavnfwj[rduzjulshqiluheud]inliammiyxregzbsrkt
-txvixsvhvmxxsomvo[hgdskyjskapgvyiqzsz]shvhmfrbpxbndsx[plvytalszauhmpkr]jyujmokrvxwmanzbxbi[mefmngrdhatojkpplcv]dttxfesvavgpkbtpri
-pproajkxqwedocrc[muhbyboayoghprmbtxs]odroemzznotffsaxsmg[ykfnecchdltzosnyby]nozuvokzntxrnitq
-rqimalibychumvzdq[siqhwfjimixscjmne]hkvxsavgjvpzkyay[nzbxnmxgmyuwcywvd]qkuzrfifsyvonaalxu
-rymadifucrlickzorqr[phxxuxpffvnjgofl]zqfbhfmzbvhbmask
-gzuklpopfcjdrxoekz[lwviuuoyojzggqjs]cyacdnvkgqqafcyprae[iyazavdiashvzwpgip]sztafbunqsyjtpz[fkwjsbllccbrrdpa]dijejdfyzqycvrdkl
-nhmayligrdtlvyeo[laulduejrclodvnaoh]frxoepqtmqdzwwupiy
-exzcpmjdjiagpvsvin[aontczoixbznfwsvss]hdlmrrdtbumlfvril[gcuizdwjbzyhttw]apadljkbcsylwgekv
-pujkeovpnvnleypqz[ecxuhbtnrlnzojsxs]eyolbkoatzbwvnvwxlx
-oefowwmlhqytnxaec[rdbjjilbmiazndcycr]dvjwgldyxfrzicw[fxpbshhafqifvyju]ygagsxtxwnsphgzqrpv
-lhbebfasigqbhndgsux[drchunjaqzkcmefjys]nzloazwftxoemnmifox[gjpmyydbftxggnggadd]onlcnitfjniiekbiaz[swjdwdaikyykupgyg]ltwxeordcvjfarrhx
-ukvzfltucnovohjidr[apslrphaneessxbpdx]cxrovjkruohahxshazw
-xnsrwrjioindnxhxrrn[mvuraryghmwxppnlp]mconcxeyryuvfqcoy
-opafehetqedyikso[vjnjwsjlbiknomzuu]pjurldelcuxkdlhehm
-kvpcbopojkvzykdhm[ldleeqmztdnrohjm]vejwyvzvekairyhc
-yrbrakwltaduyge[qwvsxbxwiretxirlsbt]hdnwansdelcvxptiou[uhibherodkibtww]aphfcrfnpewbrblyme[lfwjpxyosiappsd]rshmipxgjvorazj
-tsymbomuywfpmdul[wgulyfhhwodplfi]xixmazxgewasngsv
-ktywwprbuvuhmnpwfoa[fcuicnujrweusdoe]fuarbahbvkhqjibcfp
-snhkrkibygzndryeblm[pykdztwnxrawqbevu]wwiwrwfcwtirdkjh
-xhomjlsunzjzgkxc[qyxzsooayiqnuzljj]jftgbnqtumwipywdfrp
-mhfgzwlocsrhbfkdbud[kwtnglxzzdwqcfw]ezvrdgdyjjqfwuv[abznvdwgiisyqjxvu]khcfgchqbgwflioa[upibqontzrahabnpi]tgjaagwvmqewmfyer
-yfptdfhnebzhgpzism[tglibrfrnpfmydwbea]mmoqveuvvenorhnrw
-ljztcdworsemcoe[yloilpxuumxdzzxl]dyawqaacdnjlttcz[dxyytbozmlibkocr]dxpindavjlezzpogz
-bwkhzerttqexrgoea[ubnuzbvktcxsxednmu]zqjpbtbzdcfmidopdy[malphrsrebpeeuw]vwdlaafkntcaqmwjqc[abciktgfeaiptay]yqksuqwsuqtckkoyh
-filqrpdsqqfgkcu[obiciozcvbatglnx]sjzgtjuddnazrzfcju[svrswvhpfraptqsxolt]nfcphmwaudhrnxkzc[ysohuzukkfqlskgkd]nynxljuswasofiaarc
-desdobciyiqsycj[wzvqcbwfbneahei]svofzhyvvsrwasvvg[igvhymbudpcrdgjwv]qtyrjtghnbbtekl
-fygnlyiuxapyciwwnbw[fhwxcrwprlaoiybnkbe]fxvtiehvhfgfwtsdfh[mreawqbzyvkbcnkyftm]rryknthocegscrdtbcw[ktbeedxfulszfogwnqi]kqwtzaemzwmsloi
-zxroedxtywemimrje[fvzlxeqgczajhimr]lrhvziwtgglifto[buxquosscraxroklx]pryldzimioibwliygt[yvmeeklmyokbgexl]oqezpvcwnctcbskefas
-dcowzgprrgvczwfx[zminxdmdflugwkkkk]vfoltgijbqlhjdohr
-vtrfdkwipegmqbwrvo[kshaxjtaiuyicufl]zfkbjdxhihqmtjco
-djidszgreaxdweqjk[rdjzkbmqtyolitmqhf]plltubpvwojnccsygfy[mewadohjaliobsdwezu]vmrkkqgbtfmwemn[erlreifagjhqavlxxh]yplrasxtqcyowlci
-ctautcpnnufupce[qtydhgcjjqofrfay]lfahmjfjyppehyp[qzaxqkpopvwzqofe]rkcqkjpgptshvoucer[qmczzorygyrwbxiji]zljzfavjmwawfrfr
-mwmkedorswoukdumznq[hdujfmdkyiznceknql]wgvbskjuuwmwrsvca
-sdvjnkxypkzbwaam[jrjyjxcfvipcsfv]hqpkybfiuthhszpey[cxzhyjyccoulowr]bwjcdjlwidvcfkguaud
-wfvvroenfriclccedd[aqkoeakjbakjprhnj]ytucldefderfpqaibsn[gjukmqtaxbygrygukiy]xfreqhtftbfsvsjstda
-gmqthnogaadlkycgrv[qrgjpxucfcnthziuqmc]fqlchcfytukeoho
-muwfuurxmlzrcgij[ifojpmgnfufvhbmmeu]ezcruchallsnspos[bwlnhfxtqvwcdjo]lnfuojduqnrbdyk[jhfihfozzosipwsyk]akukjehglqpancmiy
-ultbxqkpivdepjvze[flhbwrxncynirgxwt]twqbnqiaivfwlqorpa
-izvobuuojtimkzlsak[moodohlaudrwsto]cxjybpccizkmeau[dqaajcusqoaatpbojuh]pxlzqhwqdgetmjcm[jmjesiihxrtbmgwkcck]ywajslefzjxwyfivv
-ymymmfpvyiyegjw[auyhltgyvzodazgd]twjkvzwomymmrhfthwc
-romqbwenzvevhyq[ewpxvrduvqewryaoct]wxgowmsdxrxjnyj[obazseiipwfmbyxhkdv]gjalmcoqrquvdnmzacu[abzkksqdcduhkizuzxs]uzuazfdegdfqjmmr
-frvysxhaafihjpza[uuwayzhynhgliyxcc]vdcjfobjuqddqibjef[iusgoufujvqkfjt]cejktzeuphymtswrxj[nthrscqmjniokzsq]tnsfuflhwdkvsrlm
-rrybzahzqjlsnrf[aexlsirbdpwkrfhms]ftuaymthroqwnjlhwv[gugocacufksbdyqsfwn]ptivpdoxkvpbwaohlfr
-ikdnaifadlcqtyfpq[ftwtatuewtwyxevw]klpnngjlhfuuwykwbqh
-jcjepxytivozlscfk[pdosptbukdrtforgvxk]wdghlnuxqjdaztviyiz[mqtajavotnicuxco]vovuvrvnwoedhflabai
-yaiokdeleeowglfd[qzhtllekpxcjvig]ohtsvsylelaafkxk
-qkopuespenokczipnz[qmncizyvbxioknj]piygfwazneqkamiq[oebzwpkixhbywqc]tglnlkwhricqqzzbkuo[azpshyiwubdevjojg]fqlqjwtirppkilhplu
-wpjdzojjjgthuvhs[ttvkvkootolwcilow]lvilrilboatpxwa
-sqcunkrlvqeapsseomh[hcaleossxxtjalzts]dwokbxvvtiocokk[ziimvyrfcpcagbchp]lqsdomcpacsejdzcxw[tpekrtncgabhvirc]nqguzphabzalcgqjbmw
-lchsqkntfaymwss[glcnjoqtmlubbldwxb]repxhlvahfruswno
-gvwpylwrbvedenl[bsexdkrwujurnrhirju]eskvbigiwdmjthvhrw
-uumyugkrepjyfna[clcqpswhmttsgtrnh]wnfqshojhbnuvkblcjh
-hcwvxdxtuptlajr[svvedookmmgybok]dgfqpjqcewcjwqcw[rtkptmdbzfeqcyiha]xjnmaukpdrlznfxvfl[phdpcpgmzzlbeplqeyp]xfxopckbwdpteui
-mxlmvngjychkbdad[nprwbbiggpyhrgjnox]kkkrpnnokeecsxwtfp[mscljzerlkqzmxsghg]mvwiwebrwurrppqw
-bdgrunylqufybegh[hwkqigrllagcnatuzqe]tfooqltcwxznzoaot[hvdskwgtazfkqlbbbk]zlqphymjvcvgybaxo[uvougcsxvyieite]lryismkbwdzxmprwjmu
-mtrggduulofkvbdmqj[oijictmaujkaxedjfm]kvriyuoautahkfmt
-ljywcelytwxtjojhn[iopmxuupcuvfcgubem]alcwlvcmjgwoksp
-ybgcqoheatckeypwgq[szypqmipvcfzxbl]obblmhvzjoiinqd[kvoyilelwmylaezhow]fforcawucbchzbjlrmu
-txgcosxcdgywyfhgjm[etzfxsiksioqtrir]czbkwziihsrtlceuaj[ksksgvozuazlcgqcy]tcottzfkvhsmrsyvf
-iggzhhbedhayxftelth[qznllaqmnrogfmdtbx]ualmvsfjwntzbzd
-dfeuwphubioymbzuwo[tucongmmrqerhidwq]tjzrtrfhgixyspdsl[tygroajgdzxudheh]oumnugqbzgyilbrth[ejcdurppfugoluctx]rtxzchnbmwvfewg
-kyzwhtfybawdrjkvoyl[fzrhzpdsmtmmmvuu]fgbiqggdekddtlpzvzh
-irtlqtjyzstyynjfjt[zrlqdodytcoqczaib]brhvezqcuycqmta[uaofbaluqnucifngqd]eeprilhhysftrhp[zmdzijhtuxhysuaye]bqokznpdffiubikgf
-nsrehcsbptmpdeskqi[rpcpoctimqyccgnpnfp]peakqjqlahqkqfgoc[irckfbpvcdodsmwm]oxnqnxhwmwflazjv
-iuanxnzepawwipojp[bzoxbyrugitmuiutg]wtsagitdstugmsssbc[dvxwzoncffczplwcaw]gifhatzuqdvuwnupmja[wncssuyvhyawbmfpbdv]faluhtnnnvuiwbbudh
-fpedlxzxifcuqmvxm[vrfcejeyfkhegliplkr]giqaenxejvscrlxbg[qctzkslosctnoamy]qyjmeunfiiuoxsid[xpbjwjejckcavehej]txgqklgnzqdtimmiqwc
-iwkrzpmhsunofgrddx[ecssnqrcjyhmsfh]yrmuqswzgcbxnaa
-lacpahmmufjghzen[zkbpbownspfqxnclzk]yjnyyjnabyhsrggji
-vgxbpddjqotuvzbakan[vnagjxrcehlhbxwdw]kxuenaclhrihntgwjq[bgqywyrrhjzjqdnu]eirujssxedivdmvlsby
-tsqxgzovbjzlwpcbv[rgaywjaothmsswcdrtp]owwnjohtsgegsgtah
-xzxejmuyfhjmgoxfl[hyafuepnewepjpy]lbdbsoxevfzdpnwpfk
-moucalsxxvhjiyoceol[gwxofnqdrtxzusk]qjosxisditclyvucbm
-bjgdyrlrhtkbqrjohwj[gcmcelqjvjadxqnj]tlupekhzidsrscrf[oqadjqqatohbjwxrneo]ykhccsunlyamcmmk
-vgihvcltopalggrjzsv[hmrksbhlxuzvtbnuss]yqpcbwauqeduyse[oojtsldylgtokmdwsy]intpovuqazkybvjim[qbqspjlovnizurecdj]fkxluehqgdogxdofnq
-mhwhttcwzcntsbufi[afretswhwxhwkptb]srrajfoeahmhecarmu[wgjragqlbpfbfpd]epytkbjxmblfnkwhlhe
-dgpphmjzkoobitcjyoo[nzkzbsfktzftpmgwdcd]nbezurwvzkhwskfq
-epuokjzxtxphttxtkz[xcyaposdqcfkcxhncz]hcupnojktsvxrfwlyv
-xfoshshomwdgssxla[uhshvhbfofuhdsqk]zbzynuiyfagqpemuplr
-hycladrjbjuyieejeg[ajsfbpoakutelvhdak]hjejfrmmzslupsepozu
-ksputfunecibpffwovl[xteycruesicuhzai]sqpunyzatnromjeq[xlzamstzzisboayh]gzlnqcjacsbkkmgzi[aonbwutxuesczgwnr]aflrcbdkkgoyumfakb
-gjgmaueywnbqdvgf[tpheftnkpnlyujv]tvnqzdugoyjybxfpx[lnhefqkhesyicqqgvai]dvdgtlsayhtscupgikg[fyjgjzcrucldwdd]ohlycgvvdatuyvduhuo
-emkefdmyurledfdd[dxzytfxcsdxgjcwxjzb]rqwwzvnosuhkcplv
-fpmhvozxaaxsyxcpx[yohzimahvewgvzucn]ztkenzkvcryyrmo[drnglpsvnlefqhx]clawabytpjiwgqflfbv[xvqqglnkzkxlevq]dhpydxfqbclvcjtdcn
-itvuciuufdkcgdqgo[mgwnpeydayczlvjegm]jyrwfakomakilgvhd[mslududkqwtcsojaosn]dssdnwxzapuchnxz
-twopcscmaiqhzsepel[qhydrqfqwvjjvinlq]tfmaoxgmccymtrbecjk[zkuwqiccdgoubccjoc]pepwccwqlxzlvuhb
-dingttjebuuxtxrxt[jmgffmivzzxvgvefk]bqxyaoqiukfungsvu[sidxinaokekzqpqz]hekuuswyvznavhuvk[lnmhqeaujpofmdzub]vcufrufbmgwvdwksqn
-mlgkvlqtkpwzcjbrr[yzhdcawedycuwdw]ncjgthabbqmeuji
-oqybrhgapxiiaxihexa[gerjxleappelousidd]dblyflqmoarwpne[enariawxfzzpeqdvj]lgjzpkhkrumhvap[rtcetzkiztcmyyjzs]adjuxkqsxrlyjgf
-hqxmuovloocgcgjlajv[hjbhghstuvarcwhfy]wldxggmqrrhiwdc
-yelxlqwqeiqqwwaitp[uservmlohjixnqtl]cocskteueenenkfmy[ehpleyhokmlzslrdlh]lyvwccjeqrqiofplw[pcsjxogpwmbhrpvvn]ncmxjsoxflyiderh
-znmujbypnozpjpkqii[iydnrowiwhgazihmxxp]lvehdleutcqbwwan
-lympkckqyhgbaumc[oodkeqjyhckceptyqui]ejkkqbitfscazcx
-sxvzcdelbmcqawvour[jgrjmuzvknqddwawl]cfdxxgxsviiyckx
-nrsjamicxprsigw[iywcxzvebsemowpdmn]tbmisagklgwliuuin[ztbbbdtyfonwumpl]cjmddkvsaxzaszisyy
-tllvdxtvmesnmauwk[qaomhmguwvmsjbwrwz]gvzyhjymfhmheexe
-jqiffwykdbqbfcz[nzzfstvzsrtshctbwt]uazcksxgiyuwlkbde[nvsnfriumhwznjfdual]beqjfgyanriagjl[mkwaqdkmtnrzfpszb]mrqgyvqvyqabnugoc
-kyvjsbdoorblnmy[wxackciwbnwvsggfoxe]pbufyorljghrayitwnf[orktaokqgpeenjyk]xdldvupmoyqwylb[aljdjuvxqagigdbti]erzojwkjcoxvuztbqw
-zuceocflmwjxczrua[gpdqtptmhzmrumm]lvmswwevpotdyrrztzl[pkzxcpcqxpbfmznn]zoaxhfddhvfzxmdreww[roilsmnfdmogsvyyr]inqfvvkesrzgzwsnwya
-lihowzmdtujxkokt[czwvzrilryxqxqm]appqwnbyvtxjysxkh[wpjuzvceldxgvsx]hkyptytryliycwhpbkk
-ccyquivxwnsmzvurzl[gatwkzfmiuzvlxqqyy]twruqhcerhppziydvey
-kfmpvuwkfbczuahpr[uhtwcsydtbjjfcyu]mltkvudoyovjipwmptv
-yzuinluayrwqgezu[qbeujtuehlcqhbz]qwvclzkjxuficbgqv[qrzlculckkjhunba]gemnanesaovxzxatvm
-ytnrkypitsppgols[boldlbadecdiaeyp]miwxcsnjabbmlfz[nmfvanenygvwqmgpiei]dqwnubvfbwzdptj[ormimocwondmsyrk]eptdchejhezxzpqimj
-bpvimxocqygiyfak[kocimiojschpxlmlbh]oeohxkrlnaramquwz[mvodjkrtgwsyshboxo]jmxqxvydlieugen[qsqvwfzcowdvxzeflfz]eoysyaomzucvprpm
-uhanxfxnxmoedczj[pjqlsouqdhqhforcuk]wgqlbagmjmtimaewh[qlnvfdicashjzjjmmwe]wrtbmpniixypmei[hnikhifbzacymvga]cueedmtiokuuauro
-rmwtcdtidmhhqvlooj[ibfeikfmamtpxld]tvqxdwcislwdijaa[znpzxccexnnkerzseb]cvyteeonwbckvkmw
-xtrkdnwsvlqfpzb[fyqeealbxbpjxohdssv]eomkcxpzhdzzchmg[rszbjedcqvxmotecne]arebcunvopesercpsif
-wpmgxfiikbeczkih[cjfseyjqbnprrzrc]vmofgvrwxiitjsy[cdbplfeqqrpvyoguuqp]gicntinbexxdcom[bhrrykkursqvyepyy]lhpnuchjkxczxxvqp
-qnaldysjxpygshfd[ggbsrjqdcbppktpfk]rfapyzecbxeoluhop[njlupwxmsxpopefrwl]xhmjoasimqrdlgjwm
-acajjiclnscuxdsyxv[axykpgkepnjhrhfgqvr]slbbdyluiqetchbrhrm
-ryolywtcfhaxzpu[cihbqzqvoqwayjwqtx]cpnraqtbqozlcrvoxn[ippcsfxvbyrodbacgmg]gfmqhdjmgnfisex
-etevnoklfebubfa[kjvpcomfcdacfhthi]nfqsxiilqrwqianlsex[ugqfrpggyrmumjf]utvcyluzwmzjygnta
-tvqkpekrujjfpzlot[kgoaglxyitdkwjmf]mlihujxyrtwfmzup
-ktqkqvqxohypotivf[nsytklzqsdqgtjsrved]beidsrlrqlaaykv[bhalrlzjhvbdtjcmig]awjesirwjnmfjdslc
-axgwliaxadkosbsp[hpschybkdbrmhmm]sslipdgrubjiifxzze[sptnagunoyiasvcunvg]fywdxjoeyzvwrpinmf
-rhpxrkwvbmiuoks[ynxkvorcjpyldmigt]juvdfreyownzxciopxa
-qlmnvnzbswfkadrm[gvgyozcjgthimuxze]ewpsviwopsrqszjq[odmqbtcagnixpgasn]cywfvmbtfcixzjmyue[ekxllezjdqxkqfxkflf]smxhvcoojkrwvuiv
-mrjroyadyadcyppfliq[xunpwmmutvwiewlkyye]ppcjwembftkaakdig[fycllhoijmljdas]ghnbcqzccvagpgplb[eafwmpftuwwwoln]qbxjdgsbyahqkxqzrlv
-fzfcqlltfzjujqeym[jeaiiecptdpgfsfccuc]sfsekysmcjtdxjc
-jjynfbiotihgcbrojww[vrxthptqnzbjegjxzru]yethaiycpixaqfb[bplbbjoveuznxlgvooa]izorgiwsvfgporxo[lnktkblkgpenjuqu]hsizqsxbuadccikdw
-qgqbnxfvfobowmipa[pgiycstlgkcvsbi]nuvfvhbouoykamjuttp
-evroxuhzulkndbn[lfllzavhyovpvvcvg]kihcrzllseowjwezs[vpvpwqtlbykudupl]qrmhrwziizlifhb
-zgnewkpulzskmghubbx[matncbjczcjofajeilk]gimvlsfgxcdovxelxsu
-zgznxyobzrrgfnipxlx[gsazrixylwsicyquamn]isxlagxgkbtgrbjknn[qxjewpiicycnpta]tghqdldoiwdennnuha[wpwsawddkuxonmxv]bmkekmujdpmibjrg
-geeoheswegiuwrrmii[hbthbiwayyxkftmbayn]olgnlfwlixhqjgjvgsr
-crxkwxwfcdjitekzrdm[duvbsycafjsvivy]ysrnkudiueyakhpydv[totferyeflbkxuz]nyrvffrgktfpmwsmaig
-shfruolertwzhwvfv[oaeslwnysponjvpne]lzvqqieleintnev[jdhnbbkdwzksbijpsle]svtrwqftbwtkzzixrlf[wzxzoplqpcybbhhfz]klsezcnzpvgvbxqeedp
-rodljmmftzgdnxxcufa[jgqmtuwqkermnrimyb]uouynscrkxdkjhrz[hpihpdzqgzcmawkdsw]dlvcgdmdmupcmuduu[xyjvfzjaypcbbeettvr]pnqhcmdgguswinpxmqo
-yrcxqglagiyyhpt[fudlgwwllpsimkfp]esvhuezhtkwulzmut
-qwiwjsxdiblovdjx[evezbqlggluydkth]xtoftegxpmgjsgn[dygxbbfgcnrlaebugya]jvcmiigduerloizkyzq[oyfqcvstibjtqcknk]sdykrdksunkdurm
-mlublposwxvdmcasb[mmvoctlqinqyogj]lblnmvdegbddxjuuij[vlkyfhcwrywyksv]epprdwoppwnazhbfxs
-xidpschespoxuwka[lifyliiagwhtynahwr]mophvutwbflkblhzp[ngfdfvwwlfuyujsy]pqgdfdrrwonjcsxyb[txlrkdplwmwanoxhveq]sirdziimdysnzdrzt
-khglmzmqqlgtsoyuyk[ckwowqtfatmitmx]cqsnmpgwitnlycvr[hcjwrehoqrluifbx]dvorwhvznwutwctl
-lsjtzcpwlhruhcyvu[ppankbohskraacy]xriyjykeufmypvpcg[khfkqffqnnzsskbvi]exldjyjnsnxqgfxg
-cwilddndcerivvgcot[pwnjzedgzbwjhwdngiv]budzscutbkzehgi[swgapyqpuwuqitke]aihrettehkbulnndniz[ladvxuqplmfxnwm]zovkncitewbtnxao
-nwkbypvbwxrhjccd[tzjkzmgvioaqorgsan]bghmwniqqnnugulkcq[devmzttwdxjayueapxz]pigrhvuthflwfvyghl
-zxoysnouzggrhhygrn[wvovlnwttrpgnub]tflqcvvfrhwiikpfp[fmvlpmktaybiodqon]sawjgpmqugnvancar
-sfhshdpjhpscqgmcx[elzcuconpnmipksf]qebfhzrzjddpkrwy[mtpfmfwynqlzlcavdjx]olgxbalbprtdnjl
-ribazjlrsqqorxkipi[rkwdafpcbgzcvveipl]jtutooefoewtkwcolek[pddkdpvzyumbkuci]qyeuvqqxiqrwuzygf
-eobvoofynuxzuaudo[icwrahzvyvejahwlbq]ewwnptijkewsppx[bmqxtgqmosyeyhcbsvv]ojsamjjroupnfxbygrm[yqqusonrkvfmwpiwo]nueolsbydgeyemas
-vdmbxyiptwawwgfxzh[kmxqzdwjfyspqkptz]hkkuurdkmfzivckdwp[ncwldxetviygsqga]oxlfsqrbntyltzp
-gewjydarttmsjtqn[zxbhrkxlalwtmmrgfag]ouqpvnvhrcsyaepju
-iogmaqbbnpknpihgdzr[xddekzhpwasgjya]qvqeqqyfgmcjqlljhn[yqwhbjjgtlspllovxu]yzvhuxwuqjnqqwu[mnqqonpvybsaxob]emyjayuxxbvtumvsc
-ompsdhuyibxinkeelcw[vcyphnznqaeqzcdm]iqpgmmktiakqfpiejnm
-ciowlwsiatdaewieita[sjaasprpfvlolpah]bpeqtpttkceukaef[rprweenazfnwtmfqh]wedhtjlhyntjrqw[hyrqbnvfdzilazmclcl]cnzbapdwalrxcbd
-duvtrfezztrbcbrpkwm[vtrqvfcxuueqcpbx]xmjukrhgfutvtcyd[ptqlpgejdqamrwxxbl]aavkmmqbqdkxyuwpllb[cvtooqdwzcluidljfni]pohomwwnjxhohmv
-ieozeqgyrtjpfix[opyearfnbegqcgjqve]ljeerzciyhyvukdifu
-awjmnojyjmqatcnnr[hdggsjlyjznqadyuwg]gvkbbwfvbtwwfjjnpa
-dvtdsunzfozfzmgbost[cvhhdpznusqmedy]ayllrpvroikxhxetks
-jyyboehdjvkufzixpf[ijsadnufldjduipx]zmcubrihovbjtdych[vtmkafgmqunhknoqttz]amdwppzqbnylhsi
-gblfvnsmtqowxewqrzx[kzyxibskmbrkunl]nqajypwcmviecsn[fvewudrwzvqashspitb]docgbflbdpnxxtin
-evhfjidivoswuxhsbd[wmxbybthkqklvtfekms]xnnifuivlakbrvkfaau[upixryknmsroqfh]tfaezdhmvigabvwfgt
-dvdsnwpipghloop[diwimibgyehecqflqtd]tnfzbffdhkvhfsbhq[rtmprhoebqdxppae]gczergujhbzsgdxupd[ezswzkaawaqhjcdgfl]jgwotzkgibphpas
-oyuvlfvippqkkfxsgsi[jkfszneoxbhkxlorzz]rmotcrnupuzltlqurcv
-olonicnsustzovmd[kkmgnznlwjgwkkytz]usukziqukpwigcfvxw[uveqyxukqkusxuz]aqojtdccmpwlluelsyf[clqnppgmfzwrtlfh]obgkzmtyhlcounaf
-bgntejhmisbzfrblik[nitcxhpegfmqugmlw]rcwxgxofqbishzhq[jyzbrgwyikdrbof]gdxdwgpsfmmqejfyodp
-suumjpqhafxvgmgdokb[lmpsinjodlukkfk]jhehvjrbweyoeivfzt[ricjsiwyhcomnsgltrs]iysygfjrdfebsny[irlxudmuuykkcxj]wndlninlcnixabgs
-xusauuaaldibtqcyn[hvjidaemmzaurmyyk]qxooscxoynakekchbj
-xilzzdiyoqrwzcnwklx[jzmgqccfobvufhdfgha]lzkfzklxafmroamh[xxdzjoeflrhqibidync]kuodqrpntknogybhh
-zfogxhqdfspdmvxtuwp[fshligclkdavscty]tkvaozljxenzeoj[txujxbzywfgqkyfrjh]fwwjvdiaceuyumeqscq
-iqqislvjgveszvnb[qbfceykxhcelnwes]mgbeubhjgaydsrrps
-unvvlzfszuuztae[ytbzbzacrvxlksvk]aeaoeugpmkydbixbmv[nzznffshspwmlkqig]hwamlnoeyfmzhrxmbi
-eyrqyerdzuptlwfz[pgehfansstewngd]vdlfglsqchelite
-irwhlxxczsizolo[mgrotoelpfspnben]xuboaosbbqvskeooh
-mvvsstnbgtaripcmiv[lqhlubezzcqsqoh]ofqbajkawszexqw[pytqrosnsskcgmno]ceyhqvutvgwawrao
-aehuceoazqppxdvj[fekwbrgjolkkssozjr]ovwtwkvvxtwlatlhc[anrzzudeipqtlgvtibj]djkyozdjetkxaxrg
-qdkosvyshtjamlw[nvupkgnksmlfyivlaqz]vzjxmxzwetvndab[rjtknjbarestnsqar]emeeqkvpkwwwbpbyho[fxsxkmlskjyvniynt]yxdwuxqranfmwae
-mpkajmbuiqyysjiqxg[gmhxmogelodamttt]aboupdcqcaggrmjwo[uqmzyshqeruzquxxez]agzfrbsajxlgzgfueb[dxxqiqrjkpgalcp]qcqyeyosztojwikdqo
-cwzcxuvjuongdoellki[pqzhljdqxosuhdgqc]qqxxrckatnjwvmdjvty[qdlnrwhhbeldxrirock]kzsfmkvvjexhibpjfpv
-xqxcttuxwhriomnnarc[hrkxvrjviqxxeih]ofnkwkzmwkwfbflu[bsjloysawmfoigzrsa]kjajcjknclhkjofvh[jtocrkwufebomaervq]hawuelpfzimwdnxens
-axhzhgcgbqdeauomnjz[hbuvuiuidkykmvbd]yjddakntyygztrc[mgxbjwjbkzwnkybcgch]orbyhhpqxylsrzu[mygxsbzjoicfneimx]jddqvyyavgguqlqk
-sstrdkfdyahmpmolvuh[nuhocbdkubnidqy]fnhfqdyorbtzefo
-youjjtvznztbjozve[vcsiywlpdylxwpg]saiwvtogtdayorhni[bcbwjvcnlvrcqbeexf]cxmaphpnniedclqd[ilghtvdoebmgoykzmjc]gqxcmtfqougbpixu
-jypsrripwfsirlizywh[qwqvrrfaltcifzgrzk]urwxtgxsivdxexc[hxqqrmnggugvdgdcle]sirkwolflgudrrwfvnr
-jczbvdpvkmrklaxdh[iqwzvnjtjhmulvo]amkhoscjxrxkvtrlm[nlvnfnszosucrhvafm]dpkerwgcehqnmxmny[xabxqyrisiuhudad]egbjvaumucthookv
-shephwsolmshfqhuslh[iqeoxejhscbjknjkgk]ytigxjcdexjgptz[mdcfmxfkyxnaaoixuv]ltysxdcxashhzrhfzcg[jrjzihjbmjzwwikgrj]zkrlixaauhydpmvpggc
-hdwtqxvelsuakiujcgb[vrzoeqcoqwpdvdxrly]fieebtoboyeztrohbz[unoqhtonsyzptmpgo]bxsxkyquwwdwyhpxcan
-wbxdrndbjpmgdewnt[hnmfgladivxjjrhgx]hhwhdeyhnhtngzasnm[eanqualmsluacqejow]wtycyvqujeitvrvtkhk[vfabcjjiloownkmsa]xqjgahkglpsjfcryzv
-psxpjyoleoctcjgpwvw[qkiussudbvamcbw]hbauvxvnrwhyupg[jbuclksbbwmdnddkn]phqrldjcwlixcghiau
-oeiqnisrrknnuqczk[qhtdnexhjbgdaplymaj]fqqywiecdftfcpfnkrd[lvlesddgirngtuo]mfvvfvlufkoqwpwl[hljsgiuexvjatvztcp]ixguvozijkebslzjaco
-dktnilosvtkmvltdwd[vznigqxsgvlquhbquk]uinsbypzarhkgsgce
-ljjdiiuiikwufjnnvjm[xjbujiikgaghrijcbsc]escofoimfyedoist[ltrrqmdcekykivhaz]xdiijidhpxdgqbtxue
-lfwumqctskgwsfvhl[sgtnklskhazwypsys]bvjxbzrabgfrvyvyv[rlityjbenmcoigrfmfh]wczyjwqulaqxapozcnz[uqbunpfwhfrvgqcozw]ktvibesxhbrooqt
-ammvknbggljpkwpr[vnrtrxiwcitskywiw]ubyickjafcfifgupssy[cbkzhebhjtdbsgct]cgefqdgpdpcjlzrz
-wzpaqedqkmltsuij[jjuasmpwngjrynzettu]dtmgfvwtyxdfqce[usljscrncmnvrbb]tnevcveidnyskzs[ttmnmxqodycaikjio]qfhvrqvqpgjhkaaicj
-apdywyijusgxzfj[sgbhrwbwywwisyg]ssiiosnfconncgiy
-grownnednjxvuew[iniatygttcdaelocols]iyzwgdboxuadbrbooe[tojrecocburpdzi]oelyopkilwnsejur
-hfdpohrtqqyfntpfk[trpnstnxymqupxjri]lheljryczqxgvqip
-iielceqagqfksuqpzr[ollobpkbzanfxcjuhrz]jnxizyaoygzbzciu
-njpftdmpmkjwcngeot[mocqjgcycgznvcqjv]aixpwfggjyqyemoz[fmklzletfvqdyvvg]mznoxpgwowvjjmus[prrehzdyfwwuxvhl]hqppujbqaizlzvv
-vbjenrifdqsyzlwga[wmjenjnqufhqohvgc]uhrzouilmqjnjigwpa
-vwooqueyzrusban[gjwcwiagfwpvrct]vfqlgxbhucjhvobi[bkbtechiapvschnh]vjzryzyisyzyzewdy
-udumujkujngtkcfv[klinhdudyghspdsga]gxavvcsxqxvaziqrmsm[htseffbehxafyhoars]ghilivgeuuzjlmih[vtjpcrmvldjluqdazun]mebwzbxywmrfhet
-cwkfdzyxoayxukcgdv[wamyytyfmfaucrko]dchdvtpdkeonmdqc
-zklwcknfrvlblaamoo[ndrnobufquyjknl]dnxgeqvqwezfwky
-zbqgtpvsqcteltrs[uwrmlyjkcidsfdpx]cgaobtbuuntwyuhxmjx
-lbbyafbvhsilwmjivv[fkftqvaahnrokuhu]dvgaejsxgjuwiemu[yqopsyejqtvmlfxm]gzuulybydsrzhigldh
-ficlcqjefsddeds[kfkmusacvnqualtppxh]drbsbqefpdoossbkyng[uvpyqnoidjnssjobt]gsheeufqtzrdsil[jbvevjzeugpmopo]nrgxwajuatycddzwr
-xnhrhgadoziectoigmf[jwudbvxzwdfuubhjlt]lupnypmntyrvwqzlb[vvfvttkizuxshnhhw]lfdrjokdrbrcldjfs[wawjpqzozodmnmah]vdbjaoofkmhkjbphx
-fsymutmdbqyguwut[qvxhywjtposhjgwuhxg]ftwhtxqxeicsrlfye
-fglgkrjwulmkxbzolgn[vurpqcvuydmympiyofl]nbzudjasxeknjid
-nbtrkgsywnudokk[vurfuvkjdvnsukh]vkmqsmcrotppqorkah
-iqccpqvhiesnaohkhao[xykqfbmojjnscqhdv]aqlxkvudzlrncmpy
-dtlwnznjqsixssrsaii[vkikcmtsepgtyqhica]ovcpoaucnwravbozsg
-nobwzchgrycgkxc[tqoxhzxeorivdtdkde]ctdtkwzsvuxfgjtjg
-zsknnbedctklyuxngn[jjzvkixpfmskcagh]fkvhsfuckghltyqk[hmygppkjpcdicxw]mnurqampwwoiiynr[jbkvqeqrhnksizlssff]xhkxiwlzgvjdfakjg
-gqbxrvghncjdllxtge[bjuwjsvewzvrgcujf]tkrdrbempmwqujk[pmbtbgbrgzpxeoqsxw]nfvaaumgpjysgtvk
-clfcvnwzcbfaqaj[prmpnpjwklodeukzznp]zukpytpqzgmlbvidv[qhfrkjlsbsqufgnet]pfhfcxzeiowmgiyksj
-vogrpuzrevmatdbqqx[qolpybjnetsxcqfcvbc]ixxogojluwsdsldl[bztslfanuylwdld]xanhrzxetowrgift
-dqrkbymiudzhkgf[spvsqvyntikovrefqc]bzltachhfylbrzl[znefllzixypjdkmfcxn]mtpikjxqsppxlal[oeyhdcnpxvhawqbmkzy]nxhshzdshsiercr
-xmgedfiblpeazvgkss[cwbtqqjoaqbrgbptah]clzsinbtqsrkudymf
-puwqcxmsuxnmneuzrhj[dbljkganxzmjvtxgr]ekmomoccimbpbieaf[khezmkkqdwkouzb]cpkfuyzfdfxhhhuhk
-thfdbnkmqrektilpc[weshzvpsyofygysio]bffomelkkwvfsdxa[owhidyrjieeietzn]kmeqgnvyclngrcgquc[ieikyuuoliuiczq]nnqhogvlhwqipvpiao
-zsdcvcbtwlzlzlmteky[nrqtpxoefofrjeaf]myjmnezlzkfcpmik
-afyxnybelqewnebaai[ddjgeajpzswwdrg]qfwfqryofesysiuznz[ouajwvymsxmxzvgdx]ryuvawdhfmfvikye[kuovduidpcdyepuoq]didoelcmjebmytdyke
-oopihddimztsopfcia[udmncuvhkvvbcmxzey]fpehwxjiczzhqcxxi[onmizmkoyhadrxpsemf]htycdbotvmomguwbttt[gjsdzuveiuvudbyakzw]ramxommwjmpkihl
-bwlccfsaovlozdqpsv[dniiqfcldfhjiex]cdzbfrecwehrluxzprd[xpyzvlqwekcyglksq]dncoqoaakpgnbagf
-uxoopzavjdqdkaz[exsbnpbaeuvusypih]qgojfhbprpoavcbxysa
-mailxensjcsuodzpd[ftitdguigzeundytyp]fgoitzvujhkjynr[hnpcvussglqshxn]debsveizfcuroqrm[yeageekyjhilfwr]ozgpzusfpbyanxnzuak
-vxjnjaguqlrwoxlhfbq[zlqpitkigwihrikvr]dysutdfrbljdzjgcw[eslbaxzslwoxscpgoy]sudodfmlfyuczzf[vsthktidtghtmazbip]jfyoxxiaowptvosevi
-lgxmivlggzfdpductjg[qxgoioxsurcwayndy]uwlgoodqsjoxsjqqln
-qognhfgzowjikeqz[nkwezojneylzwfdm]omduvysmcovvpvse[bwxvkzoqsykfils]jwgfmwxajhmggos
-pvuwgxmpcrqknzpbkg[qbpmfthtmbkmljnsqs]zmplrxnulurhzvijupv[tgsommhtbbujbjpf]qaxqxdxmpqwduwwxpgg
-lzlrgghqmetsmcxd[fjffxsqjqctkxnw]zlzlpvksrpnatxmh
-ayirfkbsdyssjjpqmi[vpkvhbtreetyxstwcqp]rjbuxsgsrlqrdnpyg
-ukqefgljywjmlce[nqjcndjjdwohtizoed]njfgjjqkdenohbwqm
-kdwzhrslryuexdgbcr[hmbcvmrrmbsvyaii]bqprdkrgdlwjvoiyb[mqbaokwptkfmxzqr]wcauinrezkhduhcktrd
-hbtuzqvyldtvwgyumzw[dibedlwdcjyfngungt]towfeyxyxixyxee[libuilcfsdkejjl]wzzxfhwcgawuhskreyh
-oxjkoqahhqqcxcoxksg[bouywtiajyfmanxcx]xgqpjxtkaejvmqckkuf
-prhqbaccndsoscdm[cuayhbnfywztddbvww]psgyhytgosopvbbp
-dxdtcskiowtdomepjp[islofsowtuyqvcqwb]pjhyaudkqxxlwfoo
-vdatepedgnvgpah[jbooucwxtveomnpmyx]ixgsuidbemgmahtlt
-oncdjplunkvqphbyb[uvivlundxhdiwjncfq]dvhypguriulrangqwr
-vipebvitwbccsnahjhu[kpwtbwddwqgyhnkjsv]acfaqhywmwbkmgh[nryplosnxtbkpwxtkfp]njzhnytzwlprvfcv
-csvlzvkinldedsxt[dbxoceaaismltmspg]yomriudrxzmlbbbm[qilkpyxcxlvtfzqmw]rhwekeawwpyngqxzc[akqljrphobjicoco]utlunpkuptawrtfcccv
-acfepkrkhnviixe[cvksybusnhacmfoy]tmqqmgfdharutrqvdpm
-hjehtfbextjkaxilhaw[qvavsivlumfavaafhqz]ahdjvprlhlmuneewyxi[rzeuqtjkiuacirxsw]ucmfkrotfprypzuyqe[rutydtgtkppegdgjn]hmvzjyquxtydoujq
-ntosjqtunrqfoboek[aogjyqyzxpdgopkpbx]sdvftoxtcjefotm[jivgsxjogxklwkhm]cahcjmgzepqebtn
-omkznbrlrodmtmnhwsu[ysoinknpnzrjqkf]ybiqtlzoiohtldgoaud[fbzfiajeahzmiplcih]qimubctnnrmtwro
-drdygweayxraomiblsc[oglpuxzweqpofwi]mbipxabkjqcdscltkh[axbvkumlaforzbqy]ircpsgstqyzpwnv
-jefmuplsptisjqguywe[lkgtuysseapteszy]wzcehypttzjhjfp[nkwvzebjrydcwfkqne]tnmaxtrhvwvdnrhpxne
-elfqfvbjutssktxpdo[paguttthfghhyktkjjy]wkpqdurcibsvviqfqpu
-suzpbjqdiebctwhb[gwnbzgajwrorqcx]qoqdgemwbkdpsqgjds[qgozargzosdgbgo]hbsmqrwnlqsdans[vhppwpwwamtuurulc]ylczevsobuxtdhvyg
-qfixarbnawmgjcga[dhgdmxcpwpvycmwl]mkqfghairqabhmokxk
-srjvnnbutjaeikkbsd[flieajbdmghmuzp]ieimmehrnixqjynp[rjxiepmrhwrmrpi]yfrfmlgakaehvqm[hucfgczbwdpxxuhk]bvgmehildjqbjdu
-qcmjtgmmgybxhde[fvpxdzdmzkhxdzjfkf]qfnaclxnryinmvpgr[pcsmctnmmrpxtfgi]oszbhmhynpzqvtxso[qhpljywydqpnksmwzdi]yqwxnvgcwsdwuluiouo
-vhvuumgtzbrbgazpo[epktoekzvomswsqq]bbkntocwjpaxaoc[rnlzbqxqcuyltjxepz]iaelcpyexpoqavcbepy[azyksbvkvgmgimw]kvknvptkveiacqnzll
-pkkcmeinlwpoupwpu[qtoyfabmibfrubvepwx]atgpzcehuidgikzn
-srwntduyxjkpivzkgvl[hmenzrmnnisxgodof]lpuawirahbvibfki[gazzozitxhvxixvc]knbuydfpbjzupju[emzrzykcaeukvec]grtwlnuzmqivnvknug
-vzlbpuiceftddittp[srespcesbfprkwuku]bslyxxcynfqywwu
-icolypvmrgrhuvj[fgpeakrskxaljnakz]bqxravyjmdodsvhf[cjyehkcrdetiknsttv]dhoghrdxmmzxbjtbql
-nowswrulawbgqkmcee[qsktncayiihoxiu]wtsjxnvcxdriviyn[tebqonpavhbfnwxvjc]tvpwgpgrozhtqtiy[lhagntjbctcsdejajh]aedpfftlvvtmaqneaxd
-phiopnkoxulhkaddkxv[ueqfevwkcjwpcmsfspz]zkcoexersqysbtqdpc[nmcsonrswjxvdtuk]xdrsvfxrrdrfdbny
-aosrkxvljnapvnux[ldzgwtxmjbynmlp]yrxxllppgosniqv[prtvqenfqapocxdrlst]gypcighnnppaytp[azueqhhtymzpujx]lsgvwvvgctkiyvlc
-rketxmupdbmrircajep[xfmnkumekemjnwki]zurvxfxnrrvkmkrhbxh[lsrwyjtfjairiuwbaw]dyvmozkzkcvmunw
-crxtvtdwdxejpebbv[xthcfmihpjqbhrvqfkd]hztqefpqdtgyhfzqsi[nlaeacaqscestvv]ylbteskdlwjfwru[morvntwyebnmswguff]othonakykxxajuj
-zclhqcnlmxsurcrqaty[stohpulyrzcbabnydyp]veajkekzuxjmecdzym[ysujzinvkawzoqi]hfkcorxooelnfididyu
-oejzfesyaxeittrdh[yziovimnkfkadiplm]arzmtikoiveyvlsdkwd
-wvdwkqqmnretidj[smwnemzwzqhclpkud]yzguktkwahnuabs[bbyhgwmhhbpbwij]qstxwyfjjagyqvdaexg[nkerjbdjlikfgdv]qortpkyhpqvvebjdzw
-apdkznwjfxwdrsm[fddlqepbyrbrfgmyeiy]fvymcxblcjkcvpcyup[szsfswjdzmcabwuz]hmutpmhknvwrlwbvs[vpfcztrelzjnqzq]gqbpttcrakuedsp
-sujqaghlxszzfxf[jqybozaufdtanwa]rthiqanlennnowvdkm[elvfekcowitcout]ntjaqinnbwtqsctwrz[axpnqwfjmkocafoeadn]aplpjbnhkrcrbebmo
-hzkbvadkdojwmdmdxq[ohmqkaainyaufipcso]zojzxelggufdascjz[zlxncckagxntpzqa]kindyikavjkmhopcnek
-yjcsnegfsmmnfce[ueladqjdaqflfas]wcifctlledgnvodtlzw[zqswolvsfhpyrcivk]vemkuyjebqxyahb[ydjhmgjxmruwwmq]cufuqsyyytlgbpwrj
-jkkrynqxqlgxukyfv[fugivxklerausdl]shcuiixkbmzymoxv[thtakgbdzvjsjsera]lmpwzqhthoottxvp
-ncmijtczixmeyfuhspt[ixlxgrsyxrebpupt]sdoinvpfizdezpc[xckbxvncmseucrzjo]rzxfgqlionzaeocj
-xmqnycsovydhyaqiv[iuvymmaguzbrtgs]zhvxodssnpnhajwzy
-rqqzaaswdepcnnmqfif[pzkyyjprisjybnnjcq]kqpjhykszghcripq[vgdhuqujrkqljuc]qhtxqkqygazsvuh
-qynvobsdeutfrvb[fddgwzhlhryauxzb]etznfbueibykerqfugr[rviezfaehsvigssm]nwhvctxhqvfdmgqe
-ihonnjncwrkvglabk[pnjachlnpyonivmjtc]uoxellmcbixrdsisuhb[nkwsdmhisjdqurn]bowvauofupqfmxf[liiytxrcuwwnimdurys]acluoarkxopwppv
-ipqsfckjkqxkxyuvxje[arswyomsnfueuwmcbev]mmlwwcviicdmllylq[jnqpolrlwmmccsd]nfobgtdlxveuuldt[uebjwwikiebtttgqss]ikdxnjdmzbrpqqvw
-zhjywcsrtcadzdrby[ynasiklerbnlgidest]xhzwkwypktpkqgfyh[fuuxtaekwjpobdjfvdh]jcsrxmtbrqkerkrc
-osahjtbzrqukvphpe[guutbgosbfkaurvuf]baiwluaouikebnlgf[cgssqcbscupvvadpbt]lxwmvxorsfcaorccxp[jcqzcrfdkncuoqj]gbgdolqdrauivfnsyti
-vvqcdtcodesyomh[efjjzleahiejvczmsd]naeosnsaltqgjrk
-yucpovujdwslgdczxzo[fbnfueoeatnphvv]gwegeafilsbwgor
-thfmmzylspbxupt[asfhmdmkqwnqppnmu]awoxkgkgtrkdjzz
-ghbifboivgelqxkfeo[gtpozhzqfntyyoodc]yjqcvpimanwiunamfh[aglylsuuakjkmqx]edfukuqcchtbhtblcf
-qzonwqxjkpwqier[qmrnrkkwruteiijirkf]xhnrnahamaegfla[fzshmzjiczdyzqhwx]acjlrknukkbewao[afpeaepzoljqxcwvs]dlvdxhsoljmqgmvzf
-mzibkpddgkilmcwcshm[sgpxutpcqniuckl]kqiwkwdgydpnjcj[exyhorurvawneziiy]njznkaphsmgisqyujms
-xgzabblockmothpuxc[mhiwwhtpmtbxowbnp]aucpfqmnquiggenklcx
-rnhfshqrlxczmrcz[agxxpteadztvdfeo]zogmjfpebldprrmqg[zppblhkevlkqlyie]mgovaojjsutbwtpzsm
-kjgtqizmvuqerhb[dmhtzazyzqwjhpn]knmrbytrwrcsonmshb[oiazannnreojooa]hkhackgpdqgyqsgnb
-orhnenfhsjyibqacq[tznvydkguvcwayiwmi]hejujxsitqcaabjwskl[qhpfmxgjdfgtgmy]ahilwlhjkfytezctsj[ewxepeeisacexgtc]paxwwhhpaukgjnafuwl
-mhmfziehhppfqoocvju[hmfnlywpplffsxwzg]bkhkauhasnuoglve[oytxewvmknoqchvy]fyodxbpsytyeltnfsl[wojcbkfsswlcuqcz]izcrkyxzjclhkfuv
-slabudcjhktddar[cvkvaakjffjjovgus]ahgxzdctihvboiarn
-degyynefmxidnbw[zcfgkvupltxmbhroi]dbnaezqekcegyki[tjrnhpsmfftiscppybi]qgyifwlhvccshdiqfx
-sxszfjmiathxoqnxg[smizlxpwmelqjlf]etoglecoddmflqma[hsggyxsxkhhshucgtnw]oqzadjxenphyexaqrb
-kqwjndajvawmwxs[fskyhhktkilzwjtkt]ufpvkdnhygmuzfsfiso
-iqdscwzpnnwehtqmwrd[fqbmsfrezrkhqcw]gqkpkiqhtrjpusoefg
-bhwbuaqjofxcbuxrqub[aaanhuielrhxhlzscv]fkgimzkootysfzwcan[svktoznaqxkkibhigju]fmqhtjgxbrovymq
-pjybsukpzvvyouum[rzeunjnideaseer]ltquzytuezonpowuhdn[wzwlbeegsgtwpzo]hqivrviswwfsdmpgnz[fhabjemewetsjrjhy]lgbwcozirgljoudhng
-ampiucjqxwrzbdtcjnr[ufubjvykdfixyzqq]mcxabdvjzhohlcmcu[xihctxapmjpmrev]mggwuizzzxymhypmcw
-pprbxhbjbnlqecvmu[ewuffgnuylwmrcvkbku]bntyrptthpmexiakh[lswyqkuxrfzokacp]rvkhcgbfnjivaagp[mnpbbcgrakjlmdqt]bujykhlbutiiqyke
-xtcidzkptvkjakxl[kwjzzydtkvjmqdz]httbqtbiyxwryblrfd[cyjwthdmalqkqvso]knfncfebbbueoqze[zuruluaalfysbnmf]vodfiptptwqpnllvbdf
-wtjthnkscjzzqrbpc[eirytrqekucxajz]ghycghnyntrthzkechc[eiylrukgxsqpetjfnv]xuiymnuzydlawjygi
-rjrldatkdhvzvgcux[iuhectextisybzvz]vycerefkzhnmdyg
-lqftkkvpvepilrmyty[uptcsbeqtmcljaziisb]himkwiqkrogoyhjpru[wxocqzrdgaclbeefd]mtytxwskqznxgpfex[whqbcssppfhqedhv]cbtiuzgbvptcticlbcg
-pbotpqbiqdjzsmpbki[zqcshqinikcszjm]xjxijypculvuoavvg[nltkubwokrppvzifi]dmedgmkonytjzzk[obonilwwerhchueuf]mlfqiwmaicuecljj
-exlndpqjplyfdbmvlji[fzzvnaszvmpwpdcovj]ymothxghgfddmzqtglj[wyfqyqwrhanponsr]ydpntagauckmdqpjb[icumanaybbefssdjnqz]owhsbdpufodsqezginf
-ukfirftsouqdsgbgmht[nrkpwksebkijlha]zfkumnifusjysuzt
-uyzxwkcgjfsekdhktx[qhgrmuyjmfmunghm]mgjbupndudwultdnnt[oczntpgnyanxxgdqx]oryrlqkmroilyca[xbevednhpnvzzwmrorm]bdozfrabvamfxae
-toqvrteazudmppbrxct[cyiebroauwofshvceeo]fhoxdufwnvmlwhhp[xykvdatsfccxlfmn]zpqqflqttorrmjs
-ltkcveeqyawjrryerqa[zxoihtpkswzjrhnbvz]cfpirvnjowhsnnbehd
-gdiyzvnydjwhfzrimq[lvieihnyxtdrgrbs]kpotvolpjgjtfiqf[koloumkhoyktylql]cxgmdumzkygpppqe[aywuzxkrvrevgnnihh]uplcpitzxbcqkmfgsy
-tskqojnfadpujfxym[xomwfoclpvyejczgyy]lkmawlhwgnpccotaetj[fvhbgpqqvasfykn]xfxmjfyoygcsbxl[ldveqjhkzxczzgxhbxh]tfpibohzhgrythjgqor
-xkduagbswofivadpo[mxlqngyjwbqfsszj]xoxngqbxwsttknmtcyk
-zvmlodxbacmwvdti[itdxiimzuvluomfxq]ymrkoyojdnsjqvl[dihqibcaznldgoteyx]thrrpohvatzogxrz
-soetmauqgsswblf[hlkchnarzzrgjawosj]zsghpkoexwcujpakaou[wvfxggiskbpgntosh]zbohdymojoxhndfr[qhyzatgvedhoibktw]iggjhmravyoswvu
-mwjmmmeiclpjmvishbx[dbmbrjcjcmbnqxq]mvhzexhgdmmnduc[yiccjcrvmzjvygs]uyvqfjmiyccasgzlz
-dsfwjqahjoozkpei[olrrkslvxvijsyopa]jmzojmvqtzvkhaxukkv
-kudhszsgsrenjqcrbp[ipvxqnbradyxoline]srcnihnhywqlietbgqv
-eklfpuufieqqdfrgouk[ycxgdyairggpehtkim]sdfhxncpiqxguzlqw[ysjhhepmruqaegxp]wklvpveoxxfyizmf
-apdypwjfmxhjgojtb[zojzoufhucunvjr]zjpuqiciaujfbjta[wlusnbuvcffrnac]ecaccicpvcmbomsvf
-wenmnejyihmxaxdqwqw[rckytszqrgaxmjpbqh]pngxudjgdtbshebyv
-ieyarudhbjrrevfodgm[grmjubbiqdodhae]mhzexlzijmzpltsxjfa
-byfyxjxqlcpjxbpd[pdqkhutluqjoelb]pberlwpeqxmovie[zkholwknvgbfxcyymye]askmwovcktpqhcg
-ccjcygsnanyvdss[frpxggwvfjuugdysypg]tuqczwtmobkusalqusm[ignjrlsysasfmzasa]nfpomrlygzjyylhvypi[lahpgasntfymdoub]rlvsrtudkvhtwhycf
-omuyrkrubieiduzegr[gcigoszvylmdrlrc]jtlrlsgqxiqtciehh
-hqeghunlieoqhetnh[unjtmdurovonejpsjtq]xtatdniykzzxpufps[ysaytzqvcxkvimhql]tyfkttaoythcttexrp
-ciyuspkrywyyplmlro[myfyzvlzntivldrquq]eighmudngyiwlsme[eukgbrmtghntxpacth]pmvxbxswfexsnkxmm
-gdbeqewbrhyfbfpeti[yvyiclmkwzelbqi]sktocytuvyvpcia
-gnfkqxrtauwnkhfoyc[msfhopavdyhpvpttg]ewuyaxehxbyziwmxd[iyqrfiudsalpmpk]smpmubdejyevdggead
-rqvcsivlxhfyboxj[flvvsnglektzosreb]yrfdzdgvkzgrxqoyv[rygmqeiccgtqqmni]frypfnzvhkzvlabrr
-idyqowifirnwhkk[vloivxhtkdzjrbuuzmi]beozwodgehayklyr[cptxwcsgsapmprrp]hfrdeefhyehwwvghgdq[prcadfsulvamytpsfo]tyodjlxziwyqtqmi
-tdwoqxlhhaqkdmv[cxayaazioswycmwj]pkenayaygxyrtqrqugi
-vtqeqlrohgalpwrqig[bewbjgeryrvhzwetm]hpccsjcgunkysntpwp[yefsyqedopuhssgo]jjkkuwoyvhzzcmdlvv[uqczrglqumshdhkdkut]dlfilxdlomkvtjhv
-fezgzsmmxdvhtmy[rrmbxexyopsrhxag]ezltorfyxclstzhp
-ytcnqprainktcjei[phwarjaicrgistkt]qdtijjhbywixrie[llwwjrzrxhaqhie]ufaezqgmmdhhzjzrza
-uyvaorvuqwbbexmafbj[tnpwadyyakeawtdextg]tiqechjccyyczpvbf[vaqfvvcbrowtjxyu]oqswjgtolyixytoj[ismczyxhizrzbbpscus]rtlaqgqrcxpjgmih
-jzamkswiztvnelaqnqb[iptcqxmvbgyaeiwob]xnhehagwcwdgsvpomgt[jsasqvgectyfdja]dgjdtjlzbkyyckvy[fobafodakfhhiem]thozlpiakivgzzvemu
-owfgxupnufaiuovcesw[jeskiymcmexnjbxrbp]obganlgvlqdczqrvwad
-chsvqakwmnabitpotyv[eqeyowfftbjxdkpyf]cflqouimlafrxuqvh[vgjbvqafqyzexrzhr]mnywvcxtgsaifufkcu[rtjuztroxgmpkbnim]xsqyofncdrvdpin
-kufzqdykjclolpveo[fopvuhisayecxlainzx]wvrhymidhtoldhb[vylhmdjqsdhokif]megnkxywjthliwepc
-cqjpttuijfdzott[wubeiefulpuuhweqv]cqxbaudhnmrvrigogf
-hkzaqueemmhessqjq[xofafbaefryhwyzzuoc]yyzaekuutvjrwnhonpk
-zsgyhvutvjmrgnmar[kbxkhssdsmefafntsr]ocjxtkpqmugcvkopvsu[dsdwezhcblqssurfmlx]veiioiyfnncyfrdwyv
-nsqgaufitxefakffd[brdfctppxqczvlohw]ntxmfmrsajxuqmo[pbalhistyzwnbfs]inapnupdvnwtlvvu
-krtwywfktmbdobnq[msnsspogynsnwdb]efcftgrjdyygncnqdks
-rrasplhwovftrffuw[txyylwsjezcxalx]voncsevbgofoiiolvk[axcouuspjtfzsekglc]qoutiffuqnorbpnlp
-etyvjsjqwelcdzpnjxm[eetihszvjrmccshr]uskafocfyjorzhdx
-rqfzvsuredndurz[ebgtddsixmgsugd]ilczpjzsukpyekhobu[eeciaduigoflustith]ohmscfdomzprzjncno
-jjjarldpnxgwvlxve[yjoqlmnvtslexafgvbd]yngfttqfsebrcwtctf[bwevtymxqlrpqqaage]wdcaqtgkvmzesrjex[svnkfzogwcsyfxoxh]hvrsvxcpdxqmlfhb
-ldwuplbjkimdskui[flisuphwbiqphsddaxk]eelzsgjnvecwedneyb
-busmmdpbgxvdiytw[kwlhqlohknjgwfh]xgmkafonkyzffqtj
-ngtpdikbtooilycy[dwpneelecozfzwwseg]kwkwssbtktxenqbnyfs[lekbaoqzpvjbnuvq]vhlbuorxxxxztocuiq[rscjyzvyznunxnun]jhipkmizwfpoxeuktk
-leghszcprzadwpwlakv[cauvyhahnjycqgmslqr]pisyfnajcsrgnvkhcmj[ozrbuuodecumxzbsr]gtqbofuoteafyjk[sodglraziyxhcpm]lbzccqgejtsczvj
-aiqnofheehbiqxqlg[wojpqldgrsrkqqpywb]dyxygexggvertuktz[iolnpmkijfefcsebi]okwjyjatnoyvlhe[zbfipzfoszigysxpwu]jitbvwjmknigdnlt
-tvxhyndcnfrobfrdvo[vwbjbbozwjpolbmlkwd]kzsgbhkshipoxtfp[sylshvahmztsbngdl]emwcmnpjzydlvvknrhn[aarrocnhsmnzqgozo]uswudvvjntlhqjc
-adbrrsdjlpyizfgvuc[qoimvkfjruwpheezeuk]gyjjepfgjpnyajypq
-xgkzhzjlkwacqnihyns[bmprkvdabnasxzqzwg]hxwyywhnuntidvpg[mvqpemdfnvvdlpul]ttqocuncdebtomizabo
-zztkzvwguaggryld[fgkabjmksknxlfhzpc]iysntrtaaweknzbxemc
-ocwsupvhvpcgwehx[vnmhfmgubwbhhrmkp]hqpkkwxwwefzojltpph[bvsvcgwsztazzzjoxi]iasiueagvwjgmcugh
-tkxywinosybkrutpu[eluxrinxkarduffy]brxgvdsoguiggjfemb[paaawmhcmdxneql]qtvmkmlldspsheyac
-vzcnrbtoegbsuglk[rqhhdwpschucsvlnq]hzjzijxkcoxpwhi[glryptoeiosdosoj]fhduvpzlbptbehtt[yigihwrodvsulsrsh]numkgigkznkushjc
-oexrobvxlwbqkrigz[nnbfhaheuublajo]pvlstoxdjdlbroezlbj[ykvlcsvqstxycpp]rxxgokhffgyioltc
-cstzrhymnqxwtwpnvh[dzbyzhzvaooswlkdrof]dzxgsohzaxvkiwho
-hftmeaqbiiefqtwklr[bmqfhgvsfrywauxq]brzoeoncrvljpjqxpjd
-vbnuypzeryxltunvcb[ldnuxdvgfcbbysibhop]ejgwhaxwgnnbfide[okhykghpvystpufnxqr]umdmoixuvfqgecr[rkwsaizjzxjgmmftw]czzteyolfgwkrnkxid
-nvflxkucsnbsltnp[iqhnmiyolnoxjzjzjvl]ctdsnjzjaflstsy
-glmwwqvembkbsnvs[skbkkvnoycklltrnyrd]irlewhaeagdiojbr
-gmzbjlrhyoqkiyrb[nezqwphjfpghjubnw]lflopkhihhamygznxv[zuecanynqmvceqxyy]kddyqjerkeuhuamjxcu
-kwneigdpqhtznqaide[ncindqlugpdagtfzf]ctutcducslvhztsii
-vhjlncnrshwikfm[amlxjsoevzrlkgoxnml]lztearcwiosrcmhfi[gkdbcfroyrgwylu]mwhzhimfdrflqqihaq
-wlswesjcluvzurgrnul[iehnkjghqwvennpj]znqbjbnszpnklctx[pkxxihelrhfkiqizi]dlmwkrxyjxaumvtlbc[icgjedlkxpjwmauu]cpbstqjtdebbywkf
-yxjwddyrzrzhqrarheo[dcayrrmkvazrzzlpqh]gkvbwuimfochtndis
-cmqdgywvwqpfkixkga[zkcmkmqoxmpzued]iaerrfcfhcaidkkvwvm
-uhwbwhbgkrzntdxrw[pchhzpiwclaasygyqn]oalmglktkidoijgyg[yugfmrxigwwqldfsfb]otdsjvxzdlsdhnyk
-ctjuabhainyjydm[axxsgakjkreoeifx]qaphofrkpiflusbeecj
-hdfthabpjjuxgoh[zskhkbvmwkfmqct]vmqfixzmyefzvza
-wnihepbftegtdrtndsc[wtmfxwvxzxorhbj]oqlfpicrqpjgvmo[zyvhvkalgcwwjucnxq]ppatiiiatwbpyiwjr
-ojaqpoarskgzmtrj[blfchukdercwzqa]anfsoaopkutqfqltry
-ofijvkbfofbyadh[xmlicvxwtnufzpn]jetnmprdolywrbmjes
-fosypykuipsqxaud[tbfwtcrdgvidqsg]tvmvfhrepppxxwme[qpmrvterftfxchiv]flnooydpykdzrtfck[omhwxcdomygkbaeqrfg]cwztbmysqwpqfuig
-lvojllusjibvayrr[izfttqfhjethscsrghs]egzyjonmwdatznvzjw[mfxjaelqslyvkaqir]ckbkobhykxhocczot[oezwabicsuchjia]ivolkjcvilnlsdnk
-acytktosnzjatmwue[medgjpfpvbiqgld]rjsbxcwqhrrklyfuu[xclxdxjcgjwkervy]mspnrnsznpccgcke[ptntxmnzdrorgoexbsg]bovvgignwezlpgoy
-wdefvabtqsgstwhdxm[otahaybdinlnszsaan]xgjagsgrnziuqxjasw
-cqkpuofhsousjfnlfxu[syvkhshtiyisqmrdp]vtvtzgdxigpsxcpdkt
-qwagfdeyxorxoaphzt[kijseqropygskgre]tnpsgfihigocogn
-nvppsgsgegzthtmpt[dsjjswqmzkoqtihud]toeoabpfknrnwqxk[hgyvhoktbvmdvwauue]pniilifxxtotvypye
-noijjdbzbeowhtut[tlfprbqoqtftqnjjs]fwqyyfzzbzjeykhoje
-rewfvmohscszlog[dwgnxketzlgefgf]fmvoxbzpxywaicq
-pvtakzfeeithcogo[mbktbqqelkzddsmn]nuydimwmhdyhrls
-qfzdrtjoipdlwkd[fsymmkclzvcdvqexr]yrhwcyjdzgwhmuijhth[zgturekjlobpmcje]eywzpwpfahsrwpwl[bgyprfkbmyaixrqj]fvhhmcltucokvqba
-vbpnikyhvhqnemdo[lnyocyrozyteoxalil]phhqtzpbgpzrusr[yygaktzkmithtegl]cskivnspoecsaoi
-obaxlisumjgehbkpea[ehzysfspgzssttpebuy]vwceybunjzvlqevd
-fpanvbmzhlkcazo[wfnkxffkzmxnslov]gtifhhnlnnxkeaolr[pwkmfvowikzjctrje]anfzfrtlihlyutaq[vbujdswyelmwoudg]lckbqqgkglpkfnhu
-ubsustsojocdyjv[obkxihfxtkbaeusurk]zmlqtgokothiokq
-fpgjwchgmuuwpzquwf[xtluejeypvgynbsdgip]nyztcugwqufjpakuxkb[yanyavbmpeqlalnk]tknqteuqrnnorhcm[eshuljurljirasr]supqastijujykowxxhz
-solyplfhwchyjtchjuk[wuwirpjuevkxulrs]axqqiqzteislutclbzo
-oktlpryceitvhqqjqxq[ufupbpapoxovifhqp]xgrwutvfooowfaxs[yxoxzdoqyhxsiwcxrgm]swmalhlzrknfxgnamr
-kmmguldgktbolgarsp[lxrqjtqbuhuthezfcfm]nhyafiyealodqrmagqq
-jfowosecwpywmrwka[rlvhxlrwehljixaggho]tadphuxhvtyxkgvyru[kdwmctblkvpkral]ufydjpceosbxpcy[qkiwffygsjragvq]zlvqihgbbhdojkgjgj
-fjnehklshlckrcdhxk[umipduxaengqrizo]obuxhxbrybwifedma
-dzeftgulomkuwyrrm[aphjorxpuphqsqmp]nnslfcfiblaexsbftwi
-eypbooqqyvqucqvyys[rcijvtatnyzpafpqhwi]jrpwrlhuiihzfwt
-zikyfwsyxwrtrgdkjh[netvaemiverwhfctosi]xwdoncumksuzsryj
-jxtpnxhjudmsotudd[lgvfscyjpngmela]wumifhvbwbmmticp[dvxmvcccimvvcrvpist]czyqdmwoqjgnfvjuxul
-fvmjytywcfdqfmfvj[nhufehmupvzkcrtewz]hyxlzunwnjccnnphrsg[hrfqmrewnweuyulb]hmqxiwaqfebkvxhv
-peqyzkuviznbwojhtys[svfilvdawzpmtygynd]fpfggygzketpcrrqx
-ttcupspyysrbukznk[rpewzuewspsqthbqb]yszbsclsnmbgoazsfl
-vwoufilgfhpaqfxt[dmlwugzgaywwzqb]rkwtuggupfsffridmux
-faibpioziimdefafugx[unrfywlgqlxqmwtxrb]owzarstubtqbwwjlh
-mvgbokjnhpcnsgcpm[vznublzcbsgzahkjprq]qdhqdlpftbetdzckvs
-dgpkamepjkfizyaknmw[ctdimkbvwctjqcbl]euwsfdqpvfkrxuwr
-rjcdwjzbrqqqqljqj[vsrppwgvlsokgpn]rxpddxouefplfnctudb
-lhbnntitpjdtprbd[cctbkujpuoegzrijpus]xbkzdntmvzbzfxljvt[brlovkywclhnnoyrz]rhixzndklgudnxkr
-byahaivirlqxulwdoe[otyasqivnfuwxmpn]vzsqfapigdecsmaqd
-myozxxksdnucpxq[jgpjjngigboxsoy]tidzlszxsdbqxba[lctczcenpuntfjnf]hzdlcamkehorgpz
-uoylyvyljpnzqimzgh[umieqlmcsmhnnxle]zvxwqjbaemhtoexyzr[gjyxtenkxacukadvhfh]kwagkgvaqklyfurjnar
-rqzfgsolwpyfzeg[fqbhyjayacblhmm]egufazwxlncxundcyyw
-eexntdgtjwjtizhlc[havetzocjnmfnpgzl]rmeusmuumcpbzodie[efuqzkuscnrbxwef]ehxrajahcfdggjyq
-ozakiysvzkycefw[dcjsobqhxqyxnvwz]yuoszalpobgzxqk
-pterhsdeyetokcbtzn[cdooadgsexdxfzjmo]xdxrkcynckoeirmjnlj[matsfmymdliwcqlqf]llnuahmiztvbbpise[egvzoittbupbbqrvd]bantcrmtkbvvbxi
-tqpfhtrunndzpsd[zjzqvvckxscqzavcig]zquncdjejdyzegvcm[sxxdynlbdymictrfspg]smgkjimutkedknlppsa
-byjykuzyigqofolpgf[cybrboapdfgimjwjm]oczicilrowczdlcy[tyaduotkhfvyatb]iklhgcjvfdyypdrdbz[dqkfqaadlcnxfofsvw]syuiaqaemufewlijxk
-flbmovywhikcuedd[xyzunixgypmuhyj]loihlyylswpxtenh[jadvlnlzdpmoghiir]xbiwlfkwxtthlimngnl[vgtvhphgxfsshkgkb]vttcixaajhdcjnqx
-xxxluypjxxutqoozzn[gufawigbmnhtmwhcgry]yaldvqcedheoocj
-seczijwqqpigqcchnz[snihttcoqeotvsvxtsh]zzgbjkslldiespjeejy[dxpgxigvppgnnddyd]hcwgvtogqdyllyhkqj[hbkamssyyusrgbg]dnnseuhlwkwnycktlu
-xeupsswdnrpzqvl[tmaszjcshsavymzuog]svjeaxmdkgbimlv
-dktkcbqwdeomyrp[fqaiihosklfctvufhw]kscgwrylrgbrxjzogj[hqvwmstcpchcqkowtxp]xfooorpnwwfrqstxft[zclwozroattjxczqx]uwnclgxymympirm
-yohglmwqjxpcgozvfc[ojnlrvpzwcwgnfbvf]uwjufnumsvqwxpg[wrfczzmahjdxdzhifs]psipfjeacaysvubcqqb[paeelhpmpjlvbal]buinqeedxmiijkxpcpk
-ficdlwimcpzelkxcb[kyizgumxqprpckyyh]lcwwypjwqbzhtozovh
-bycnifysnrtdseez[xombfbujijpsrccccl]tbvuubyduxnascxjkds[gteskflapsthkzigcet]otggllmgcgfgqloehf
-wvrrowjovflnwpjhhrj[dqfmznuqmmttqtdqnp]wevjmhhfmorcrvxvw[cnjtxcdcketvdidcbu]icghhdkudxptbdcdhik
-wquydkoyevtyfwqyimg[bhbhiqnxwfrcvqcsdq]hvcjbihyziwvmqr[phnejggzeulkkbdxb]uzpvcrhqhfkdkwvxcku[piqegxvplepyfjff]xqgfyfmlqqgcsnngmli
-aiufvoznehafclsi[ynuiezokzxlhzsnlnmw]buhvbbmikiczqjlfhg[qfqcudscoobzjdwfyu]dcqxfcrpnhywlcabobo[piypuleecpciydz]xiendyljklimrwaexac
-bmcenbqijebgornj[kskdxdmdlojqtjtw]kqpwfyitjbkfubsh
-wjivpitbdiigvkhfpjf[ijhxqgwkoctfiyf]ezeuczihdpeegpnppj[rdcsrurelstudtzqv]afvyxjglfxybwff
-rypyyznanxetdychyd[srdvpypvsmzquaeec]qzehxnsvvccjqbjres
-disgynuubaeuiwg[qhmjwkqbmmjhjze]zgunyyctwtucdho[xljnbisahxahllyiob]astxdjwqultlphiijvh[zmhdobafwbzdndlrm]hwcwvfxwjynbaxidj
-cdhvflnylxmmlsgo[oollmpblrqislxgmvvp]nivfytkylfpufcdxun[bocnmaazerwhgtzt]txxystvwvrsyoym[iafzkvskmhqjdtk]pgdgojbemypqbkofwf
-sjtahdwpdhuosbqyss[lopwkbhedbpxtcw]bvtrmrjxtncfnrw
-tdofrfbhpawcjokb[ynloiqgijuwanfekxsz]fdpwynqofzqumlrelfr[orxakqzzdjfnzlgywae]udzboibfngqztfguv
-huwdaehvnyhbowsp[kbskeavlxslbvco]sekeunfcfnrsjqgqpcd[xrfzxupwqfrobegw]ndphbckizbunwqmykse[qyoqnkrhdydzuir]romctjjzwxjbxyqm
-eyutpqnxiqygxwt[wxsiplbaidmlgph]vhlavtrefmbfpdfbju[owuuvbqjuailmgynkqa]setuzkegazwdjyzskty[oaqtnegjwglqnyw]pyizfgyjbebfacjexkh
-bxpzupefyifcfhkv[fyllboalhcmvoctf]bvfifvthhaovzixpx[vtppcxdmlfbfgvgolil]gtyweatzcejbwtse[prplzrovjaeczsyxc]jkylsdulnhfilbsqh
-eedtujnpvzzzdpgfrm[uopptnavfamhccc]qdnckczikmbwkxfmst
-hzpjojvdukrnakxzkdv[gychyosqibeedkj]efhirtkgyzjnrqn[egmuiotfolnlyjg]nbleytvfmuvypkpabt
-xadnnqlykhisnky[hvfudohkwpthdtyxe]xumogpuzbvdpbnapcw[gaavnafcpfbycdpvz]xlgtfefhzyskqazl
-ohnpejtztddevoitaw[hoixesaghtpruyayyzu]ksyuxpootryqgsfctcx[yoazsorvwpkcrjqq]allrvqctxxhldwwzil[rxxioewpnqttrzaevnw]tjgvhfbpninpzwvxtl
-qhapfqjbpzieybx[iobyolfvekomzeelsd]ygcprxtqzmwotja[pheachmbpziycyhykp]yhlmlzbdngqpvfcjt
-egcxwspabytsgsbam[hewsugjwdvnywgjhrsb]gbxbpxonzzllmmkags[jylmvbwwjvmvkkgvusd]fxckijyjjwfrmlzp[eiohquiromkekgsbp]bpimyywlklqwdpfasc
-iypuotjzbcsafzclwb[mudgawqgospvlepaexc]bsqftdoatnacbnpqk[bxaxwphnmcxlptaz]yhbsqduzzzkviyxmv[cfeyjhtefuxjqndg]rknngkyxrldxnqxfil
-epqhofdmbeblgqjcpan[tuffplppwdkoimwbu]yiyfzqemymmtzevrvtb[vzuuiqvvudpedkbdgq]qzkbzuuvgzujipvh[etjfbbzkhkhvlslkjg]sqkdjmgjilbpvmr
-cukbhochuhppwcuwwh[ziuieaxmtjrcovi]egmfefvbqztrinknvh[tcrdwnuqobusvhhhuw]llwltqrtuzujeuatp
-uegokkxxfybcozva[hwnrfpsyzbclsubdc]kxssypkvfyghukcsted[uvtzwttuxxztqwwyjx]lhlyeezyttvgxgtz
-vgriivdekqhhyzgmc[lkzxlushgdqezkwkbv]aqtzbkzcfxrkuwkw[aeubxxnhyhlolauhnu]qphfpphyptbmbvcyutk[xscabrjhmsfredzulrm]torgsvodiuuxkgcp
-blygklicgpngtpgcldl[melaiuchcudinutcx]fldhqlhwyjqhgthjsrb[qnvfdzzszgaedjqky]amhauyjuhdistfgbipm[irrhdtrtvlhanuhfb]cszydrvyiahzwegkdiv
-yrncnxrkuamoung[vteffidkspotxmwhna]lohvncugddeuevq[ueuixhkoouhzzfucs]xgwgddhczhiovgacg
-gowzwidadczncgofqsa[gzkezmlagbaetlf]oochwgecelkuokyunem[slzawxgblqhorfpezd]chugkzdgaukccbeoi[apmckbkkvlblsel]tokgjnxyppksnep
-zyqnagblhgoyiqihy[oisqkkmqfxdtvfx]qrpxcdxvmtlqbgvm[rsoqvutimhujjhbwaf]xtdayhoscopmejfxz[sqcpfrehprvngyagm]ecwgbravfceaajqg
-nntkrxodbypdodgtj[lnlglurkrynztgae]twtxdcskknbsbinlnnu
-meztofjunuxbkfx[cthbsibrfgxjyjawtv]ujhnboyhpoyjprrheg[qmjwvltvyjgntydrmeb]dsbnlksebapwyfrtr[aoyswieertsyvbfijuw]wfzftnldrfdpnmnn
-aanwuubqnptyoryyrw[izbhposjoffhknmia]pmpudrwiwouwspqnozk[sojpnvluazibqcqkw]veawduaoceyxmzwbgd
-aenjhairjysyrfylli[ksygiscororwmpcbpl]mdggayipjsxxfhz[zrovsdxuwyxjjbfm]vpmedxtfdporoono[zfnnenxocrbtapmnezl]odykztbwvuvlngxkwm
-aetllelassgaxxhspd[knioznfojvtrwjtnvfj]zmdmmmgudgcrchsuufw[qowcvxqgjaoptskz]qyrfhavolkmidaul
-gkevcmsegjotmpa[yjvykufplocymkaq]yhewirtmatswhjud
-kaerzsgqzwhdrlzk[fgmfnhjaylhdvepgdr]smkwpurhnnhaqccuho[cznwafhuvozqolaruqx]ktiyadiryeclynr
-qnfeguqpvoiadeipxs[tuodvfpmqdlndroq]ruumxxencwatfiv[otgvbhlyuhtbtyfews]swsjtpcysedmpsgwao
-mpxuvhlsahhdmtwlhz[saxrupcdkcfpmpvzk]rctxchvmeqnqsxqizr[isqtziiuucctgioof]vdlchnruvtuupzvukfx
-czxihwpinbwjaatnmx[quuiszmtsnqdsugbr]fhhhwhvrnenwekmyi[phwhrltyjkmdffqyu]woxrbiznmygdqbptf
-qwqniztrmqkkiyg[yvknzntvwmikawjlgh]izdzijciztugcknoi[mqpjeordqprhefbbsdj]rtwjvqdagpycdsxtd
-pyslrefucxvqpgtnfd[guaqdwpjlwhfmmyzxln]unlgsygdedtpfrpz[uxytlfxsaeouxxdpdb]ufpwpasnaiqyqnex[kiulyoykitwlllexti]cvxikzspuywpgaud
-rbzuremuvpunjopiw[evldkwtjsfwgvdl]unsafmnksqehiore[ipvgyeheeuobibga]ohwjoehyibiihubwuo
-zlxdszmzwikrjfjfh[rmzbjspugrnhysidi]impguvxjhbhtirmdihz[wlpaqqnimsearxzka]fftirrvfdqzoyusjucj
-yvzxaecltitusbcfqv[witiggtqtgarfrq]bhnbijcfbhoqpojeuqw
-peyeydbwowzleyebpqs[abxvydhobwmlksefjy]hntuuskjfvsfwnmh
-gxdajcawzfzzhjbzpxm[nxdsexkhsbaviwzw]kojsiljoybqxuvi[razmescyfxecbmzc]fdayjgkrzsmzngiszt[sdqgfgolavfqmuzqag]uzbbbcwcizcmhntiom
-gssllxegqicytbgko[imezntkypaaclprdo]hojadqftyszdiohirac[wcpiroednqmsrywvxsh]gkfmxwfuaykpwmdukm
-iwdziuryoqkhqzukcbq[qdoppjrevjmjuod]jewewfyupjnuydkn[ysbuocvxflmhbdhlb]ggjdqbzqfekjbbf[ubywismzabwewsrl]fufmyromzqrxtxsijkl
-tbmlgasrsqjxwto[mvoqzbghnwpunzvxu]wxnwrrzdalxjlflva
-hlalpnzdmwlhuwewel[uqawlldafxwhejwbxj]vkktsmliwswarsq[isoseemfosjusoo]bjbjwogehxaqhasloxq[oktpqmpxmsnvbnsubz]ekgpiztxkkuvpszb
-xfxkkivnffdwrqecja[lvgeafomwyqhlfd]uyvvthewoyqjyoo[dcoayhnhnhakcuv]sfucrodbqeqcqhpmc
-iqfduwigwfxgkhbge[qojiewaocberonshm]toxtpcpkallieefn[swenxuejqehdfutw]oaiceeyuhhzpazuyaiw[gqbyuetdmvtttffowv]neqopgkvwqemnrmauc
-bbwxyipchypnmsk[lefobpxeokqvfglny]rwdgvzdupkxjhppcqp[onrpulkcgonndkfq]eegboakcdoqrmdgfta
-yxeegoeubfjhijn[pmdjdggehnbtvfqkdk]ofdoklopgeznrvssgdc[jidbyndormgpitjsl]ucucnufigpzjuuxdq[phajlefstzyysdkdrh]vziqmjzpeeqnqholz
-pnlllqydepsbgkrhm[ltoscinqrrvkdyusds]qwwtxmmexgsfqgoh[uucslmiboquvlso]xmbeigfpdmodrodwbp
-jatdtuzlcxvgwpryf[dvyuqxhxkurrpblehq]vowbsishfgkjtvicd[krvikdxyqlwdjjnd]mujppmtqzmeviflf[ihqppwgfywzrqyx]aobhudzykvgwwhirfiy
-thmdermwtxojztany[xcohmubhlagpuew]lnlsiczemaohvjhhknx[spnegzrtgilojpnoxs]spnvmefqqzpdfzset
-jccjsrpjiyokryde[gfwdanjjnbycygt]iqiuzghicmveelbxp[tzugzompmkteyydyeb]bkvntycebtvjlgour
-rzskdzdoxsdqinbmjlv[fnwbduvtemtogsfi]oayebzmwazggkoo
-hzpsgtucyxemkvmfxy[duxikzpqdgcmkbl]bluegvpkqmjiyzibglc[qruyknjgybyboyvmrsk]pqyrdevwrpeatgkyo
-uubdyuzvtcfrrdl[stntntweakppdrbqk]yoiwxzsdefzihdnilx[vvvsontntjvgcvanni]sqdbtjoziwfolwbby
-tdpetsinuufpbezbgpt[hpklzrbaryhnibm]ucetauqranqexnfdstk[sadfrrjazeweeec]jaozzdmvmylzatlon[gyrmfjwewarvlpsh]wfojorkgrvraihwpaf
-sarrhlzjldgzhyuvefm[braqtukjacxtcbrgtx]rpfporiksxcacot[zezcjaonoyzxnbgd]jmrjkrugljonkzb
-hclqtamrzmzkhhwcd[hcxqnplterhqgbude]kduskujldxotldizi[ashjjijtmbppyhgxo]ozdvjfhxmojeqagmoa[dppzupkveblwydh]qonltaesyzvczgyng
-urvfscylyvpyvpqwl[akngblyladvcuwa]pauygcletxnisgriad[ovsqsgvuccmdzqcwn]jjugrvjyydebzrjghae
-ohvihbfwdsvpzohtu[qsxghcyyscnxwgnspni]kxlgrkvsbjeomgckk
-gzywjgljugwxnrv[mssfmontfbahkya]gfmnxglcggnbrpvuxv[poejydksxougrcw]tiqmbdmjniaqnqgptk
-hillvlrgjsewmjkoha[iighatessfoqwexqdc]iqwztbnauifcazihogj[xgovsowyvdafqch]qfjgljkcgkdmrnlrrmv[hnjcrfgkftyitryole]muemrwwikauccsregut
-vmdrttktgqkyovr[myycrednrrhozjdhiog]qrrfvxcqpthdfcls[nipthbalwkyqrmqy]xaprggoudqizdkqu
-ofmohzqodnueziyemx[njkghrspckzhduwsrg]fxxnmxloclzfmlkebpl
-naurkqfrkpbbfkmbe[cpttgjergcoemawxjtl]cdkngakkemsmtgtwyzn
-xtwigprawkooqitoy[dzapkodeyqhkixy]zrtxkzjqgqeuagdie[vnieacbchbgexzaf]ezbpshpznqosvuk[mcmcfwuzlyodiqez]bojvjhtatwvmxsxhkbs
-muiyjlnqtepriyly[cnrfxiwdlkrqsarpc]hdlysxsdtpqxquhnz
-clmaeawlvsluxfrhl[rayxcpbervctzew]syqcakahftovtzcdl
-ljjlywtzejfslouih[hmsyjqsqljnppyv]bxdissuzzauueguk[xhyiqeotzpbtzsrd]wapoxmkfmxhbykdv
-duvdnbsaqzqemzc[kfefbyefuptincfaw]jhuvhgdqrnjwmlfrmr[niprevfcbwagwvewhj]hdhrwocbqysjstefldo[uelmkdqczcnlmaefjms]bwszcueianjsjhiywwh
-yrfewhgpkihnhct[pxzsdirhdakahwdxteq]ygayoyiuikakdqo
-wjrmypbsxqajzbtwl[pvltruknhkznchej]ypobvzyforzyiihvzq
-pdchmvgzmxaspkcwkpp[kekolrkqgqcekeitv]xwpjbdcxgoelowm[wxdhdpqotthaeay]ovvuawitaqelckg
-fcqvgochyglldipl[ryndsmjdhqvikwnexf]smwbuebgfzzmfftrdck[ynaegesquznhgmisvri]hwbktncquitjaqs
-hcbbiznmlcfgdfjtgc[xqnepuustubktgck]jspcsloqtblxprd[mudjqeoagjqcfato]vgguzyxablhnrlye[rvzjejrpykdzzqcpgmc]okcylioamjhremephbh
-ihlcdgalqwvznxl[afsqmxduvmdjftmrjeq]ekvaovqjvajxfdutwhv[zolonpiqednbtfpsrh]vurkbqdeglqdsml[jivoaiwnfpbgbzzc]neycassstykebswqao
-bsgrhhzfgwsgzowrbj[mvkzjwkxsuwxnioolfq]yobngzosyzkmgrphxc
-edoabezjjyzijqbgxup[lcxkqejwnnslgykokx]wihvmpynxyyhaysxvrq
-wmbgvnekkdivugwirt[yuioeaoerarbpcmbwk]bdlohxkfgdbthtxlc[zqpipkuumpyyioewz]xssqnavbegcidoenex[xvcirztjwasastitiy]mmcxttawlbzdztesk
-fmfwtjsguazrodvdy[uuzglafbhjlwujwr]rjttgtqakbrloqs
-mjtlntwhjqjoxsbhk[adswsdpwqnvqtuj]uwzfdezklxcvhvhb[rzmgufbrcamkvsl]imtazflkqvdgqvfthc[pvktfhdynocqbhqb]qjtlmgsjspdfgoazn
-hfeiexxrkdehqttaam[uinfvckvhatgmlblj]rhksgzqfcizyqqx[ofgjnqhqhveobpzva]qaxdjvvaibeenyuzpzl[ktwkynazrcnewdnb]yzmotgipaelgbsahicf
-djhinybbfbbvidnyest[zougucdzxpenqpoi]vvxbocdotanwdrjks
-poulgwkphlvqfjplgw[enhvwdoftxrnowdy]jfepitixnyjgvvl
-agbtjztsonrgwzivf[igqgvjqttujviljk]pmqphqrfzfdiinxhy[hjpgkjjwxgfsiki]fqgfwrylhecwcoowxsi[fygonoznhkmzcjcpm]nwouwxzbpqmsxnfhedh
-fnukiqycmrzcije[optroggxrsbsokabplj]vlepcfzbmvrqptyx
-pdteouejbrhsicugggj[dipcyddhrktybch]rsynpfyiklwyhvlzoxz
-yuxxurstojjfnoft[obornuhvvdtcyzj]kivbosojivpliva[twgyjecwqsxjmgi]hbphkpnfffzpbwjgf
-iuauoxmsalkxobrgb[blehxxupivauaxkahxf]torbqoddhsksgtnps
-sjgwxpuwloyujust[psqoquaifhrgmah]vpaddscloldhahh[hditsfewhihijrpf]ofjdasdbjvfrwefs
-arpvdepqyadnevyphg[kbpdnghrphvogmn]wrzcskupnydzepdmxkp[beeaeyelchimtyrq]yppeqczzpjsntfytp[aofegesxpscjbehmcr]wkhyeeykbgemqgcynxs
-ouluccjlcbcurdpkzg[flulmqooipvjzhip]qkxrrgvodksuivbspr
-zfmcvmwchidwtgjmpoh[ecthaqwuytzvxcfk]pwvwrbzdjqdtxlq[fwbcqsvdosnolronvef]sbroultaoabvbtvh[ziihpfydzrkdqsz]uydoxylhbdlicydahf
-wyvxswplnabvdoeshds[zhrpmmoiilsleemryd]pgkwuzialwbqkiw
-ehkebgpllhheumhf[pfovxzqmiqoxdmywhc]qpzsvhisrjgjfqnliw
-bzizropqhokoukoxz[ahvweuhqlrysrwu]sdmyzgqcevcixtomzch
-kfyocamgrbgzslp[bclztdzvmbyetlgjk]llzxtjeauatwnnpkrvp[pxshjlevsleipkfkmf]xblovddfkfhviqulap[zhqfznscbngsaej]rjfncwzuuqwowdhfk
-biaunelzsqaxohte[zyqygmhjmwigxsfi]lmdfmblocglcxaszya
-ngxgqwjnobiygnm[jnhtcpyfpwpwkxapib]lyhgjgvcuwgbxgxwn[rovvgibkfcahiyn]dyojmojklujquiqfsj
-tqdbdrqgfyumjwktbg[weesraucasfagyailb]ilhskphxtzaqesynmi[stfgxrouxicascniwpo]yfkxnhvrwkielncq
-twgbfgwbpygvbfnyy[xhwmhyacxxleyadli]wffogpkjkmysxzlmpuv[qnjizoqydldcwubtux]askyjzovxsalrrgo
-yunqqhjmfpqqycv[vamwyuzotttqgdzgj]lmuivwjmlbeqkay
-qhquozlhiohsyzwv[utxfaionxyjgcnpulf]nkmfgjxfobxmrydyic
-wehhwiznslzkyncnkc[dzxeftrnxfhrwprllke]imknddjnfrzanslzdz[dfqldjhkxhowubxs]ojzmgmludytadwespep
-rbkqkcqoxrfczfwte[poemreldxewfaif]vehqkzgxcwmvocban[ffpechryektpzbdaivy]emfkcgsqpqkqxiitol
-eidbkaxexnexudiembn[xyiztwlbqvoavomnlwv]rrfwfdixzpzvwkhwlw[kjinrqheqjsynha]pilasnmhghvvgaxor[nrgzhlsetahyskduscq]uazoholzvqjdaovgjr
-ynlcechniybypvzubo[fupezmnrswguyjysfj]ckmilshpttvobgoux[hybhkdzvvhelhyvoynm]amrybybroexntrlcmvy
-qpmlcmgstzjfincjh[axvarrnhwnkyucrz]wbbpucxtqbdjxsug[tutypessbhpshlyt]wwlkakvsggtbzcz[rypxpzrrmmohyowkja]aeuhylvosccpatslhp
-hrdlnpgexbirsepd[waphktwkfccnylxg]hgukjgxutuzfovpazhx[jzgspycuftkivlpx]bhfazqqagtfpljr
-ciyqjrkwqlwtuhh[lknvhwchhuntllyvjb]ontiepkrlphiydhyir[pdcojzrccoatarrqj]rwmyqonvfiexmbnjy[nhknsnxkwatatfhwa]qzlqiiovmuukmwypy
-tjxbenxjlgozxrtqdp[fqimqatlktqjwjdzuoc]fedjvxnqivqaxkvcw[lskccrwcsxulkabzp]orszzlxhimwlzfawjw
-yufbensvlqaxthui[vplidvdhajkxfkledbz]uposqezqxglywtlxgg
-wacgjknueqomqccqnkf[erdhexyxtcmmvhums]bnywbavxkfzbqwlppv[bwdbqoqfxejqnsgjd]eafoepuyabzlznxw[etyfwvldfchsrdsjyec]apzomripffavakswd
-conwdmtawpjnzrjlkrs[lfssaruafijkmgdp]izwehdqwarvfgxi[stkwrpsrwwucxlrpvd]sucqudlqvvklrfdgac[gelbgtycawlilemxamk]zmdjppqtsdlqfbhmm
-ufwwjiajxhcorfa[hrdobejvqrdojftlnj]vamxyyehcgnupky
-eonddfixsvjssautqun[kktlnrsxhmhwisd]drpflrvwelqqmdrcleu[vefzppqxcrtevyv]yeayirahatkufcjvax
-gipuuaoxlxfkqld[kytubcrnjxvhdxjto]kwpqrvvtjopyigmq[urijeznvkopxtgkd]infdbnklnolvaqwwvo
-bdqprkxthvsgqlp[qtcbdifrlnjdpxrb]xqmtwugptmssrivqb[zlkwptpsqnljxxod]esxomobcnfjuxxdmsmc[tifraqareavetzrpw]dlpsxjssqzyqwhd
-ylwhvgowletbcqjgr[tnhoxqhrnytlbnwifx]pyzwjmotosezztkqd[ejfcslurfhiompqindp]kvbfdwfmwkiswfm
-bqlhxpzchtvwcqc[jhpqckkyntskugvua]ylakfwmlerklrxq[wjrmeexzlljednrxho]rdobmdgxkucmdrk
-ehtqwbiyigxjvkp[qujbspkhxogjrzskfm]qebesubhovwonqudy
-sjqrkysnnbgtkhwe[ibgrjvqztrkknsr]mnbkbbxvfhsihzkbsqz[hxxhvxonqzrgcant]kbkvnbphoymseakbxjf[yjkdvhsscxggtyyk]tofzfukarcsahrmvs
-ndepmgjnsgfsttp[rgrcqahcpnsyknjkd]uablhivltavxssnx[uwjmrokgisrjukeoh]wollclyotaektyjg[tzbziofnztlojbros]qvbgoapfzbecqwjsq
-lspiukvizecamzh[vgaxbxgipyodtbxb]qpnkwuqxsgnihgd
-khdzfhioeykvnvxuhic[lhfxiidbrwldhvfav]rwxsfwhshazzaxvk
-coaljuoxfhvirzhedxp[femqrflktuakhveiiye]iabhkrebiawlktxmbr[pzvgzzcfzhswxitunrj]kqpbmoluwjetvhdcr[tyqdtrnkdmvdpuf]skrdeadiylehnbiyvws
-qimxmesehwdrqskwitd[nvgxgwksihjcplpl]bxnyyafyzxludvyehd[hswtrhxmggpcpcvew]cucgudrfxfbietibgv
-moiyvifvvucewfqu[wuzvazqcictmsbtq]nktfnkfjbsejorafo[vfreizeqljwshfafwdx]xrtbsdzcfkdmskiiuwj
-kchuwlbokzivzlzvib[izbibinxysyjrvtapis]vugjoxtigdmbdqjn
-xbclcahcqnbzwpvshao[qkamrpzzmssylpxb]tjsufvzaorutvdu
-hraytavipeznkuoi[jmllyjddfakuxwfsx]ofoxhbhnucmiztrtcji[vebzprplbxwqnzllu]peaegqqeqbjikxff[jxzebruqgpoqmklz]liakpsmvutnpufovqlq
-omtbdjlfagkxdlntz[mhwuaqvyldixapgoaec]aghmtjapinrxlvem
-kbvvqlrdswbturvx[qpkrbbaxhpljnhlytou]xsogoxibyznqcpqgygn
-orqcxbycauryvjxq[ijorpddboqkyznnnm]rvildjpthqvtdrzcq
-hvttzyckbqjbyfdn[lzeulxlidymszjl]wbbmixifmqzkvypqola
-eizqnqqixewedcvcit[ohtuntptfbovbsnl]uuswevyvyulevsfnw[etmfugdbznyzikdtx]euprxmmhcrdoefvfjg
-pvxjhbwdlshqkth[gwmtamzhtucvbkmwacs]uyephbahzeptqmif
-zitdlkpouvntzndz[iluwraejfdnwafe]fuevzmqlsflfcht[suumoqktussjsze]dawzltubgawnahpd
-krskxctpuowviqiqxu[xunkhvqyyqiqhyx]rcdhdjoqrutobnjpimv
-frsjlbcvuwydaobhii[bdatbysbolkcpzcxoyf]lwsfakbmjilithjrls[fhozecjhruquesmkca]oorqtbaamburjorhy[occzlzfhekgspeep]lilnnsqheytwakzah
-ragajrztetigfkm[egetcjedsnrseahrxr]cblhtdmtcnoaank[fzhqephlcyygbwt]uyqlhhlhmnfyfcts
-nklzxesmrrdlzyakdk[pfexuhulnvbmndvyat]xjvspjnesqugmkngn[vmzvdrheaknqmzyrc]xfncycggjiaqvirfvnn[aqeinzmbaijlafd]pjojbnvismokshrs
-urteecaminrqiohs[rskgnsdfpksfznqpphc]yaxixbacbtysdrnwixf
-ibvmhqpmnpzmghdtdpo[djdzntakacvezlr]jtdoweayvyiaskblc[qhwimwixemjmqsu]rzekezftftlqqovnq[hzeyrnhbrrducxz]ceiqewhcqqmqluro
-joqwthpcrccoovxrvq[qjlcrltwaxkjenbbql]ovebjdqfnfkomjpswn[qhwrxhvbaattcrkvff]nmytfcchpqktagojhtf
-jeeuutsrxjlqegcdlrm[chrtabpzdcoetzoopc]axdhgbwmwhhlrvc
-djcujdyidkcgwygy[zfpuoobkfdetgiifrpf]uxzlkhxzqgiuyvuc[gboovijloiwizfuuye]wimticbreszjcpsls
-ylpbdnvjaavulnhg[novahskycjcruokxbrc]gzsmxnvpupgxwhx
-qdarjsoimlwxduyp[nghlzeghibocgcbhqb]vuoixghxxsxftuztlxs
-ikdnbajyzpzbtzjdey[fiygpvlyluerdjvcdc]hheswtvpmtvjochdsih[kmjnhhmbpokaxsrf]byzdcdlvgyorjvkujyl[ttxlhbnifbfgmvs]onytmkodkklacgel
-rcpgwlbaskiorvxhgsb[xikxwyiageqvilea]rhkkzuqtuxbhuygcxya[prteqotsqfyypus]mpdedamsijgmdktn[ptlcxgtlxfnvychnwe]mdjujbmrytfbzpslad
-edjzqlaktolcrbwboup[bvmtkmfmidimoohq]kpsgyntrgidclnq[ohqjnvirkjlmztem]smtywugfaobbpvmzj[aksdrqczxftjrzuylmm]ffyrsvfwtqlmwbw
-rkgutyhaonmyick[udryocpupaohqhrmmsk]lmusznhxbkbagotha
-ebtiyamyxtfcakoku[tfggedpatfzjvirou]iwbguywvekoline
-vjyzycrsfycfrookru[iszkkyvwngsskic]bnnqauaqcfxctnyofoi[tlegfofrqiuqlgkld]biryppugzufezftpjra
-neipbfcjvrnrmpijwhq[eppjsmrnolpscnfowe]crsmezklwmkbysajb
-quwdpyfsllgkwtj[ercxwsjcfkbpohokuc]isdjfklflnudrjetf[fuxsclqmfyplxxvao]xflfujjqnglxzxlxz
-vfxrgmnvontljaodk[pwtwiqibbceehlnhf]lwzkbshrmagzhwqyq
-ecfthornfevsngitzhb[pblbvztbbsbsxxuwec]jtjnnhwkekrgjanoxbe[osbstvuwyjietzx]xiordmxphcsjnzfnrwe
-tcnlllsrvzoxupp[ficwiahpzqtauuk]whxfguillhkpxitoqq[ovsdwbddmfojvkqrxb]bfagfcimddodrtb[lghczsmdqufswoayezk]ctkmauzrnhgotbibbb
-qahnaxgypnpjftgu[bghbgwqxwfnfrcybzd]qinmtddfxbpkhqnna[rheeshzhyxfbcfxkd]awwsrosrkyfqcvtx
-siffwvlfljwbcndns[cawuqwatfhgwsphjn]twfwwneebgzxmqyrhbr[awxuvozbhlohuaxim]dykizkumcmmnwiwdx[dikxuxtmacvaxiwih]mscklmepmcgjemwtvv
-nwnwxbeggraucwj[ygdjhwgskclfginltdy]ngfxeqsonadvobrnwne
-ceulusceecbvzesfpia[etyucdrmmbsstudbfo]jjzwvaqsiovrgro[msadpldzcxurzije]mjrrrqwmyqxpdgmp
-aiwctbwfathsnst[ymcmlyeojcaokgf]hchdxsyquapjjgncfq[adzpesdwzpvcksioys]rbfqvkxsicnkphd
-hnbounecoxhinavuro[tdytxmzudgjmyxmm]fovpxazijvtvirqfrup[qbfsslqkpyioabrzhlz]htlcbtysbfxurnuqgs[nybjnpqgugmtfculk]zxdfwtbtbvhxyrtcodd
-ecszlqenzswzeujn[aymhmhqkvzbuabtr]qasueshfbfducoit
-bmvypnceplfbhhsko[eypvaebyvggpcmzum]ycwgnjvrjmdrkiao[hdkledypozrgbkexls]isuydppzigzqtfo[onvsgjzwozxcvgkukez]uhjisxtizfjiaebue
-ljvtminczzipicxg[eqfvilzenlbztef]hpdptelqvvscyfqjbk
-kofmsmvngqzdobeg[atcxvdptaufgfpec]rbyvvgagylqgryjmdz
-qrqirixxxpivzyxidp[vanhxwefpeffrphvwm]awiajngjmxhscxctxt[hnmowanymdizdow]lqjbxcvbswqatxyp
-baeknzdxlkxorrfi[tiqhvwvqoyavllfk]uqqdkslrjsueklu
-usgfgiqvoudfsdyov[unqciexsmnreobavmoq]kcboezrfdmoqrgg
-xrqjdugnwddstnr[gbnpzkldpjyfady]edvtrvipwheribydmaq[mwzdiuqdstogfjy]owanzbjqvaqgsgf
-oumjseobbaxvipit[ukwqpfaqohsabpd]twomizennyccksgi[hszmrfksmdcycyda]connwmiollbtvgh
-skyizttcnisqncq[lcxdhawnbdbcptj]ocvhdptvtfnwqcdmjff[sqbbfcaufseolqwcjt]xlnlzmuciirvedlni
-nwlhzupppktailtktkb[bzdpulmwswdaqrv]kncfgfqmxoohevsxfp[vgabgahytpqzalhap]bbubtzxxzeysqyqp[nhpmkotpzfifrfpmk]fruxnzwuvonfoxc
-yedymyfylbzvjfwst[woezxcgsurflqnrmvt]qsiblcwatgywwbktdmh
-gnbeeaxxlvupyacdpl[dhgikxwvtnhllqs]dzsbgvmgvhcbygjkxz[qmayyikkpsqdoukt]kdfbifunpwlbhsh[qrqskqnysxtloxs]zudxossasajrdeanct
-rhftgsygepdspzqbewd[lcmdbukbzwdesfroixj]oblwwxyfconxmhefjow[fvutwgcvuaemgzqanrz]xtiuegikggcimaobg[uhqwmtpowirexexim]txoyjvcawbfxprxf
-viebpcquqeagmuavf[kxfkxsoijrjklkgtahh]gdxrwirjrvzjcykax
-uptdisvspkluwgzkti[omvlmaxnyxyzwuian]pmieocovsvpfcveurx
-ejmnzzuuduhzoze[xrdlxozvhgiofrc]sxtycslunhjmvejtkd[pakbfwkagujukiybe]adudpcxmlamtkwak
-lqyqdhuldmtwbvydji[okhzffzbmlvqiko]wdcicvzpzkaowwqnztt
-imnhospjiqsxihx[utoykmsvdetrkdxvzti]zgdfvtmfjggwyjef
-lwsirsmcseswkfxh[izotdhmoodsvpsp]jivuksxahorpwcgxnn[plncjtzvyamfyxzst]nnpdtmoozfzuemdcenb
-puavooykfwvhwzmkglt[xutftanpuhgsdznc]rvzdveoxydbctczqu[hetpqpdgohitmgtgyp]koiwybsyijhmmqxesqk
-puivygxavmlrxwkst[qvtxsgezqcquyae]brdptsxbxnobkvcqclm[ibxfeuecufosgtzhxg]vziaqziqriftdfrpnll[bjfubyvxxrbsjbqvi]nnlbiuncvdtnnarm
-tlzooyjugzfsomi[robsmcwkpeprtatddr]taktjvhztdlygkj[vbjvzeeznvmamus]sformulcgeirdihntt
-zbcyicsjcmpicotmt[tbrfctpfnqspmvnv]edzcoymhzfqwbuyuyu[jhauxxgwnguurrviws]rfkagjqfdvhjiavoxtf[zdejarfvfodyslh]pzjedvtgzwflpduq
-dhbhmlhsizoeldofqs[qcypvphfozxibpjdo]idntecorhucvlufrwu[naoixcxuqlgsytnt]ehsyusyugbmahyrn[djtckrolqitsztwtuq]urantneyeodhvorgsx
-cnsrdanbfjubsdd[nwynwjxiyygvgdlx]gyyuqjjvumvquvzib
-otivcdfzmsjivefwujc[yiveblxrayrkmfjwd]mbwaroznwihbnbmjp
-fwanqgdmtlsezhtvat[bhxmmztvspchqvhovae]cnjyjntrcijkmnjwnlp[rziosbsufkiamqmqnmt]mvxhzoxxibbkezhzlks[hfessxjoefqfbgxhc]kdgmlomxtdfgdgku
-ygxiiehdqiqtqjzj[cwbddmmlczrgdgpibge]tartaeajmndarksakye[qnurjchyeijxcsdpc]uguxoncwdrojsyszsib[mlwwasmjacumzfqr]sguglzsozcdjzlooexl
-ytyzugjtaxtnwxkns[aclewmcdbbbwyyu]hlfhrgrigvwsdmdethb[osohbeuazmmffxyeq]ygmbsfwcmyqowdvh[pqpwyutdqwwunfqt]ppkundibovmqwjwyll
-vcrftmfliijtpaqsoy[zcpypxlyshsruwbclj]mnwgypyvzdxnnie
-fmfdmvxkdupjadbxh[tauggdjujfbeogtsgzs]pygzoyudakrlrlba
-ysxiybmwpoygkyle[xaaughrlqulsertp]iukezabalczvwieegzj[wlycqpkbqptraajl]mjevizxosnolkxnfwxc[veialybabbpytrf]tpgpqighdqgphcwoysw
-cnxnptbcjhgrxrtremt[tjguyerqizvuobq]honeukqpcsoiapswdgs[hcroutdslvvzypfklj]owxcxqehkqqyeflgi
-ypgeqbggpntconrgr[fmsyjvaninmkfqekne]ykrmyjpfwlhnsvgehop[gvltviftpcixosamy]xlsyzevtwaokuvneo[nbfcynlfsbmmweiml]nxuzmhrwlucgvfy
-zagsvkbkhcrkvnukl[pyfiiavqjgonrarga]antgzbmtohtndzgf[gkvovvdgppcnyjifrc]lxdhpometcwlkofze[fpxwacqdussynpwd]mymrmftjovoqtkuae
-xrtjipuirgczdlrrlnu[xdczaqvzsfgavmzq]luocuzuztdgsyxbcy[agpcmbiyqxfntvnmzn]atjschwzmauidumzxru[gvmmftvwtfsvudtd]vhmononuocptbuvorau
-fzozmcmcymohndlq[rnrgxsywctnmxxd]unfjafhfgeexfykym[xnldroqvnecyhhcwel]wagagwcqljxduzebjeb
-efvejswssxdrqggx[iqwwyhgngmwzwsw]dlkdcjxurmpsoceomp[scbledaqpgsgynjo]rsdxazcyjgcubfxlbb
-rlkrgjrxefztgtho[tphpsircgzsauqfew]ridnbmerksozxzwx[lcqwhfgiihdzgtgudp]whskzgdpjubkztb
-qbtcopfgkbhzhhglhh[ostebaqylyggiyfptkw]bbuaatfqlpxstpgwg[nydgrdgyazzfwlagrz]fiiddplgxeyyntyeb
-bogowskdtwkyhtdpzw[uxvrferconwfnnj]eukencoekwwahhefvs[xtrpjeahwpxbwgogfmh]axqvtgibzojnfcku[zhkpmdtwlogmypeqc]jzqywlhocshrdrlgd
-rdmpdlidbkplejoikjc[iqzadghltpndooanzp]ltizdvolnhagtlvr[rqcrkoaqwfwjpsrj]rtlcwqisvkznpvrjrbi
-ndbtkvzkgjsuyfibsn[gbfhvruiotbnbtvuxaa]xihrrhcnbnowthpdge
-vxtgjsiuodbsuhg[updgogkqrntiedefvh]xwgrhmgmpzsxyen[tbhogopfepprmtewkm]fmrtnudhysikudz[rrdmqrctpwlcykzr]lpbvstnhcmvnfcpngja
-eoaqeiqpsqdqkdvia[pdyuqgwuhxfiukmpvw]wsjyvdabhrdsxij[puikfklqhrmvfrwomu]zvbbuuromxgpnmpviw[fvfilnspmeoxozaba]yaouxfprxpkvkit
-qpaksrcracxnyuozqc[evqvzzqomyzwufkvxx]vmbkqqkzjskcxbmbbp[alqaapbcvzuxchmaa]pzxrooiyfqprfaucxue
-jmjvvyxljzznmaarmau[piytxuyakxaropkfnfb]txaaoeuvlqiwynhqlt
-yrgxyekmldicpvo[wqcvsbptigcqvzoet]jjwvbjbshgmwttac[ymvjkuxxoojchqomnj]tsapoddljyrehrxrke[ajspkmvbrzxrxlpzw]hwymrguaqnefpsza
-dmlshfvkrzncuuoo[fddyurlzqbpqdidtkrs]kcewmacglikdszapy[fltgxlltlvysvylrl]rgovwrvccixdullrof[bqkrpxjupbbrdnahf]ebmiiwmxkutltuxwrds
-lzklscqfbovjmjbo[rhwheqhkaseohohelh]msyobgeiybsbyucus
-olbjozztfeowxftbsx[oefyqpxsebyfawerwwb]uyfpnsvujqenwouagc
-hwhbihujnzgayah[euifzicfxexpxir]lpgjmexgfyseevwjpqo[nniwslmnmrgybuelwb]khkudtujoigkyyjipu
-okiwsdqqwbijptpjzl[ktibxjcdrjvsgxzlgg]cimquzswgbhabcf[gictypilnrboctfwls]oiofteanmgnauid
-hdwokqbmfofrujxvf[gcrxxfsxmycedcfr]xwcmtasmlcvfmezvtk
-gcxgyjgbqhtcqznfuoh[yitqnwqdcpkgwzayq]oqbiabducwietmxira[kuxdaeohprtnmpfniab]wddlljbeofkomijydzt
-gnxobceomvkecom[oedsyavphnrvulwlqfk]klkcrpigniietqecrc
-bgzhntrrxvjvhyqhf[tnyvbggtjvjfgratfo]hltqszvzgcutrdcvddq
-sgzcemtrlzdjijht[wtvzogdoomtmhxcwckm]nmvftmtbucjnczm[hkqmnugntbrrsphbmn]yfvwwzebdqjkryhm[ydcjwepsqqrwnhkpup]tyssdovqgkhvvstvd
-buhlborygnuuklh[haftitnpydnilqbqabe]gemzbfstwlhejmjoox[awjrajspxybgdkbl]nrkncxgvjhuwukw
-suckcafpmeixlavp[ehmqotytcsxzagjq]vfwmytywcapfwlljl
-vblctxriewmbbpxo[xsgdnvmcmfnuejlrtz]iltofzajbcezlpy[wnfixwfqqgseisa]buystfqzokvletbzv[woumxjkmiqqstnt]ciarbpnsahayntnv
-cjsgiueunqlisps[zurvijydsqsdtktm]xhlpspwgqlwqfvx
-bobcmszgphpejiwlwdm[wwjrxebfctqobojw]hyrcpguihwihhpmr
-jlyvxnexbisiiwyjjf[pxpqjtfgwysrewmrv]xcfaninzgmdidqswt[spnysxcfdiwijvfqitl]wigmjtxvsmwlquxew
-qqtluuthgrubwpqzr[kgebpbdpqekehnnuyuh]onnyuyxeqstunzueapk
-sizavpqzmcfexfocoxn[dwcfbufvxxousaeah]hymczucocssffcj
-ldupymvmttlywlxbbs[vsttjksdhwfdxclitx]hfvkvgmtmaxtifvo
-tbgqiatbujypfbjha[catabtthtrydcjbt]aujolgbocqymyeqfr[apsuwlktuaukokmldw]qllsjhthoqdlpykgwz
-zqtpkzchpnnmyzygsaf[zuokmkcncefsioenp]ynympbineurlgzkdys[nhrjzpmbwhwcsuowx]hzawgwukxrerbljm
-navcmnriavzmexm[xdvtpfcjdxlbsyenvtx]byqzubujbhvpwfcme
-kookhqsmbrpgpsbctfp[wlbmttbadvipoyrojd]cqmhhdfaunlqkre[gqmltgpxfyljdyo]zvzerdpqmktqmezf[npidrfvvtdeqgzhojn]hzehtqonmwoahdakvve
-tanngpmswmpddgfpph[egmymqydmigpnpr]bymycsueiolsfyfey
-uddmrzbeefaxbulsm[ieevtshivgygbvsiwpd]lbxhzadyduakugey[sqywcrjzoxbbgadoqne]xngapfdfzbwcrkd[gurtymibbzvsbxtpypw]elpexxrljomuxnybuxk
-diqvdzizaoprrpzrovy[cbayiwiifklhjkw]somecbyhptpmhjvkrba[gczcezgzlsyowteraem]xkjkakyvwxbgmybzj[htxdiogfsahudae]hhbdrescqujtyeyo
-kzrqpxxtetqkqqfxild[tenlubsvlvxwjgokm]zxfixurqybohvhfa
-pjhbxnktknirbwjp[arlmosnekoqwtpysn]hexsbuespjgsrzbvpf[vaacxsepjnqxegwqq]owuxuohhzxqnoqepvha
-pumaevegtbjlzsijtf[cjpsnszjnvoexufcgxy]dxngvevsnjzsbuask
-azhhrcrptkuqsvxa[hwxldisbvxutspea]tiqwqugkmslokmixx[wzqlcgyfzacbyoguk]klpprvhtplelelsmx
-dumehssexnwcppac[gucpccbmtrdgoee]zpcpjjuztjtgxxhzroz[iizviarbucshvccj]xlypepsxxhxphttgc
-deujoayipwnugheu[nnyjneomcvpfrvfu]sfspbwylbnzbyqh[innsmlncnbxrbfuhu]tldwbficslnxpkzlrtw[kyfmnucfyrwlvbb]wedvxsifdxaysaw
-lcvkjzckpkeyzyjgtwy[osncmhyofupofwscd]rysnhkmiqoqulyu[lqwjsxrgpkpkgxnvhf]ftmywmwfpckoadd
-pixbxvhtlxjxzpm[nvmqocftgaxxgejke]npibmenishbqrxtavc[jzceumsoxcyqbfv]qcdqqbwcueyyqptc[egixgueerjonkmigr]teecwbxvwhgavdfjxi
-vhtgslxovrpmlojcyiu[pngyxboltgfaskge]eawigmpxrezdxtau[osjcsdhppmqtqxixkg]gkxhhsphrnkjyxgmp[khnpkxghpkaxnvgxqe]zpedrsevlishcdbd
-ixnbejxsfmcjmqh[pagzggnbjxxwktstf]hcjdsogfetpzoucuxg[gsnpjjdmrqzojcozi]csxsgebagjjgxqjx
-mekdjtrwhgafduvnmwn[aaphpbnxrwwkhzxn]jqzcqvefysuegreqcw
-wbpogjbyzelmxqeaazu[djdqdlmpfmezzehvjl]qdquppvgjweftqvph[equcifktaceuqwoakk]uxemheczqpboerwq
-objhlxsujoqunmhip[bxpjvcdqedgvqrv]rvycwulyrrllbrxlbty
-ckxcgnosnlskecyq[lcbisjdelotgldlea]edcebpmpxvvgktuxq[pewmfvnkiiulfehy]electgrfvkbxiic[emqhtmrsqfbebmykzv]jfdpefifxcptpfzvovc
-leyueicungygchlce[fbclcyopnajqvxey]jcwvhehawbpflgddtn[xlozeiujqbiinjlvrt]ljmnnzlebbjbccao
-mblrhofhihdiotvy[nfatavuoewnlsvc]gtuqdhyxielngaci
-eyzlvgyolwwobcg[vaeslqvdrjthzho]zdakaychskakuufan
-ukqgdhxdohzgrdfc[vfxeqopkydlzdehao]cormknsmtbidhgml[ceialgwruscjsapfc]erjsjeuxzxjokxct
-szronkojjdgnfzkpqzq[xpzmblnarrtycgglkw]cixtddybdschdshenjl[gflkqtgzlxeesrfvx]erpfhhlwbsdasjljnqh
-crndgetyvbvxhujqtu[svhcpjoxbaacvpqf]ohhkqbbwhtbcatwopz[nzfqzdbjhixrtpw]dpyfzrpxayfoglzji[aynmktzgxtegbucrw]igvfejgptghxddj
-efswwtohurobgbpvlhr[sbgfgmsrjsrjblwr]xkswzbsgmboecxc[odmohossczkqjwtrdi]gvdjrovgilpgrdgt
-qihgnzozzcedhgivz[wfzerbwlgrjbwolsz]ehnxlqolcgghtdfkeus[isyrflbjdelvbgz]eblyrmmkbobefzo[baowrnzmyctfmoylu]bzhtmcwxpcqhubyws
-tjgkgtykbfdogfa[tixjoqenpxjbetz]oybvzsgugsucpvid[qukesagikwrrpuesq]xodwkyngdrxadgqz[sigwgfluzksbqqpvueq]rlgcptipyfrgihzn
-tbilszajwwosrhs[rewcahkzssatddmv]wtusvesduewjvissr[efusbpnhwnrdjwgjthd]dunuqtpzocqwyqbysak
-spvqcisucqxihmincf[csjfurernawvtia]vzarehconlkvnhbpsaa[mttsrsqoluowbizxrbk]pewqfgipuxqzsfj[qznswrhnuvmmqtbq]mbjqscwfpmkejjowy
-eqeycwhpzzryclb[mvthqzizihyfvtdgon]maeannxtfakrfmg[xlxbqdqlglfspvyqrx]chjokbtqngjjsidqdyf[nnmqygvepumttyp]zipyquwulqtblevg
-etutgnamoiukjadrf[phwftwicxcpgdegzkr]lafqcmydwbvsxlegc
-kbwfmffiylhmwisrb[wvoulhoyvagzmgxmp]heupruovkypjtzkilqm
-hjgmjhzizaeqewp[fepsjuqdjujbjpnooe]rnovsbmzwqtukgy
-rlxvqkugtcovejm[vqlkivalxqfohnwz]afmwxjnymstqmem[ynyidmrgyujdkmjq]cliodisdvotckoatva[ysfxjtwokboitvhi]xfxomfghbnfnkobval
-oxsmqxhljzdjqtx[eavkvuusdpcbrlwmr]kkpbxnnmuqigfvbrf[qrfzadqfcladouu]irmuceccvwsazcydh[kvkeafmibmbgpjoc]kgmkohjtzjqnfwxkv
-hvvzujphepxjyypzp[isabpxdneywzpzr]rjbcrfhnidqlywbgvxf
-ezfeilvlhanyhfvd[wgbqirhrycdzzbu]wpwvyghpwpfykgdt[drvcvbpndcvrcirig]qzcdvhfcxqdxubat
-hjkktoruvvqmuauitf[dmygsosigufbzkm]rjbwsccifhzyhqk
-zazrvwupbrzlepfcc[nzlsrlgeovdbndxwqv]yhjwjlnravqgraen
-fqjubgphparanlll[avwevtaigfdxgjet]mgftlttzuhaqlvwqn[cnxupkaxahrlnjelty]yqgaieunjkxlhrha[xexqcuvkacjayozydc]blhjzcfcoyiozuajqxw
-nacvyqozsyqgnvkvw[urqhhtybjqfpqqcrex]pxfufqzfghzxinnnlq[vbxhmpntjgivfgzgmq]vgsmxbkpphhjvzqdirx[mrnmmtbamdhoved]zziaxsjdqjfvqzq
-hdrdsknkwrtejdgeqg[wbvycsdyecvuclhi]owhsjsujsqjachyh
-jwfxtraepnpxwmziud[qhwoewcswwusdqcvfh]czaiemhwpbkflzqi[yntelahhkwcytedvpe]kpkuxgqygwicxoh[vuifmbkhbycxqiv]cfyzggvhpveafhduk
-ngiytctkauehibctccr[coszigxgcttxzoqrhvn]hfrpsylypetiwrggzg[xwnfgwaxrjabzmsqquj]gxdqtprloqdojdthh
-rhhicddiuxdobco[ihkmummwydkeoqp]seubufqphohblrkn
-sgslfpeleveakroo[kgpoljsrrcfwlwyzb]zeacrfqqaortgdv[yoipuknesgpwoscvguw]ubrzxeqpijxuflgsgpt[allsdtgmdlnupofjb]brnjhlzxmijpicty
-vbcaptabloujxkqwnsc[iujlwsczjefkoewao]yqwmtuetinhedenovhm
-fcswktnxobrvovrjg[qsaxxwxgrenkdcpfvx]bmivhngglvcwxwgjz
-nhmxhadaretplflb[eaaitxsycuqarue]zzdsqhjjnebzptm[znupjbepvjzujwj]djueiauiobywmclemio
-lzgmurmbxidxqofgvy[nhpkiprmeusixtqhfid]zlpmcgmvjfsqhddfzu
-aziympesgvakqhltci[qdofqedxvlvpyqat]txvwrspujxyuqsn
-ezewtaywtinlcbrn[idtmhvforhdxgcdy]ohpcvnchsamehoewc
-ayzzozmdklbhitpd[xwlznwdbvtciozoykoy]ainwvvxkreuvsgdatbm
-kvacickhqbjjwkk[fryxetyntagtppzorb]gkqgbqhjykyewipbcj[zdaanxpihogooeeqby]lxdkkpostipynvh
-nzngguddxyeihkkyt[wamdyvzgrnofprps]znzgitnmvvvrrzsb
-vnbogcvphumewlx[cboxtlpwdmfbtfegkai]zlxznqxwahbghxz
-stwxjgiqglghaaot[gdxpnepcgstafgt]psljddrwgewawdc[snbjvfbagexsbpyh]wqqhsxerdjilgln[jyqcqbxxikzmrguo]sophymnkilydvivcdk
-kihnifnjfzhvlinqrqi[bcgxtjpdyxtgejzrdi]avzbrcqlbmaadrrvazb[ntmnrjhiklfwujlg]pifpvzbirqokamrmd[rbanfbdlrtmtkxca]udilckezqvrehkz
-liradbqjmqeaifibll[yrfnryjrscfrxgazpzc]vxmlibidbmcwgoygn[ojkunzztsdudqhma]dvmtamzfaanvyivxqrq[yqypfcmwnezorcnbzy]wytsaklpzfftqat
-fhaxbfjherqxbzbrtg[nabthakgwjarjsfhj]iokwyfrrjtwulhwi
-asundudwctdvninxpag[opdvadcnjnbxptahj]scynlgwnmzdtmudu[bupcfcyqmmcwsqfffb]rjargbcgxvonfgjco
-zwzcwjnudozdektxh[wesqhjkthgohlufhrf]mwqrvudkqiysxokugz[lcjiemidwqbdnohpd]psvhnbkuptpjicdmb[vfoerfpkymcjmhzicwm]pwykcpzewskfmho
-zbhxhhqfeurqurm[buuctguwokorlkfq]extdceaqdkokhdaxzqj
-qcrnmtdrftlnyciul[qvtjesglscjradq]tcoobnfosubnnrps[qafsnrpijrnjkemz]urgzkcxptagwndzug[olhgasghsicjvswx]higdtidzwjfzlfkmxbf
-ymvlttwormrtliwoy[wrcafamahrcipugxxgy]mjzzpdkuowbrbqtmr
-swwktdvpgkbbntq[jujwbyzbmzktmpag]uinhisqwpyszittfqe
-qrlfgtcrpyanzwfeuhl[sstllbrafqeobsocmsc]gmfmnisxdoqqctof
-znfoqfwiwmxdiixycul[tsxegdjmxscgpfllqvi]fhwwrpconfwceqv[gqpboszvyuduzehsun]hmydskzdmmifotkn[jurqmnkixknhmwj]vcjomeocgzfhftqq
-wukfxspnkhedqdbtfti[cjcrwokxqxfqbvfatie]eaohmttcidinhxqtcu
-usgxfhglhuknqauzic[jlhntqhcyjuoywthv]hbskrwccmtzgyby[pijipgraqquvxhso]hehkqohxirecivlxnvo[lawgvpbmozisammvpcx]vuchsyinsehynzm
-dgnciyptfimtrbmfbcd[tedeoxadobgoobffh]iucidwknmfofwia[bbtbzcwjwiphlcruw]ukwczycabezutqdcc
-huxitbsdoqaffnlyxyn[vzcnvdddtezaeymzrr]bmovgbcqswsdmjacezx[jjdtfpukrwhiafcy]fwlhrymiaolokojdkx[ftqdrarkfhfbelc]yfonqpoegjmmxkwhz
-ldedcblvfbdacsy[rksxibwzdatluua]agxedenvctglzyvpu[qkwulxegyokwljso]akjfktolnkzwsnn[lfhdwjomyhroqkkzk]mtkhpnffxrrwipsrqet
-ajwscynjeiagnubeew[ftyzkgsmsevmdkpyv]ufeszcwnhqpwsep[rinrtwoninoxbqvlgy]mzacylokxrhxtbyut
-rdlragvdebqlteu[kitphkhhnrssleu]chisqrsnofxmmbegi
-sjzglwvefnntfgofuax[htbkuezcjsfgohzynlp]wquzxtqerwxlperau[kqnbhymijqtvtzxbra]tcwbvbockcilgvn
-bdqyqodloytjtcylu[xgwgnadrhxshcyhd]qshqmfdqpzbruygmmzc
-pnwkymgknqqdwzmymmh[vcnetknxxjvihfrlvq]cujdvtwltkpkzwkc[owjyboqcsymigajgish]bdklpwzslsjvadacm[mmimdikciuetfjeece]dxwoxjenzguercr
-vxgoxslogbrjaxbjg[qyyckvarfyidktepi]odfkcgodqdusnjs
-nmumnqunfnuhvtucy[voatnmasscuvwjth]grckxjhdzzoqtpgwm[qwmgudaltzavyrchqy]bmxedeqkwkgoqyrmlx[uqzdpkjekjgfvlnfwh]tpsfewpellmljsakhea
-dvvwqujegsgarow[rkjpzfvtrtlpcdlc]kvpqbvyshmoemkhvq[hzbtnbzhmgaufkfvwh]ipdgirduhpdkhcwzfid[jmxetzvqbkrhkices]yzrxhfcakriippr
-xyijrstjowvehnp[ylbnnbclmipxjtxtbb]dtynyczfzgqozpa[rmontkapaesmlvuasig]qmuqzwqsoipzutdwz
-bdwyvvnsxojfzifhkr[mfdopzhxfakffhoudpz]vqnrhwzqbahbztlynpi
-hymeoolncfmkblqrd[ifbyrijjwxsjvmhql]vgybqqlmoilegcrcp
-arqsuxhcivbxfiuf[jfqqzwkamooqvyj]awbpyjrtunzulggzmh[iipnlkhwzzmzcdi]ktvdnpdmzmkrqavxsxy[dnoqbxknjvouymfz]brcemvbpovqjdvps
-sxhcuagminkkyodlma[zkcpbofatowxfdddhv]iydjxsbzyvvptmrivf[thuzxghsyyrkqbjozw]zicredtdvmavltqgeg
-qgvauvsmewyfypvgx[bkzpxdkwztxbpak]ghwmldmcmotjcmun
-ivnbdeggumwedodrru[ejwxagdnszmvpyxtsfv]eaabhawecgtctegy
-nylnblglukusyetuly[annmbyywmkzxoxcubb]fwslxffcquyfzezst[exsgjgeufpzlscazuw]rebffdvzignmrpriw[qwsiovjdtaimkun]utobenmeyrtxlorxjx
-eivxnczlgqbmybivjx[zrbbxnnjprbaknh]gtfbkkxqoowynpt
-botxfdjpvcayvpxmf[jysydtitavnzahbeg]zwkgkehpvxtocktco[iodpobnripiqifmexh]zpnrcxntqwwwucz[nwrxbbqtsqmkaiysi]pecfziyavdcfehr
-bmfbcrmibywamwmic[npcluivjtbtwmwxmx]mxyepxnjdabcuiexhwi
-kezzmzrmfsmhwxfhy[euevwjfsullybtlul]edrcskoqqmtwbhhafnl
-yywsnxvznbcockrn[fnmwrszfamgerfhocoa]uxfgnvtphthtmeuyy[houdomoboxleqhrf]zznqyqwslypolnqef[ttbcfuirmlnwevhzw]dmohemntzpwivaab
-xfrmjbgozdwamlqe[rdrfdfobgryckvow]gzbnazpqaqxcjdro
-vdxepylmqqekuqe[hagzuweczkaioxyz]sndgjumcegndnuwwukz[ymkpvinydrrvfare]oplwhupwenqwloy
-paikbyhegnbvcqa[kawvebmxrhzszrncq]noltxgnszsqxfbxbrk
-hwifnlppmjawmyb[gulsfllyemlqkcws]wfopsunpcakhzkz[fcpmxchdgicqido]tlvnxgdsecuxsux
-yogujlygnpdyhkxpdf[bawcwagtpbuwaorpa]noyoqlkcbsytnzywva[zvdbrjsxhozvyrugdnr]yyehxcwcnepivtjntex
-ukkuxsacdvwqkgwu[qfhnxatswcchleqaeg]qynrnkuwuynramm
-srvnvdghsmgtyvvli[gujzqjtjtrdfeandy]rypduscceqqfodndh[bssbtbzcdoiygtdse]klhkfnjidkombeom
-hrxpcidpccertdnde[iubpwxhlmbnofumjnk]tzjinnaqvzhuqmjgzqs[tbpdksrgbhbhscpnns]kgaslrsilgklgukanif
-xhrwvvblyiyyjithaqj[nxzhuqjrftquwsq]juvsrstyudnsyjxqpko
-qjjtuuqdjaovcgs[klwmohvmeyujgvauez]faqyixqvshgpkrgvac[hzjbtsvreecwygo]vluysvnbqjuroaondag[qqaysmxakrfjdrpvj]lteebmjrrlysmwocpg
-fkemhtixlciygti[babpytzqdpoovfy]ptjooannebsdcfrs[ismooacbkqjciwrfw]wsawvmoxxzwzloxunq[wrjhadcbmeslujxk]zckevlidqnpsdordy
-ikapdixlczlrtpab[xyfywwygclrvxmc]tugwitpyopgfhucrrp[zjnmpndgvwlqnsfnemv]xeahjahtuyjwjwxfdv
-wjbljlhlkfhhkhrz[kfhvlihkiqprhjno]mhceaicjbnvajugy[rvkrsptmdupaylqsbv]nptyjetdstrwmqjav
-nqcmyiscwhuiafdyg[njnrwedfdsnzkyg]rsxrirfayriqxvyqthn[alkdpteuyfothxvyeow]smfyaybytdibkus
-msvwpibrptekclckgdd[gdowictxfvmjmdtyimm]nlrlpatlusnrqcydh[zqiivotvmzapjjdzhx]eqxxguxozcbzlfkktk[amsfzydattcuqolcoaw]exjpttscqgketzhe
-uqiaugsvrqenozqcnry[hcmsmwdqjcoohwlu]morsyizcifxpoyzes[tdnfcmzkcxkltvom]jbkvbwcolkcpkxdlhy[joounotcqahwjvx]teeotmpwnuvnrgdxscb
-xsejzfhwsziaedxovv[accbrvbghrsomiv]glmkioydimjfcneh[xejzphhekszjpec]qfetmjhsfagbzjurrr
-qwmyiuonuwttopaz[esdvdnqxftkihzblcc]xxfxmkdxigfxfwadl
-gnvhardsrapmlpmlg[gmliinpyvjenkrnnh]kovjprgbyfdknmnbfme[nhzmroniytmwwfp]falokmiuiibxhheszok
-zcczeqrlhunbfsxu[ifzbbveczjlfwppp]pvtsdxzdoxrrlukmqmh
-rbgkskquxcvswaf[xihgvfvaxkptizohvn]tbntgfbhclvkdael[zuxdeparbafjpwqvg]cpfuexhjmkrdurlbnis[vfmoasavisksmltggm]hsnrpmdkogfxnprmvxu
-abttallvhutezhtr[beucmccowruviwqjxlo]slskvryjaodaowc[vqtmaqykahuvoqc]valnulizvgiciruetx[rbhcdafdupnswhn]bppfeuexkximknecfq
-hlnjhkjucpmxmguhb[gtoyutdhjwfudqnra]pipjkprnypqtglf[phovsbawbyxsuwsyopo]phkewndekgucmrrbw
-bikqggafubkrtyskep[eugvetcxkbfuajpuz]drgqdldmenwxyldlwd[klwzyogvokknfwdqw]ffojmxeeurqxasxgf[qdjndihaiuwjqie]uaatdignzrdeyjddxzg
-ddjhxhnkcrmnaztvps[crzhufiibsjerulkslh]snirbjgmmerlrucjlv
-ckxphmsmljtplee[mbrperwqumwnitb]aikxmbbxmgsmsfgeni
-zwmouppnlfbatcigqkh[kahnxdhbhongbfgmtxy]kfictxvtzrwlzvxees
-gfrgqbgweickiocqas[urgmzzgkrwpkfhpf]aazsfnctfvvdrrf
-sgndtkclbxdovlte[ylbolooanippjrmyi]lfydwbjkfsgdrecxzn
-gfypysbhqsgyoxrtxxp[vdfjphnhrphzphdia]ekhgpckheqjkjinexuu
-tagvhpldzimodoca[odnlmmdinuwyazwif]hsresddnysmuldvv[zpnjyvabzrktghfvtfx]jbzsfhvzaglqkstj[leniqywipplvkues]zumzesiphmejqufbn
-qhkrsmlwyoxfawk[egspgdlxbrdcwvoeje]pxuytqzjiabwebbmu
-wsxvnbuosiwcutjct[nzthycbqcazrnqppb]keasqheprjcqwac
-jyiifehztqkdshfuj[cddnloevonuheydyle]tftddpechuzfagnww
-zyicuknwqxtzzzy[mqgzslkciigsugirbcu]vadteaxyvnpyhwbec[waifsdqtrcbdnvrl]dygogwgquwnouhc
-jltdbxzvwoxlherhs[vuuwuslxdkthbcs]ujzniwntplzaaldguqb[zdcnhufvintzrxm]cunexbzfbuzomrv
-huikyoqqhcabtgosej[tqbxkfxeqyclgcqqsu]thtunfddczjfocqmr[vddedigjifexfqgp]otvsknxemvtrpbxw
-sgukpjkupqmgtmj[qmvzpbebkypfmje]howlgwptfegdnqp
-wnomkfqdtyobjkmd[goockdzswfoumhiavf]noshgjhgufjxgxiro
-ivzlyzlnqpslrbldxqw[qmlmhingxmcporfx]bccugkqyzoqaqbv[msgojkckxyuihysrhp]hdmzempetgwwycoy
-xzyacqjyialgkmmcj[aqenwwtnrupdsmitna]bhbicwoaervlixo[cggrwmpqsyxfoidjm]yawyxhdkscodboohvvo
-aoywrlzjkqkzcmmicvi[lhwojrkhqdearhac]zwhrxrrrmfpkjvrnd[zwdpqkomjgjvkcndhi]cxpctyvgnthrsarfhx[clnierazieohvgsy]eydbsvaautujuqqsr
-zfozpdjsfxmbwyb[ignvlhfnrdhybkwhxq]qfxolqnfiyokzcbdy[ohvvpuipajnqwml]rybjvumgzqgzfveqjvy
-gkvxesvhovzoekxbmgh[hjnizppxqxtlkdj]mqvvrcdepnalllarg[urffyistzzqlhimfhi]yhndztrezwcapskbkz
-qbuqvobipnbazji[qypkenwigkvsjhfdhd]pafhisczyaozydialh
-dkocroswvahrephwueh[qtiawejyhzlhsnlaxz]yyelniorfgcpgfxtle
-uyuylzyqivmpinpi[nxooflqcmtftzosn]vwxiscnnmmujalwegzl
-ewyjffqwxipurwkejav[yxcfacgyuuqpjqxgn]bsxufukndbljizkbo
-lglancnskvgdozzuuy[eossyfcrfjnpqtim]mvjbtylaisjdcgyn
-lxrbvlmepaibubsqlc[pnndwclekhualwxbpg]cxaynaselbcbisw[evtpqzovucquqbgg]lsscjpanobjuqlpkhtu
-wqcqpnmdhfupmmaa[qawfetitfsotgsibhg]vanugoxziwlnbda[apowiuucwbqxkcxry]kithnvgmjbuevopx[okzohlobuxbbjxeul]wrcnqenrhpvmxzp
-qwmlncrpjifxmtyxjil[evgtbhnhavfwyih]ganxbqprffolbtg[pxidrhwgdqsycynecqe]sukgwvxkhbzolomvx
-vmgykxaeppaasupwolg[pqkilujgqcoxpzys]vtmypzwtqecvidu[nolweceicrhwtvov]uevlxruhysbiedfibc[ytdalspbuzpagzjr]yrkwrgdaptnoxcqqr
-fgwnpezirnabdiwcknh[qnwczufxpwtomgr]umwdzmivstlmecryoh[ogyfrrqklslzcqoo]yohswnizpisqpvpyu[bmwnspsfofxvrvqkc]itdkhtuqsybuiom
-ynbnpjgaoammxaoagp[xkivkmwwiejjbbgk]ongbnbtqtcxqipe
-gxuxnshdgyttcjzvk[lsxpwpvsoquxuazidye]mfihmxgxumzfhnm
-ngwlkbdsfkoopeugbf[zkcrhoyehnzszjl]jwkxolilixmiake[kcoazkmvlmmlxhlip]urmeqvldopqdrvrdd
-hnlkmhqgkitizzp[dgtnogdyumxjgnh]gazsmgjzighgwpided[vaxfshfsqkmebtkceye]ndxcvfbzddvksncrr[clhmftvehwzwljbp]tooichznleiqlksnv
-jgnvwreomaddorfbnna[oedwzjkpxolayry]wdkdtjlmdviveeog[tkbjzabxaqxvbnasst]lqttnyqfnirsajb
-yiuwebgrrtctqhvq[dmddhqpukxspoiaua]egktbjgjcfzhltkjtyu
-sbfvjniiethddwbjx[guajrdwgcphepysv]qntvmggllbcquzfu[qtlrmikwlmlzfpqufgk]tjwivdcycoacfcwwfyl
-mxbvlmxjhiorcnni[ubvkvylqtxbchszgp]kzxkzbjtogzujapfq
-aezkzdgfurigqcdxt[kkjkjuyowyhylcxzs]maogxmmqteaectjv[aocufmtewquabwa]wlidntwbxueqzbql
-gngwphszdvmcnjj[qvbontopydlzjywvaiq]jbrgkevvbwzvkcpz
-qtdsnkqlmcwenkzxodb[wqmskmdllfarzicsce]dmubpplnmipygwqjim[yejatlbffcwmlyrek]gsvwxfaeblczgpdvhhm
-ktshrikjzljpacyux[omqqrcsqtbtdqsupfvm]bggungenwwenmztg[kacviemyqpqmwmiivp]petgeydeoygoknl
-lvvozapyfvdohboxrt[sqedcfculzdrbsafvg]ioohxzwwppkserbkim[bytwtckhnlhtxgmes]uzwrmuczkofyfgv
-ocskfzkwwmnkize[wnjrhvmcynlydnbvn]qbykllzinrgwfvod
-eqnrivojtcjljsfcj[rlxxybjowtdptsg]rnnvkyrsxzytscf[mbykscjmwlryaiictd]gmfcxwtjljrpihljll[gxrwqhtelbnpguyvw]lpbbvcxyokowlqfih
-sujejaymvqavyvhwpe[vzobezygmsxvqwnnu]dmuyhdixfuqfbnehqve[gwdapthzmbpwtui]hxhsorcfmtmrdqqrzf[dqrxkbkttpsjkqpbnl]qsmueuwxsrnejednm
-vmqbwehpqesssnps[jkyzwrfofkfqkse]glwxlfrqaamjejrievu[jhbggigitejevdzgqsm]sqxbxgyvfpqtxrlbca
-mlbhjbelhzgprdshat[zcytqxmfhuyriabyr]yzhvmpjfzkhgxavltdz
-ctdohoakygysybf[loxbfdhctlnhggxpoq]bimosyslpbihbwqp[fahhvvdfkiiucdf]bbgugrcsmoasoxyymgz[wjhbkirawxanrqf]palckvdfnlhficazmwm
-qoetptacgfcrdrstl[gpcfptpchpeiicbmfd]vsjqqgbwiqlndgmop
-dmlzhkeleeqkgqvriu[qxzssbjfthbzhdf]inuernrmyomwyre
-pcezyuyfhpyebmvanp[jccebfvhvicqksgwyqy]nssvudrlhkckath
-mrpkkivxuuozfbxejfm[bkwbwzhwwkfqqlupltj]ngrlyucvbmdilkke[qlzntmxfkeapmlbumu]ynjqdpmonwypyjpalvh
-tkqhdmjsbnhbvkdgo[jufmjoypjidudkbcvy]olrsjedkqdbeijypjp
-brnhsqltbrizrohj[dlzumegwwcbonaa]llqtbxfulkgjeqw
-vxjgwcccalsesmngkbk[owvdclfjsyhgchpt]zgqonnjsnsqxxvqzmqs[wsmtnxjpvzcdpobat]rkgwlaecswhucndgv
-wkjmaneymsjdyjd[uvgaxovnqgsvamsbz]naumvynxlnbgksk[mmjeguwrwppdwmdjlm]puiytitjsyskwomrfqj
-fquaiztteofhvsbcba[hvstcffflwbvchn]ntvqaedorhoikidi[cpypurqddikmaynmxzx]qkrvwfsppcglqejkn
-cpjplvpmbumvgsduald[sowmjselnjpjwhav]flufpydujtzuzusyrr
-jfhplkijkstxymvwgz[kbsytlilpsegzanvlee]ywcxnydvgcxzuibxvu[ayieqmzukhoxmcli]rsyubeqkgvobehe
-ocsbswhjtvywugym[twhemgyfgdfegogpj]xamojomgxvyedia[rukhjizwdryazdtdsb]fdiecwglfmtfjqxocw
-vywxxiyjfwsjhvjmk[mwjsyhoifeimjqtmx]ribwktjvuvxakqqznf[izcdtybzxfbyubfbckt]aocntguubagirsgvz
-ursnbtivqkjfkcbls[ckjjoszuogsdnficmhy]wwzjkspwdvilshnzg[gzuoexgingreqktak]ywmfxtqooxdgqaa[bmucdllxdktiifoqp]pvxrfcknwxdjivyym
-ebtozyepluaazxsuoi[mocwxdgmeyxmoulo]grazonsbnsnczptl[rusiwrrcbqpybtjfxt]ewazwwjculbvwjgc[jmoyjpbznvzlvnzu]ghwsmgrsqjgragu
-cmbehdhyvukkufctwpl[toklbggcxvjerfqozbj]wqbacnegquxmszdul[ggzaznwywpswuxmlmg]swowxuqlmlfvxmznm
-qbebmodvutfozxt[macysosjlpjhykkb]qdewwbokbiqofejcsj[ddzpouyuxgogajwmuk]iukkhkmjmrrkefycw
-adaobhuodvmkfzrbk[ucroxtaavsmpvfd]nvrnzhxozidrgvf
-yytzgmmuqrfqegalpow[eyefbjmsyximixd]sgxjxpfncigzmft[zuwduxnhjiidywvsm]qmdvambkreelttqmv[mqhlvabyxnmnjfpkigl]vuxmnunvxclyhkxi
-qdgaknszcwxvyhlrfsr[kbbxnitytjopwtruar]ucanrksrycnoqlcvrd
-nqwjdcnwfxkdglllft[gbawkxvzhyiprfenf]ysybkzwywpqwerm[cwsthmeytiuialllzxx]plcctxffnigyhdfmndc[kyyvjcfkxfofxfsrw]cwynasabqneione
-kqthcqbvfsncuenmqx[rpokleyrpkohzefrw]txvckiapuezhimt[rrfglfzarznwgchlej]vpnrufinbaqrbjtu[hypcxgeuiotonfxvuf]cfpjwonfyqddtogr
-aaxuojwascuilsqjt[aqpfsummtaolqpdi]qoqnuhfpinypgxiex[peasbtrzdkneuriyt]dbhohenosanaxkqqxq[fwvbczhithdxtbdpd]bmncqvxnaijxuexu
-mgiepbqfrprbaqd[swsyfijoncrtrigly]bzdkfgrsmwamezhp[minqrxxklutrtrfxps]dacjpwxdrbxhumh
-shdjdexuhgauroqwtmd[jpvifgjpgzmjlrnuyj]svvjpufybafcjsoppia[albycpxsvxdykattdos]ewhcfugwuovgnepvovv
-ldwjwyzaqxwfrelh[rzkhymugnnpmowx]xufycgvikehdxxggp[mykgpsmatnpimovscqe]cpdwiemofukofnauyh[iicxbleijoxlvml]dxzlvafklkbfhqke
-cqdtbwoinxghfrwulij[wwuuffpfxzcckuf]zeayaofaskxfueiq
-odegrvwiwncavmxd[smgtzidklnmlnltytx]psknhjsrxwqdqlw[kmejoinwatytdkz]dfziwicdcmfwawwf
-jzioqoutlwitjdcb[furuyivyebozkvcny]gfhakdfpfouliybsvk[vfrykghujsittpcxjnj]vjekmvdvwkaffrhhr
-rclnyybawbizurp[cptbsqptpvcuchcyncy]rlqjeblagqogxwy[mwexxfjhkiyoihog]slgmmhvjhpomcvgabu[xgipgcmbydzmayywci]tptdbfqkemdnuzvuz
-junsrcleteqbngabdh[loajbjvuielphzeel]yquxjlecdumepsr[lktbtwjmyeqrurys]ralurzrcthwtkenjtet
-zgykbezaearyhzuxhta[pqtjhajbyttwqzfozi]dzodljvnchwsytat[wrdvidyboznzzbgvxc]fnpmjaiocpucgucwh[kiqymnngzdrlcncpw]xkjzheobflinqcxu
-kbaghyebhrmquslcfc[ukdaffinqagmwhvhl]ruyaqrvavvfrzwiyit[jdhkzojqtxymxoaval]qfxsbqwjtsudcet
-obscoqxaeartfjmeue[dtceaealpasuxsdoo]zhtpbqqfonksrcpu
-bphcztpaoqfofau[wlhtxjzhyooevsax]pvktnvejsbjwsizugxj[aijfjqhoxneawmq]dlfbjynbvobrkyur[swgyiujwbafngtiql]nepaaduwebbpsrew
-fsjxwoamqjhjvyyr[johjhabbsofojaxccga]tqcnhtvkimixbyiqt
-lrasfxkclqtptlt[bmwhuwhzvfmwxxwla]xghbszjpdbdykjmfvhx[cerzilbrtilvfptwid]nkzdvndlbgkwkgzwatw[njpjupthwiwffesnct]cipyoqwmxtiugbyfmk
-txfqpycfderhwnqtrp[cvtdbizqhlxikkw]nuxymppbyfdpayjxt[sfsnmgqrjqrlfxh]dgwdxoveamltzalgyw
-ntfdficysbefpup[fvdhtaqmjosqoxosu]pwrbdoceiweqrfyrx[ftlwubetphczbxhx]jolpetpuszxjkxuupke[mbcbzrxeoqpibuyjsgg]cpdzzdzkwbucybc
-pwwzjoakzydrvkyn[xisfgbgguunevtbg]ntzbwgeohmdvitrtdpj[fzkkujhplarmvzckn]whvdpxzietgdyfhok[hlmsjxrxxrdjfrzncyi]xvvkjroullhawqdj
-pgazkqglbbjzrofkpy[mkeiyuwlxlmgmeugcbb]oguzgbkaasscxhict[lckibbhqnkatvzlqcw]ulilgiydzfsdwngr[qcrozfdctltxaatyajh]ojyzengehkhylgh
-zdatmhxwkinjiumoy[qwhfmokowsvzgcngeax]uqebryzrbawakjz[ltilidihghatuhi]lljxtazlhxbrnvwsrc[updgoblisisvpdqngzo]tjvlrlfopjdoyoisim
-tfguxgdgurymskwxk[ngtycndepeqrcif]gttrbjkhsbrfczdwxo[xulqdcmgztpjgiajnkn]pgwsbrzakmvblfsvlsd
-lclevdvivjogclcmn[kpxlegarknivgdvfymk]kygexxjbzqppiywvxtz
-zadpyjsswjcfimejbc[htbpkbzsmbkfeqww]ydwbivnpofvmzvw[archeurcpsapgylrf]teidjxdxdailsbb[nmoqxuhzymlxxqykol]zbesrnrszqdpsbchg
-ykwptdjfydxfdue[svxdapsdzsvmsifz]omdvdqwkswiktcwkma[tprmxhwqpdycftzlsz]dyfcmpaaokppkzvoa
-adfqjdussbzlxfvlg[hxktcqjmyqctyjnl]ouyrbuvumwwygdc
-rrryoldbjkwnauaz[uarnttzxeuurzokpa]clkjazjocprwqti[krkcdnwldqexavrpo]fdegufvailefzfi[izadiszyerlbhwd]myayzynvrymyobbfdc
-krttvoiaszqvnme[hlywolnuxbxjhzmnt]lwcvxyuuugaqribebi
-yrznsouskotcing[jnttzbfwdrpszrcqr]dhxidpojntnwrrsjjc[dlvjkiqqyrrougz]bjhjvlhvrefihomycx[veomjtdhecgcvsshcwo]iboybnggfhdhymyukl
-qtvgzpyhogqojzi[vtbmgswqkcpdzhxwzo]jsmnjadclhgsofgrq[lltxvswaeqdbvbyqj]gvrdvrgygzhbetbkjq
-oqmbdnnrpqmjasc[hzdfeapdznngjzjchow]fdoxpevjbqngxrhhlhj
-ujszwtyancoxbcga[qzpevsjkmozdbeqf]bdzegnfxtazxdna[wyinvjijbvudlvkwvg]mrgzfijgyouxyio[qehebkkwomsmozoojy]sqhbhyonrnjocbjzfl
-hinhkyqfttbnnou[luuiucbkkrnwiuqbwb]ujfitmunviqwhkiziy[wqbetolmyaceofd]wbwbxudxttgmtuxjeo
-schrxkylmxpwphllds[iijplekwtutqrdkmsrt]hvejiqeylhoxdpkxz[gbhczsfvoidbktsgbqu]rtfwgjnvhjhemkkvbm[lxojvsbvcnlbuofvwg]ruakyrabueflgsnict
-fvqtupyapfmstztmbe[zxtzrmjxlmgshjlfywb]tdihozcziyvstvdtvd[ifzqxsyyhgstjwlr]xihkbuvismdtqtfm[xtxunrrzvtuhjlzoji]zotmlgbjircyvzgcxkd
-shkjoyjuiufvxbluji[saofjqdwpwodltmra]xldohzmyameybbnw[zwaispolnanumhtz]hpobrxhytzqmkrkf
-jgaozdtecqmpueg[bnfjhfyhdndzlkxrcb]esbfjomhfrfvzgm[wqvhdvpvrbsazqzgnw]lkmrymdcupndnoktuv
-mehlgjudopvrolla[ghqzncojnxbdtupn]vacvkbpzsztmzhz[tcvqbgfvrehiycr]unpokrfctcwqexbgo[hbigocuneutkffaka]dwwclmxsripmvcluve
-rkdurapdxvohktm[idaisubzmlljyfbblho]kkkxhnkaiaxxyivjsna
-ujdjbvlqoavnuoeeilr[tpiehldutfyewbqv]crvmofwdjdesxrl
-ptyvtwbbmoujjbvsf[avhpwnutnjkysjdubd]ysgpwvxugjswjzhw[fvgohaphbuqpbwzr]sqvpubqxxhmfxvlw
-sslbaaxswqcqfln[nmdfjxyyrexvtxv]wavnexwpbgnrbrwyrf[deouszhzjkbxxrhvkn]xtfqfjexnqgdiddxh[tphqtpimimjxxkkndng]ncngkkzdnhmbqohupgr
-kcowklgmyivdmreahg[nhhhjuxwoafzwur]jokzmfbbnzsobiahlhi[qgzkumabuuxqhki]ubnjasaqscrxdjy
-ccofivnvzaxcise[erfolydklxltrildvth]sjprbxbfldbsozha[lrbdfwialwqinprra]wqresduonlpwaamhj[nmlgvtrcuqvsirfhwi]qjtgpekylrqmxxbm
-fugomjlqyofxoij[prndifttmowgenapio]jpvcsgonnqmvqrxwo[yuioijkmnwkyiba]gtosuvsrcszwsotg[zvtndiccjofwagevdcb]qpdjgtopkcimpfyqw
-zbzstwtngoozwdgtkme[mrcfdmgpywwvikyrto]ktlmqekphuekemo[wenupyuqahrgisu]wjyyqsuatrkzlohmo[judqmuzbdrqamof]qiovruvlcreoircteb
-yyclnzxvjfymqgrzup[koyfzianzwtvdjga]jtfmxjxehvwejfl[xbebzfwcbmjrhka]oqnpqgevsokznwo[briagugdtzfswfbq]dmnccxrswiebtkwao
-muxweanabaymbamknkz[abtqprtejlmchtpy]nmrtnrjxewbqynvbe[rtxnzbwcjbtmvob]segkftbvlvczkgubgp
-hkihivjdrqvywhwt[xpciwwigazxeddp]vkaysmwlighihfka[lcyiuojfjmmhltubrj]spandymlggnmqiact[xizoxzguscxtsut]cmjecsmmjasgpvx
-kasrdhbhmrlwiczlyp[sfvdefhihrtmmgele]voszgwzdjlvkejvrkn[ahwvipvknuyzrzbrmkk]yuhtxgfpaipuupqep[hezjazdypaguhxkwud]bsfgurgwdetewwg
-mkxpacxlrpbfqio[axwgpntpusujnovkpxp]afzkmjvcysdkbfeli
-mspmqxwmjhzxqmbhbj[zniufuwcidklzfpuoxs]uvlrvuhbhjhudvx
-nrgtmsqbjxlnpsc[hpbskrvswufaucjmjv]pkuulesksyygynxyku
-kmopgjfjwvvrfgvo[qsigvjyusqjqziiuwxf]ewkbjkiqfgdwhkot[tbrynegplyfllxcqaar]cybelgkyrndjodpf
-wjzkfwmrsnyjitglauy[jnncpybddtktmehxz]hluaspiawjwywug[ujwjjttoevainaxqmer]gewchllvjclaahplb[haewxwlxjjnfggtg]uxmnawcpzfwhfiefo
-jogfshkvmshdacro[anluswkewepuhbemk]rwfxbxtmtfgxatwj[lwqompcrkgqzkajgrqg]ckjftivpzkflgbifzx[autylalyokqqlxgu]chewqmwkwewmwoby
-vhqxmrwadjsfoprv[imclvgvrtvqfbcllpr]kmgvgofdlkarrusoo
-kwkqhpdsrkdlhuq[njldfvflplvygnihg]hikxtejykexrghupbqz[tanglgtyodyncabh]ennzrvfvgcnlehci
-hmibwhrmzhcxvzgt[vrdwkryugziqxxfv]tcgmqhirboxwvyy[mjgojhlpjolsjtcu]tphrqucjxjpsdsi[ahqidqxdgeucevqinms]edzoyewnqweqkla
-deizsskvkzcsohdf[plhmdlimpiduxfdyzv]iaodhxioxasudzv
-aepgcwcwlpdqric[xyxiplpunvajsjk]dkragqziaqxgbwr
-keocoxwzsscocdxcf[lvdnlggndlqzvxjo]cajmnvjxphmfopy[bxfnemakuysdjvhzv]ymuttirruskkndjlpw
-rrfoglacqhfucnjkhsf[ejgwoteprdneomyqphi]gtsffeskyegnxzfkssz
-awgoetenjdtwnpw[hflbiyqshareqvcc]qxwgczjnzceffwk[eumisjskpmnqfmox]dtsifzhnbdvlfaqdkwe
-jezzkwqvkbbcskih[cxqpssjfttcropqrk]eqkohazzfagyqpjt[qveehpentvwwdazsmdc]enufhtsnszihemkf
-zqokauntjcoqolc[kfjplmodgrkaeuuvq]fqicoryxfrkubee[fcncbrofqpyxdnejn]yebngpgxcbjnivisgza[bpwzrwupgpmtbhg]ufxyezblslkscovzaqd
-vdrhbvkjchpslgpwwdt[cfslokjhwrpogwmf]qkxlvkrswbbbhudgk[ryazzfichahhigijhc]xbxrwruzjhyjlwxf[xlulxjmhxnhmkflqw]xtkuftnstlwxwiirwko
-qwbqncrimtxfjspgyyn[ysolszsumngdzijn]stfhvhqwymtjpauip[lnucccqwwzenxlytrb]aumcvdswfuucagbkel[skoaaxgeqadxehwvjt]jrjzozvfrrjrsvmov
-akweexwajqyahlpq[pjxilukjsvzjerrcdcb]qsptnuxrshmerfccxhb
-xbnsmtgyhitmtounl[msqlrxysydxdydbtyho]varxjhsmmqlilsprkq
-udmbexywtscnesd[azofuoboewwundyif]mykxybobvefathvqkfx
-gjedwdykwqbxqpsb[nykqvlfsckqcgfhvbd]xdactphykfhbpjollax
-tinuplnorykjcuete[qqwstzqrupgcliapi]durprlvdyucmbkhceq
-zrfmusbfbogbrsin[gaayijtuqfbfnxb]cgjsibujnswdmuhfez[rhatyymizrxrqud]wpvajerbhxbtrva
-tpjpjlmhvuorwnd[vnwdgopuigazzwytzbe]uaplhgdvedfaiboz[rqkafxfjjzjwbzwung]cqwjlakbfpqvxspia[chyrracxefgkuznb]chigmcxzjqnzsdn
-badqhtkxeokdbres[wmdthitngyoujdumxfb]lnafdeqakaggcdttnq[acuhhjaemkakovqq]vfvloofttmvvolbpgb
-myaunxirrlgywdtyrlp[nxinrircujeyezto]tdzynxmmbhjybgz[sxbjlwhbkhpplbveqk]oplketzgeeoczpadvhj
-wtqjkfmtshufwfiux[njjvqujaetzgcihtxvi]fapfzhffwqovrvfpatr[hwjfoqsbiothjtrbg]sfwifkjkimjnyzaui
-milzoncxkgtbsgtxgb[zvskfgfsgefelbjckwy]lrdralfxvtlupde[kvvibrstieyneglniu]pfyopkpteyovtkahwby
-sjwqwumquvxpwokonnd[wooozqoxtlhwsfhtcic]tgzecomscwuxgazattf[dmaxzgxonbkehxgymq]xbqkxgbziuumwex[csesnsjiexhypqrxjj]dbscxozezqgzexrwci
-yqgpqvteubzxsmjb[bntiezjqbiywrsq]nrgpewzpshvjwdx[qifsblzcgkiqfmele]oypyewwjmytlaujp
-bxlsaiblatkrxpcr[xxnilxrehixaglra]apwnnbwgatzwgmr
-rqsogjhjijafydmr[krhzamyodyfpbdv]jkjdjxgdszznhiv[ywihxdwlgdadayqm]cjvrvelwbegtiqswzqr[toujknandbegjga]wvdikqjnnxpuxtijios
-dqlbbhlsllmcdejnme[fchpcehhwkjwkythfc]shnipixrreczdblufyb
-pljkshxmvbpvswl[gbuflmmaywvbjwibfud]mexysgjrvoxovxtvici[svuosbkwxjzhvmztiq]cvfjfnisqtyomho[jvrshoymwbzcpgxtxl]ysdystgkeioszdbora
-ooyljflrcdoujmfajfu[qvnbylveipljcmgrvl]cjfvbounfvjfpsxmbnj[mohdhwcdrykexihcgvb]gfzxjkkqdnspzbqb[jkoiqbqtbjxgezxvsgn]juvveztzrtcxhyp
-ebfbaesgsxjbwhkmpxp[dzkhyyykwhayaztjt]xkxdjdlfvlzpqbb[tjdqvwygsgoldpffs]uwccbahfnjkhbfzcocf
-uayfnudukxaldfgdvh[tshkbhbydlzzndsc]wtjmhgayuizllbngcr[tfglywxclqmgpeatsva]riocgxwsethrhbh[xnerbhkafskywvgxbdl]yzubvjedgzbpqqng
-iensavdsekzfncu[frepnzfzbolseio]thbtyqsviqjozgq[mqobufwdnxkzqvqtgj]woxdzihysaypdxamitb[llqsjadcqlogalbice]xwrmwjiednucqqfuy
-lgmcluvxcilrgacyc[ozvsjikotkgiepo]ximiftuuulbsghmm[ykwtdziaokecacpd]bvhsjkjycywcuitep
-eoefpqghlbkskrhdhv[wkzmafhoocaswuz]iyiulabsaueugqys
-noklaptafpgtvzb[hocgskfdbisxdlcdbq]sgwqzdhmwapbbjox[yyjutkzwybpoeea]xtnvxgftzjdwqhgh[nqgarhtwigpfriuq]etonjczcgfhclbf
-tyqqeyfkxjcnjih[edtgzfrlpapwoyrnccx]fmsegnaucwnvsyrsj[lptzjaxumqhbwhmljyv]rugwpouagbvimws
-enpywofbxruqkma[lesuqdferlsfxqis]tqkchirhakakvbgf[ytrxxjwygqwaauwjsg]ncrkbikcmvtbtrabvqb
-nticpuumzthsihk[asrmrtlzizgsvnvcxny]wjntjizixwyedcrh
-yjkotqgkximxcbpa[ttuenysknomggwwvvhe]htzkgoilhlqrpmbcvh[zucaclqaevmjqfuy]pfkvmsbcslkjxyydhk[obfcguogfxfimowk]eczitrwtnkfqyvxco
-nbrsaktghjdxrhul[kmtgawzkmntyypqmw]jggmopgbovomadux[pkwngsqopjftulu]ymmfdmimjpxufntd[hnovhrnfsloivbbueip]oreyglwcjkylphqtwl
-ufynjbkocygleqwskw[yuykssufmvmdkdntk]opbcqjxsioqpkzbtuhh
-nkxtoheqxycxqbp[nmjgqytppiuscyylrm]ezhiobiihpmhkqjc[bewnvjufjzxgfwhy]hslvggdrixjquaigzp[dkaylzejrwivzcl]mxzgkigdgfhmczixkrq
-fgcsqpmignjsbxxzt[zoatnmdxtjwltkazbep]wiadjhqakemepgfh[csuxhgjcqjsztsrwb]wdekgrxgngaaqcequ[kjlsrjjtidezpuitng]lhibpbcwjndstunhfff
-ozgymklbikxnhme[bbbbemtxaxyxnnazaxm]jszcoclvxluigfgdlq[bkkxgjapnrpvovq]tdsakecfolgpiynztiu
-tytomipjwhuqwshlvho[ewcfspufoolvxmeyodk]wrrxjaexfktctmwrkvc[fwdrputsdfepfvglfq]fqhmqffdtqahfpyelce[elfiaqrgaqxwpjbxcig]jmlxcfxgjkteodsufs
-zdfxveufnuenptljiet[bxzgimeczdpygyen]ptmmjlitdsoncpjlwh
-yfyzedhbbtpqiwmri[uqxjtkmjcivoqatycbc]etqdfgffuplikkgrug[ezipcwmudtfakrrif]kumvfsiqqyfrbcbvgf[upsfgrzgndzpzxhmx]aewrwjwdquhsagmgwah
-tkhbexdnhdkmlogvk[rvuvfkiqrvxwewnhihc]yytysizvrtytoqznokd[cyxenputwxkuesw]qukaxyqfxbjvgdcy[rfvlqyyapixtzghha]sjazfjtokjizlxiim
-ynwzzgtnjmfjhbys[enxaumsepjmyaapa]tctribvarqtdaceq[omcmnkckmzjjdhjiwvj]qlkbuktkubixegud[bbvvgpocsbliknv]nivyswbiijvnvvkuw
-dwncikgxhzvktwgwa[nwmhqzwlvntxvjv]dmbsieiwdzgwecq[uvutvspxpxwfafv]vauzasizdqputolg[ncsglnqbwjshyxa]dtgwditcpcuncdcxn
-kupmpwwjcwmmrhum[aakppoytxqucqfncv]gpuyruwkndprpqjqwup[lrcoaodsmpmlhnhnyq]zathwgfvwmumcjwaa
-ivdparkbqlazewoujo[tzfulakdrwfncibtnza]titrajiplrfpbsar[rnjnbtkpwadofahdfvv]uwobxeoluadvnxyxwl
-kkoyqwkjdgcvqaufnj[qucvzomguivuynsg]cbhahcwrhchflfuc[czlxnbidfvtovgdl]jmyougddwlejoyrfsfm[kcuqcjogcjrhvjpxx]khnizsdkqwzdzehlpe
-wzeknwbkawxgvgtq[wmypojfjlgomvmk]tfwjzxvhrbxpkuyk
-ivalkzrbqzhiqmjo[olluyctvwisrwwt]ndrunxditvvundvd
-zezjmfpqesoftjufk[tdueprzpghkckpq]fnwlbwrhqmmayee
-jpmhszgjuxnpjdsbtk[cpzosccgpfbvzuretl]nfpjzsqdvzkcszid[csygzwucakziegi]laqibhadzxurnulc[otxsegwpopkabmwbxzd]ymmsoiqsjnlnsvlsq
-srgtzegqicrsutbpfsh[wfdoodrpmioayoa]kfqtpkwcfgyvjeyhvsj[yzcyshhziwjudxmm]xnmgrqxumondortjbye[nyajdyykzhnmolyv]zbdkvkbjavamxrafhbl
-ifwabdpxckluvreesop[dsyliwtgkelyyam]hqwleigpcnogipr
-bpaukztdyuwjkjrqj[dnslgwpwsanuxvtyn]fxkjtpifmtqzrlok[vfcgvkrunowkiilyok]ypgxcltrqbuzwiqom[ikzgjcafxhxmtgril]btdnvecxukjskjkndz
-nghqjtbvhviyatzaz[guzxivxizjukrxwaf]vtggynfcmuttsnrvm[eqvzxmtlkaigaur]dmfhpohcbyjikjl[kxaapmbxolonwgbw]uektjdecblphouwitdv
-fxefzaiaeclqyvka[srznplyazbvctgfdr]xakjubrnnbfykcep
-rwlthwstbsaxphlsrz[ihywtcvcfdeczmy]lpxfewmiwnskbnv[ripgyxpgczfvxkzp]iltpwldaivxkwwcb[yiejtwqmnnnzywks]krnbkndouhoakztwzh
-mwaxggiakwqnbihaaj[pxslpnutqpgdfvhvwgp]nhhnvftzfwdfnrqisfi[hgroxibwekbugif]btrhjqipvkpfvcf
-xmxlpyuuqssmtmzqyb[ybwrbnrgkansaodfap]cihlwrfxgbaxddtja
-fahbkbakvcwwazgioub[ouuvcmqsmykbkhfhj]gntumiippgacbcl
-hqkuhmrurcqtkzusgu[drwgthikmebvdcjapw]vdxfpjwqlcvwpgsflb[mmaxekmyvkxfxye]nlusofrecbdvhbruu
-tjyqhrxlyrubiuwl[voyszxwudonuwiptjoy]xggibveyrclwxsq[aolwexwhfxpwcuavvwr]bwkkcnpvsiynoeikmlb
-cxpvpcjhfbokvuh[sdkkaewwgkvniqymkrl]emeetymmtcbrivitvn[bvyzmgaorsfbsmqoka]vodjpeovgjpofkq
-nupojuxxbgjvlafg[uhfrugmmacqdsap]nxuunqzbasceyiz[ircwdmgmysazaya]qwsmsdywyhklvniiq
-mxujioozxlybxvyjcmj[afimhsdzsmtxszd]fsckiqksntizegvxgz
-htyhhcuqdfhhniloe[iqslmejacjbynzkw]nenyirdlormvppyym
-jbphnkbvlextsaqnid[xdebmjhugwvnodt]spdqamgmvsuftfx
-mpdupjaxozerpkit[pcivcugsbsqynoz]zrxxjvwswbpuylnxi[tjoxsullllulompfxhy]zobcdnaypuabmzfn[inubfyjlhoysdjath]vufswsypjkekcrb
-qsbiexorinxuevkoad[tjzedsasyapfnvwa]qbfrkhbfmaxcgmovnif[evrexsygnumrldt]serpxomgczhbzjix
-ukqzagjymparwzqvw[lnkduutsjulfxuqug]lvupmgsyiquqeepmgsv[ekenewopqmddlcqc]rhnwektxgccickla
-ezrytvzepmzxbjapim[knaxuvqciriixgji]epksyimofrrkgawirz[tewvfyplzorvkyeog]bwnejljtelcigsqfx
-fngkrmmwapuutwtn[pjrinpthoymdxemoe]qoxhlklweoscgcagw[pyrevdqrznakburr]fnsowwitbsxsdsdv[hzbrhpemwokvyhpohjw]jppmuxhrsdsmmprl
-wfpphsvqgdaostxg[abwxepvuvujjmdbhees]uxitcdrdkyaqgtyrdr[rqdczpmmmisomtmop]lnqpzuqcyrdgzrcc[cvzwdsaeorgdzzklrx]ekwjqzkeolvlkkqtj
-qzhiltifnugunsngzg[fxfhjhvijjnhnxkbl]bbaftchmgjrfuanns
-isducdmcjzbiacltx[jvkepdvzknnyqegqte]zbuvzcrrsbjsqkf[dowjjsipssfisalqwmk]uzrmibeeevzeuxtb[ajzixsnzrxwpekzpy]weogtsmtsuxvjyhy
-dnxhdwkvawccsfvncy[odsmukbcbpfyjqeau]ugusdxmjuxjosasg[ouwrwzplzttepynf]avhgcbmjesyqkzjgms
-pwyizorvifedguhjqrg[zsafqttsqlygzwmqv]hxilzjvsuyfnyck[dnovwvccguuzizrjw]qgbluurgbxnollv
-meqzvrprpthaebpd[htamsljskphtldx]riagbpmpasjnjefv[cvpfevyvpivbals]tgxiqxmhvqhhmrr[cgeamacqfrlrhaoz]vficakheeoprpbows
-okkhpeexympjqvlamxu[mvjvngmxhkbiaygi]pnwoitpqlyqaiwdpf[ryfcbkcyzbvxuyngw]xxgknvjauivacqxr[tqmanixcxxbolxf]orhkvkwpyrwbymux
-ipwcjobowzgrgzmnf[uahjinxxnmyyibzp]badwoisgtafnkgnp
-bcbwbvyvqpozfig[twwsbwyhvfaddwo]jogvkczzowocmkwwlla[yedsazzkeklftvohfqz]tghtcjemmehumuyxar
-bevtohpxkrlrjjen[jxnohlogvkugugmk]nrxomawkgbwlnqwb[rtjoeivssknwelkhv]dihcnpigtbnwfdlxhm
-upuufvskhseazwfttq[kkipejrjmxwmqjsh]xquyqplziwgvkkiyv[iirqohxpmcxsjryb]ajblnptlfnukvae
-sijztjuwnyftelgytm[mgirqlkcbaigiyx]wgbeoandnwaudhgvd[drhbrumogcajpxnvqov]vwandmoxgzsokgfs[xwgtfizcmyjrfzgejhv]nhckviycimfezwefw
-gfgrgtizxajkaicjcc[mftrzuftzrgrwilsv]uckwgxywnamzjglbnts
-znbgncjrhyxaxgd[xyyzkorhakwqubjzk]wrsdvjsrsdorwkgr[krrqukxrdobhkzmr]mdebvnlirbtdbavpj[adbczigmaoreudvgns]yqxeoeccdlpuwyvf
-ymjcaobrviuqtvxjqq[jwpvalizcmbpfdjk]wmxpzhqvcavedvmhtn[llsefbpkphhetqhbj]qryznzcexwgvxni
-ginmrsljkrcminltayt[iarzxlzixokzfxiazwl]aircthhepljgylm[wlorimkebaxcvcwanlh]bihvjtofcsnvuem
-zdegfhthlaitfojyj[bltnoljmwcfdvle]gnadpzusiepwthtv[ieuoyrprfkwonhwjt]wwfphscvjchvrab
-kdnddjueyrofzhjdzcs[asdqcpbunitvxrwi]usylnhwfapvczeb[ozrrpkegwtbkftyeusg]pncbcdrovovzozcazn
-lkksyjqoayppxtvns[csiuzvhklkfijem]xpsmnkdmivkitka[djmnmzweqxrkfomzqhr]wkzmhoiasanmhez[wojpalkldcaopeg]murhvjrgpwxpbveekq
-jawznxjorxwvflmkk[gafmrermlounwjqod]nalazknfqhepgnelal
-wlszezwacdeehnlnoj[njlzbwkfnvnbwim]fydgpvvovkuardng[gqxvckevjodockykp]qsbtvwpwaaeatbd
-bwwttxctuzuezxfdz[apvuanhzemgcupc]qcfxkvevimwvwpu[zhhorxgplrpuyabae]gzabsprhuhwrtkd[sqhumhfqwdgxthu]fyebhdninkahfyy
-hhttjuhgvcgkisaqof[obpleewrfrrsgpumz]umcmeaytqjlqkyrawp[rhkhciyzmxciiysv]kszzqcmcylslhlpqjag
-fnevugmjjescvvmbmt[bjzdquqohnusozz]fwlevkwzllmptbcelsh
-hzqfveaxrqycvuolynx[ztsmaipixbuhbmv]ebvofyoeponbpip
-utmnuyowmxipzhde[yuvqwfsuyhonciiepq]ynjvqvvifywnecwzdk[httqooeiilokkjghwjq]znixikpswkpgxcchuyg
-goojhvcnizyiukzgmwb[euyvjdmnjjrkjwpu]puidllwqpsddlrhx
-ysglduipsofxegb[kzrbdzimejxkyftyuz]aekosjomszyegyy[vpkwocloupebnjeo]ocdaynpnnytwrgkn
-anheyoxddpkmqla[isqzqeuwwitvtqy]jnchwevvrgyznqsomum[kribzkkrxawjnfsmiux]mlerrnvwcydnfckydfm[hwouaafteeabtgflb]acwwvgztxwcanzizha
-kaqernqhzefzthuc[tiuifctajhxawtoi]kyqdkeudzkihvfsn
-vwwekuavrftztxb[aywyoempmajrdkxpsc]eibnjbszsfsapujqn[rxpcsihuzszefcdzl]gsahdvozzgxjhontxk
-ymjyffbcgimsalujegr[dnppglortkqlowskj]wxwtxtdaaopcyvp[xfsnsdrlopdotuqx]sprrvphwennltlddiw
-lguyxqxdnirprljpkec[gevtjwbiofgesdwil]phnydixjjjcprpxlpj
-mgjnnftohavesepu[slwhvezajhvdukghl]hdhtlheqzqqrsqmfqyz
-iapqmjgrjnecxylopbo[pnbvgmbhbcmcnpsf]opurzpqoyxdxfkud
-efuoofbuyjoaqjd[achnmlslfvovmgt]xcuyvikslsewgqlx[gjxolnhgqhhglojjqhy]iarxidejlgphqwaei
-uxpcurtzqgpgtzkvp[mibqtgwackcedfri]otnnsgolldyzdpbew[tmgiijgjuvjykwahml]xxgjgzmnicxmywdubrb[hwhcgbzhuoankdubft]rxqzywfyuliatahn
-uhmufcxuptehmuf[sygthxldinztzudvs]bdxukzqaxeavvrbqmuz[wovugtpgwisttusjlet]tpfbcndafwhdnolv
-kwknefvhmzbtjezkh[zcvncbptzekirhqo]qvgnyfkmrnxlgxzjjxl[twxzjkybjlrpurfmufa]lclhwuylibekjjxc
-mspxottklkidvlomd[rhiachlbqgpdhfnxyc]ekkxgijnueonlkpfkm[dnwcjiihmpjqtmb]dkknlqniolowydd[dyqofryhvgracxeuivp]pbsgttbtgksqqevytrb
-pjvdfpsdlampeztecfq[lpqshzeegwiouas]nwxqaoryigyvbby[iiddsczjoxentwv]weexunkmtaaufurjz[meywmosucyrxzlgxi]huqfmfpxdmcmqfk
-abbhujqyoaphnruaih[yidrkxgrxeoarph]fvryghhzqrobkbsck[dnokdwmkbktlfoihxl]ttptfiadsswiwsfbvf
-djwqivpbexyvdquh[qmmdydhjbmunyjixviv]nradabzesdavhasjbjs[lsabjblhocebvyhfee]hwbyvnzltgezasg
-maxofygcnygnwefsb[gdfccusdbseqsqfwva]cxdmwhnjitaazhjftn[kcratndpffdnbopd]wocybndplnotqgctr[ymceqbtulsezvftsi]eggtzhqojksdjapnv
-lzihlroqvmeohnun[wskcytlimfagjyd]tnehibbupupuhepqz[hschjdjtzbvavum]zstmglsltkovvckpmqr
-syzoikkgzplleoaz[ccpsffhupzpuhjcw]kaswkcoyhlrayhikme[qnjnztjupvbwyns]ggmkqikeziailzpuv[ugqgbpunztgvsxsp]mntxaumliefzkpnia
-dxnkgspqhyejogxstsk[jfgckouqypxttst]axtisjbtaviwafh
-baxazxlkzlyzvbdvtlc[yhegkwrrluxcnaahyl]nyegiipdjrnjobyjp[ulhbizabyukfvhmdg]hgmxctzxzewckasi[fuvwuolxkcfdkmtcngk]xvmvoydeiuaeawcz
-bkomgyefwkmwwpsayb[rozknmkljogphrqywyo]vlpasefojmrzbpox[epogjnrjrntbcnzha]okfkagkfyagcszueu[gjpfnuvnazbnqylfm]busunenasatqeieestf
-dwlbzijjdujfhotvj[swplsznswlgnaud]bgedlfxgjbwxekq
-ffjhdorivdezjdb[tqkfrzxthlxadqstmqe]ttmrscyvbrresartqnh[rfztsxgbedcdecgv]qxcsxdqhshsqtjtl
-zwosebsoogknldkh[mkcucbphbvnaqyxjope]aibznttouadentsy[xfucuvnlnchuawcapcq]jqherkgzqodpzydtgu
-xondkuknycfwyenkceu[ugjlxueqtcyhyhni]bbofydvkhtjgxxnyrc[gpnwoarvjltzyhhe]qebolgjnwnstokco
-cygilweroxmbmbmx[hopxissehjarmezawol]exywzaffjuhehvmbm
-nbndomwcaauiluzbg[qjxqxhccqsvtkwm]oazwbouchccdhtrbnbv[vetwfilwgnxxxrhxar]mrbcnwlpciwpizkxj
-xuabbxdwkutpsogcfea[tgetfqpgstsxrokcemk]cbftstsldgcqbxf[vwjejomptmifhdulc]ejeroshnazbwjjzofbe
diff --git a/adventofcode16/data/advent08.txt b/adventofcode16/data/advent08.txt
deleted file mode 100644 (file)
index e6aa6a1..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 5
-rect 1x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 3
-rect 1x1
-rotate row y=0 by 3
-rect 2x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 3
-rect 2x1
-rotate row y=0 by 2
-rect 1x1
-rotate row y=0 by 3
-rect 2x1
-rotate row y=0 by 5
-rect 4x1
-rotate row y=0 by 5
-rotate column x=0 by 1
-rect 4x1
-rotate row y=0 by 10
-rotate column x=5 by 2
-rotate column x=0 by 1
-rect 9x1
-rotate row y=2 by 5
-rotate row y=0 by 5
-rotate column x=0 by 1
-rect 4x1
-rotate row y=2 by 5
-rotate row y=0 by 5
-rotate column x=0 by 1
-rect 4x1
-rotate column x=40 by 1
-rotate column x=27 by 1
-rotate column x=22 by 1
-rotate column x=17 by 1
-rotate column x=12 by 1
-rotate column x=7 by 1
-rotate column x=2 by 1
-rotate row y=2 by 5
-rotate row y=1 by 3
-rotate row y=0 by 5
-rect 1x3
-rotate row y=2 by 10
-rotate row y=1 by 7
-rotate row y=0 by 2
-rotate column x=3 by 2
-rotate column x=2 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=2 by 5
-rotate row y=1 by 3
-rotate row y=0 by 3
-rect 1x3
-rotate column x=45 by 1
-rotate row y=2 by 7
-rotate row y=1 by 10
-rotate row y=0 by 2
-rotate column x=3 by 1
-rotate column x=2 by 2
-rotate column x=0 by 1
-rect 4x1
-rotate row y=2 by 13
-rotate row y=0 by 5
-rotate column x=3 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=3 by 10
-rotate row y=2 by 10
-rotate row y=0 by 5
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=3 by 8
-rotate row y=0 by 5
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=0 by 1
-rect 4x1
-rotate row y=3 by 17
-rotate row y=2 by 20
-rotate row y=0 by 15
-rotate column x=13 by 1
-rotate column x=12 by 3
-rotate column x=10 by 1
-rotate column x=8 by 1
-rotate column x=7 by 2
-rotate column x=6 by 1
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 2
-rotate column x=0 by 1
-rect 14x1
-rotate row y=1 by 47
-rotate column x=9 by 1
-rotate column x=4 by 1
-rotate row y=3 by 3
-rotate row y=2 by 10
-rotate row y=1 by 8
-rotate row y=0 by 5
-rotate column x=2 by 2
-rotate column x=0 by 2
-rect 3x2
-rotate row y=3 by 12
-rotate row y=2 by 10
-rotate row y=0 by 10
-rotate column x=8 by 1
-rotate column x=7 by 3
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=1 by 1
-rotate column x=0 by 1
-rect 9x1
-rotate row y=0 by 20
-rotate column x=46 by 1
-rotate row y=4 by 17
-rotate row y=3 by 10
-rotate row y=2 by 10
-rotate row y=1 by 5
-rotate column x=8 by 1
-rotate column x=7 by 1
-rotate column x=6 by 1
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 2
-rotate column x=1 by 1
-rotate column x=0 by 1
-rect 9x1
-rotate column x=32 by 4
-rotate row y=4 by 33
-rotate row y=3 by 5
-rotate row y=2 by 15
-rotate row y=0 by 15
-rotate column x=13 by 1
-rotate column x=12 by 3
-rotate column x=10 by 1
-rotate column x=8 by 1
-rotate column x=7 by 2
-rotate column x=6 by 1
-rotate column x=5 by 1
-rotate column x=3 by 1
-rotate column x=2 by 1
-rotate column x=1 by 1
-rotate column x=0 by 1
-rect 14x1
-rotate column x=39 by 3
-rotate column x=35 by 4
-rotate column x=20 by 4
-rotate column x=19 by 3
-rotate column x=10 by 4
-rotate column x=9 by 3
-rotate column x=8 by 3
-rotate column x=5 by 4
-rotate column x=4 by 3
-rotate row y=5 by 5
-rotate row y=4 by 5
-rotate row y=3 by 33
-rotate row y=1 by 30
-rotate column x=48 by 1
-rotate column x=47 by 5
-rotate column x=46 by 5
-rotate column x=45 by 1
-rotate column x=43 by 1
-rotate column x=38 by 3
-rotate column x=37 by 3
-rotate column x=36 by 5
-rotate column x=35 by 1
-rotate column x=33 by 1
-rotate column x=32 by 5
-rotate column x=31 by 5
-rotate column x=30 by 1
-rotate column x=23 by 4
-rotate column x=22 by 3
-rotate column x=21 by 3
-rotate column x=20 by 1
-rotate column x=12 by 2
-rotate column x=11 by 2
-rotate column x=3 by 5
-rotate column x=2 by 5
-rotate column x=1 by 3
-rotate column x=0 by 4
diff --git a/adventofcode16/data/advent09.txt b/adventofcode16/data/advent09.txt
deleted file mode 100644 (file)
index 3ccde78..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ORNXNQJQ(151x7)(5x9)OFIXU(27x3)(21x9)VDCYQELDJQUAFZUHFZVSU(34x15)(12x10)SEDIUUVFPEKY(3x9)NHR(1x11)I(15x6)(9x13)CMNDUYGYR(40x6)(4x7)RMNG(25x8)XPDSEYNCWFQFAKUMITWMBLMIK(7x11)(1x10)N(109x1)(101x15)(28x15)DYKYFCKDLFYAIHXSOAZKTPCPBUTX(18x13)SOZMWOSIQHVNMRZYYM(1x4)W(11x2)AJPKYMFRDJZ(11x11)SYIQBGHBNJL(26x9)(20x7)XLNTFHRYHLOYBBGMRPDH(269x4)(2x9)ZG(79x7)(24x3)UBTEBZLPYEDFINUQEQZUSXWY(3x5)IUH(15x10)LDDUEEJAWVGNRYA(3x5)FAO(6x3)ORDEIO(47x2)(1x10)J(2x13)DW(1x8)V(19x14)IJAAZPPGBZPFERJGOYI(103x9)(60x11)GKYOEUBZWAFDXEGWMPXZEOAQCUFCTJCXROPMNEFMJUWGBOUZRAXKRNHTBXHM(15x15)BTYXPHOQZXSBUVT(9x8)JQLNIDKMH(9x5)(4x4)BQRL(4207x15)(1464x12)(305x10)(159x14)(71x12)(24x14)(9x1)UJXIVHSUD(4x15)MAWK(26x15)(19x15)YFYDUJPUZQCKGVPOXKD(2x1)HN(2x6)GH(20x14)INJNODCLPWICQFIERROI(3x11)JUA(31x14)IUDVEHRATPGIEGELRDOZMBKZQFONCBD(130x14)(28x15)(22x7)(5x11)PHVKR(5x10)KVTDO(88x12)(8x12)POLKYDEX(27x8)(9x14)APMRPIHKQ(6x11)QTLLQU(1x4)R(29x3)(4x8)WBRL(2x15)JU(1x6)Y(1x2)U(1143x9)(364x14)(262x7)(6x9)EEJMXK(100x12)(5x1)RXXSO(5x2)VTESR(6x2)SXXSZL(49x1)OFIFQJKSCOXPXTHVWCUJVQMDBQELBLDYRKIGKHOEWRFNXNRLF(9x1)XRUFFMDVM(29x5)(3x8)VPW(6x3)WWFWRC(5x7)XMJEJ(46x9)ZBWGRECVBOPHVFQYBPOBHTPOMTYQGVZKQMKYEHCJYSNRQY(50x1)(10x5)SFPYPPQKDO(27x10)DNMTTNUGOQNAQLRBKDLNRVGRMLJ(23x12)(10x7)LCQWCIMTSV(1x12)X(15x9)JMJMKCIELUBETER(38x7)KWZVVWPBHKSBWMQWBJKCRHLIEHZSQBRAEOBRHE(130x13)(123x7)(75x10)(9x2)NUSXXITCS(11x2)JWHCFBJNEYD(10x1)QJNBNHNNDF(5x5)RWBYJ(11x10)GRRSDLTEZAW(35x9)EYHPPDLIWUITRPLKHXFBCUIQZZMYCDKWPNX(326x11)(130x1)(76x9)(9x10)TBCYBWJLT(4x8)HTQB(35x8)FUCOLJQAFSWAYTACMFRACVWDLZYRGSUMZAY(5x15)ZWHCN(17x14)CRUBDKGWUQCGGAIOS(10x7)(4x12)RWFL(3x9)TFR(27x13)(1x7)R(2x14)VY(8x2)DZMFRMGO(94x11)(61x15)(1x14)O(25x14)IKECWOPRWQBVRNEDQXWFMVBOI(15x10)QVTWMBNCISLOBJR(20x1)FIVILFBNIPNRXAWXGAMJ(32x8)LNPRYYKSLCXOEXFWZKAXERCQKDACFNYA(10x1)(4x14)WRAN(292x2)(168x7)(10x8)HQSTVLQCNK(89x4)(9x11)XCBGNGENA(22x5)BLUEARYFSAVBWTDGVHYWZP(21x12)KGRSTMCVPYJXIJWXVXREW(12x5)NKTUQMXCLFNL(17x10)UPUPBQDSHOXKHLGCR(10x12)ALIFHIZXQV(10x1)KEFBFHAOCG(100x2)(9x4)(4x9)MKGZ(80x5)(20x3)DQCKBWWUZDJICWUESBKY(14x9)EFXIDIWRKZTVUM(6x15)JRDKSE(2x14)AA(9x9)MJFTTZMTW(5x3)VLDNV(411x4)(397x1)(390x8)(46x4)(18x7)BLBFCJNGQWPSJGPOVU(16x7)(10x2)FFZWESCTXC(6x3)EUNIDH(56x14)(28x5)(2x8)CJ(2x1)EA(9x9)FLKGEMFED(10x9)OLOMVPKTRZ(1x5)R(202x5)(88x9)(6x3)VRZHGK(20x12)KKZGPZHKVMLDUKNRPDLL(7x2)CBDBTRO(3x15)XPR(23x3)EHEWCFLEUPCSTSISPKGXIMK(32x5)(16x12)KENYBOSVRILLLTVM(3x14)DYH(19x4)(7x8)FGHRXWB(1x15)E(39x8)(9x11)XRLWASPXI(17x10)RNFIHAQMBBELSLNCT(49x1)(36x4)(18x2)QKRMYMDFPSVDXUXXCH(7x3)SBFHWUF(2x6)BD(2x6)HN(1047x3)(450x2)(10x4)YQQDOELWCI(48x15)(25x7)(8x5)KUKZDUYU(7x6)(2x1)KQ(1x4)K(6x3)INDERJ(284x5)(92x7)(86x4)(13x1)PSVECPHBPYEPJ(3x15)JEY(35x8)RCTZOHPJAICRPRVAYZZLUKRZPOOPFCBCPAQ(4x9)TETC(2x11)ZV(179x5)(95x6)(8x9)HUGVMXOT(9x10)MFDYGPUWF(12x2)PSBNZPCWSANA(6x1)GICWEI(32x9)JCBCGJIMZTQUSVQDRHWMSYJYUHJIVYIV(71x13)(15x3)SXTGVVIWXDWZTZO(9x2)RASQPEQUN(7x10)TPHSDTV(7x15)EPAHSDZ(5x6)BIOZT(7x4)KYMJLYA(69x11)(63x5)(3x9)XSS(37x9)HTZKRPESNZRIWPGWAPHBOIOWAWFHWMIXWYQQC(7x6)(2x1)FA(273x3)(245x12)(39x9)(8x13)WCKBPVRZ(18x10)(11x10)VHBAIPPIWXD(2x3)XD(1x11)Q(6x15)WCPPQC(167x1)(23x15)DYHQGULKPISILTRIXNEJZAV(65x12)(2x9)FZ(14x9)WWCTYVLVAOZDAG(15x11)CZYGTNAELLIRKYW(10x6)IEXFBJJCLQ(42x4)(9x14)XRPJHVVME(6x8)XAVNCD(10x9)IBVGVWIFUD(11x7)(6x6)LSMIRR(14x4)LFACCTXVWLEDWE(287x5)(280x2)(273x1)(7x14)(1x15)U(109x12)(7x1)TPNMYVS(46x8)TWTINTRPDOQKPDPZNKXIVISRQTZODBXMSPPZKCQFAYCJCS(5x11)AKNKA(18x14)DKSKSQUAUTPZPNHIWP(4x7)DOMY(56x3)(6x6)JBJORX(7x11)IDJWUCZ(26x1)XMRHHVJEZBAIOCBKTLKEWRQHWR(46x3)(6x8)JDOJMU(5x6)ELYWH(1x1)M(1x13)Y(7x9)XRTOLWT(22x11)PXZRLOPHTRSXFEGYCCCKOZ(1x6)I(4x11)OPMW(2x11)ET(1244x13)(8x9)(3x8)ABP(1x13)B(188x1)(6x9)(1x5)H(161x8)(115x15)(15x6)(4x8)YQCB(1x1)L(73x9)(2x15)GX(25x4)NTANLQJGDHTCOIRAFZAKXQHVB(1x3)R(10x5)VDXVAGTAGQ(7x3)NKCTQVK(3x9)RRQ(1x15)C(31x15)(1x2)G(19x2)OAUAOISPSPTMKOGJEAV(4x1)DQTV(229x5)(2x4)EP(124x5)(117x6)(109x14)(16x14)UDUBGHIWRGGHYVJU(2x1)DG(7x14)XZCOKGR(4x15)XDVD(49x10)HIHUJRXURZHGHWJMFTGUQUBGCJVLZSGLDIANTUIKYZWXHMAZY(84x14)(6x15)IEUICQ(13x5)HXIRLHFWXDSIB(2x13)XU(39x4)(25x10)(11x14)MWHAQQMPPVR(1x13)R(2x9)UL(786x5)(38x10)(1x12)S(25x9)RRXFLAJRHOUZPDTBWKIZHUNGA(471x12)(54x8)(34x14)VJZSILTGZWMCZLOJSZHTQVVAZSPWHAKVFO(8x3)XCYTBHDX(221x9)(60x1)(1x2)M(17x13)PIRWGCEZQNSPPUBHK(23x10)YJEVBSPQYKPLPDOSCEHYSSA(78x12)(2x6)YY(21x5)TMWGVWVOZDOFGCFEZJRJR(32x5)ENWXNGFHIYQHCBWQEDTMBOWQKJIHAZHY(1x1)E(18x9)(2x1)OD(5x11)GGATR(32x11)(13x9)VZVAFSADAUIGI(8x2)JOUUXRCU(1x11)I(8x7)(3x8)PCV(75x3)(46x4)(28x9)PJXDTVYIRKASKJMXDIGAXSQPMPWK(6x11)SUYPHC(4x13)CBMV(8x7)QAUWLDLP(83x8)(19x7)DDNWFTSHJSTPWECIXWZ(6x5)EQWGSJ(1x5)O(20x6)(13x10)MNFVFUCESZDMF(9x15)(4x3)JZSU(7x12)(2x9)UZ(228x2)(220x15)(49x2)(1x10)C(5x9)TCPJZ(6x7)FJSPSS(4x14)FYQF(5x15)XBWKH(75x10)(5x15)KTHBO(12x5)LLZEFONZKCBI(28x5)RGMNFEEHBHZJKTMPVEPHIOJUXOMB(7x9)YWTZNCT(60x14)(3x10)DAN(15x6)BHOSLMFSEQKOGEX(1x4)D(17x11)SULIDVKKLXIWAJXRK(2x7)PX(4x1)TKPO(9x8)QFXUEZUGP(2331x2)(2323x8)(202x13)(10x13)(4x14)GFSR(178x4)(101x11)(21x9)(5x9)SWRRL(6x8)TYXYPJ(68x5)(4x10)QMJZ(19x15)APBTUGYPJQFQODZRNAC(5x13)YIVAO(14x14)QHWPZNQSRZJIEC(63x2)(32x10)(5x4)EVMQL(15x12)SAOYGPDXFSDOBTB(6x8)(1x5)C(7x13)MILUDKF(144x5)(3x8)PLQ(129x7)(27x3)(7x13)QLVZTAJ(9x4)JNLNRKPXA(4x13)EEXX(17x9)(11x9)SYQBWQASJPK(57x8)(29x8)(15x11)CFVXGJKXAAKNRRT(1x15)A(1x4)C(10x5)EFFLNXDEVJ(664x6)(357x6)(82x8)(7x12)LPCKKIX(55x10)(6x4)KXJNIR(2x4)IH(5x6)VIUMV(11x10)TCNXEQRMQJZ(4x7)DREZ(2x8)IV(119x7)(21x13)RHDEMDBNRPLOTSZRKZSHA(47x2)(22x2)ZADHZNUARPTFHKEXJKCWXY(7x6)OACRTYP(1x15)P(31x10)(5x4)VSWJT(7x1)IGAMFHI(4x3)GOCU(26x5)(19x13)(12x15)WGYBKVRPMWJT(15x7)IFUICWKGGCLHCOO(83x12)(62x8)(20x10)TJBGZCIWVKOROYITLBUA(7x11)UDSMGLK(6x3)FWPTWW(6x4)JECWEE(9x13)CUQMJOFWT(292x11)(68x14)(61x13)(28x10)ZRYXMSXXTLGDYHOVDRDVOCFJTCXJ(20x7)HZCFVXJATHXTNPHWFSIS(65x4)(11x6)BETMULBEIND(3x11)VLU(25x5)UYRFOHJXRRSJXEFEOPROCVNOA(3x4)GQJ(95x8)(81x11)(30x12)FXPGOAGXMVWAMAKJTQKJEUZNGCKDXU(10x5)YFDYGXCFTD(10x5)USWAFQFFSA(6x10)ZFVKMB(2x8)SF(16x8)MZPGUBATXFXXJOJS(17x4)AJTTIOULZONRGGMLK(448x2)(28x11)(22x2)(8x13)(3x1)TMQ(2x13)IP(5x6)AJJXN(290x1)(109x10)(5x12)CUMMS(7x7)UEWYDSN(59x12)(2x12)FP(26x3)LWFPYEPAANDDLIOJQBYCRRQYRT(1x2)O(7x10)RXDHAJH(14x6)(9x6)PQLSJTFAO(124x4)(56x12)(12x10)DOOJHOYDOTLM(10x7)VKUFQDGCPT(6x9)ONBPUY(5x5)CMPUW(5x13)WWWWM(16x9)TOPYYTZBFGFAXYBO(14x15)(8x10)FPVBQPNJ(1x15)O(18x1)UTQYAKMVOBJZDLTOVO(12x3)YHILDGGCGZXZ(20x7)(13x15)RVSYRCEYESCUC(73x10)(21x5)(15x4)EHQBVPUAJWTOZKA(22x12)FIWIHPWFDOJTMAXRCKCJZE(11x5)(5x15)PDHSQ(828x13)(1x8)P(161x8)(154x4)(11x3)DAFIIEMOBYZ(6x1)EGJWXU(107x7)(13x2)SRTDQRBOGITPI(6x2)VWSTKU(23x5)GJXMEBCGSIYQNMFLISIUFTB(1x2)D(36x8)GKPPJHVMOOTOCTUHRGVVQUKNHRCZNINYLJGB(6x11)EFSGDL(327x12)(6x2)QAAXCM(5x9)YVLGN(86x1)(10x1)SVFCLDTQEO(2x4)OA(17x15)OAEGSJHUTEFJXDOTD(7x7)HGXVBHJ(20x15)(2x6)XQ(8x5)KDXCQOFM(90x11)(14x15)(9x9)DTJSQPKYW(25x7)(12x11)SYLBSZEMQSQA(1x3)S(11x2)(5x13)KWHSE(4x7)MFSC(7x6)(1x12)F(110x2)(10x1)UIIOJNJJJI(88x8)(10x10)PQCUFWXHMC(15x12)OVVASAWDIIOZYIT(17x3)NLLLZIVNOIVEHGXDP(19x11)CDJEUHEPCUEYVLGYLTJ(311x11)(165x1)(16x7)MUMPDQFLGFEGIYLU(9x11)(3x11)FNP(1x14)U(60x4)(4x7)KDWX(4x1)LKMS(27x11)MIELWFKZJUSUYBARAGTJAZIBEDH(3x1)LDI(48x15)(10x15)DUUYAIZHKY(5x8)KEMNC(14x10)HZTAHRSCICOTIR(4x13)AUNU(45x2)FRDBNRZYFZLCAIEVZWSAIMLGBCDSBHXFPWRPYJRQHNWUZ(28x8)TCHELUEWWRHMIGBKEUCWBTIEVNCB(37x10)(30x11)(6x9)PLWKRH(2x3)PL(7x2)MAFSJHV(6697x8)(172x15)(164x10)(1x9)N(151x2)(7x2)MOYJQSA(24x4)BSZRAIBTDPFAAHQWOWDJJRCW(34x10)(2x15)QB(1x1)T(4x3)ALVX(6x7)SQFSKZ(2x11)JX(54x2)(47x14)(6x12)HOALAK(28x10)DGCVKLTWNKGAGRGSWPVEUGRDAGWA(2577x12)(88x14)(82x9)(48x2)(41x11)(4x5)KAVK(15x4)LCMPETDQZUWBRCL(6x9)CFZJGS(7x15)PGVNKAY(9x12)(4x4)NHID(827x3)(259x9)(153x12)(27x11)(21x4)PQNSUYEFBRAAVCJFJPPGZ(13x4)(7x10)NNSUBSG(70x11)LOGUFNQNLSWWQXBPQIWNJIEDRFUCRCUAVANHFGDEMQZRGSITBSBLZXVWJGXPPDZEXZQCEU(7x10)DTIEEXA(4x13)DDNZ(44x13)(37x14)(8x14)NIJOMVGP(17x1)MDXVVVWIZSXMSGJMC(4x4)ARFY(31x11)(10x14)RVZUREXEUI(1x7)M(3x5)LXC(170x5)(114x3)(83x3)(19x10)UUCHMGESOOTJCTEJVRM(3x5)ZCP(2x10)IU(25x6)TNLNLUTXNPNDWMXGVVGIPVWJL(4x12)JAAA(13x1)UFQFFPMZGZNNN(1x1)V(27x5)EDPBYCEAMMWAIPWUZODVDAWPWIJ(10x1)(4x10)VJHN(73x13)(66x12)(5x1)TAFQR(11x5)(6x8)ATBQTY(5x8)KZYJI(23x1)(17x3)VSDOKMWKSGRRIRXWF(297x5)(11x6)HTGQDOGJQSJ(49x13)(43x1)(8x5)ULVVUCJI(6x11)JAITVW(12x3)ISRQLAPACLXU(25x2)(19x7)(13x2)SRBHDIAPWUMER(51x9)(45x1)(8x9)ADOZRIJD(13x15)JXWDDHBYCJKMO(6x10)SKLMKL(129x8)(111x2)(5x10)ATJGD(22x6)OLATWNGTXFJMTWCJQAQDDA(19x1)WLYAFVAKQECTNXJRBVH(20x11)DDWDXGQEZBKJBDJBAKJB(14x5)TIZKGCXPPUBGSJ(5x14)SEHYY(1410x15)(148x5)(24x2)FHQUELWXQDUWLIBTXEPSQTJQ(111x3)(40x13)(6x7)ZAWWAD(2x15)GI(3x6)XJY(7x14)SCZWIKT(10x1)WMCTELCITD(15x12)(2x8)OD(3x3)IKM(12x2)(7x4)BEEDJSC(2x15)SZ(303x5)(89x2)(70x4)(3x7)ATQ(9x4)WSWYIUPAG(12x8)KDWAUNHURPWB(3x15)ESP(15x7)DANNZUDKDFXXSBO(7x12)VUNUHBI(1x8)M(180x9)(66x1)(20x12)MOUJOXCMCZUPVKVXPKUB(27x5)QHNMIHMVJVBBVCDGHPYOWRHTCLT(1x8)Q(22x13)ADGXYCQHWNAGCLWNPXBPIX(73x9)(1x11)J(27x14)ANTTYLYVSVWEAPXPGRRVWVINHFM(7x10)ZDBZWVE(3x12)ISL(5x4)YDXBZ(9x14)XBPBWAQTR(407x3)(186x1)(36x10)(1x2)W(23x13)DBNCARJKKIAWVQVKNOIPSJO(57x2)(6x9)VKZMPB(3x2)JIZ(22x2)AQWQZQOKXLPZSJTNBJKCXL(4x12)OAOJ(8x8)(2x10)PT(29x3)BKPFZBRCXVJUJJHVOIMJELFFHHBUR(26x5)WUACSRCIRADIQKCXKEESRJNWKU(10x9)RBSMRSUWMK(177x3)(1x10)Q(28x8)(5x5)PQQGD(6x13)LAGOEK(1x5)C(71x13)(16x12)IIAWONMLGHMCHWIH(19x11)KEYESARBBXHWWQWPQVC(1x11)A(9x12)LMADFIHXJ(6x5)MZVRQU(40x12)TOSAJVXJHKVWJKLTVBIUKKESOFCKFOPSXHYCMDXQ(8x15)XGHEISVJ(68x5)(62x3)(4x7)OOWZ(7x15)QNNVWUX(5x10)GSLOA(14x8)(1x8)B(3x3)HJL(3x11)EIK(450x6)(101x9)(30x8)(2x5)MM(17x8)GHTHOCTDDQAYBUVWP(59x8)(1x5)R(3x11)HYR(21x2)STLZXNENUFTGYWNQJHFUK(10x10)NGMEAWPFBI(28x3)LNDWFXKPRAOWKJHWZZIYLJLOOBKK(110x6)(14x2)SALGMMEIINEJOU(40x7)(4x13)AIMA(5x12)GSAFV(13x7)CSLJJRZIBBUMF(21x1)(15x9)THPSZDCPWASRUYR(2x5)EE(5x7)XDUPK(13x10)(7x13)SFWIYYQ(163x10)(26x15)(13x9)HQJQXZQCIHSAE(1x15)K(4x15)FMWB(9x12)SQVQTEWMD(41x3)(13x1)EEYHHJQCDSYRO(9x2)YCDDFHWTG(3x9)LGW(51x12)(7x14)OITBFQF(8x13)FZVMIWUM(9x8)XTZCNFOTE(4x15)KTHY(221x10)(213x14)(32x3)(26x3)GEUNPCYFYLTFFXOKWXFBDYLBMK(77x1)(41x14)(7x11)XBMCCZD(21x11)KFOJGBJCEHPTKBLUSTERX(10x4)IZWNLBDABA(8x3)IVDWYIMO(50x9)(6x5)(1x1)H(4x8)VDKE(2x5)QE(17x3)(11x7)KGYMJEMQVWS(9x4)EVWJYLBBQ(16x8)XZDDQZQPCOLVIYGD(3001x2)(724x14)(235x12)(227x11)(25x5)(1x10)N(3x4)QSO(5x3)XPKCV(24x8)(11x10)XXOIOGOKIOD(1x8)B(88x4)(1x12)I(10x6)CEIKKPKUJG(1x11)Y(6x8)QAYNKJ(41x7)BGKQCYZZGRQGCNXSGYHAXMWIJOPDKLMAQRKGFRBML(66x9)(14x12)YTKTEIISOWYZWB(3x13)UDK(12x2)PXDYSSCHAFSE(2x2)DA(6x1)UZSORT(309x1)(107x1)(81x11)(23x4)UHLCPASWMUWBQPYJSUHUFEO(5x1)NTMAV(26x7)JDNTOBRNEUELJIISZGKNRYSBRE(4x10)FVKZ(13x8)SBNXXTKLMDHII(138x4)(62x12)(55x12)OMRRSQWFPEAXAXHFHHQBWGCESBLWZBVYEQQKYRGILBNJJCAOXFHDIXU(19x13)(4x5)CVBF(5x9)EBLEV(15x1)(9x13)BATHCHMGP(16x1)BGSXRPQUKQJYDIPV(44x3)(8x1)(3x1)EWQ(7x12)JJIVUYJ(12x7)XJSYYYTSZBHD(7x14)EDHTGLH(144x13)(130x4)(12x7)(6x14)CYDLYL(43x2)(4x10)DOTG(4x8)ELJI(6x6)QGMRSQ(1x4)K(2x9)GS(40x2)(11x10)CDHAMRCSTVC(8x11)WMZDTRTD(2x14)XS(11x4)IXUNDJVBLSO(2x3)CH(7x7)(2x5)NF(1015x9)(204x1)(20x10)GPKSBZZRRZGMFICXNMIX(141x9)(24x9)NXNCFLIWVVVQNVKDRUTQYNJB(3x8)AXD(33x6)MDGPOLEPZEUNBDWGBSAFRPEMTKUXIJDRA(33x11)(2x15)PY(5x1)XYUAI(9x14)UPOUZTFRQ(17x10)YAMBZLTZMBSRFZOUK(5x10)NXKJE(11x15)GNJTBTSXLTN(299x9)(29x1)(22x10)(5x13)FSAYZ(5x14)MWJOX(178x9)(79x14)(21x12)WXTCOEECSKHDITBOAAVSF(6x15)INXWKB(8x11)NTSEQSMQ(19x1)UTQUQGUDXSFROLQWKVZ(76x6)(3x2)QOL(10x15)UIGYPYAWRR(7x7)JEELSVH(13x12)RUBSHAXAWQGYF(12x12)PGQUXPKEKXRN(4x15)BQEB(8x4)(3x1)AVE(59x15)(11x11)QGBFDCZTADF(22x8)(7x7)RJEZNHA(4x11)MMJN(8x7)(3x7)GNT(174x1)(166x12)(17x2)ZDOBQSATWXMNNJDCV(17x13)(10x14)CATNORVTYK(95x10)(9x5)LROSBZBVM(29x2)ZQBDHDVQJGZTGKDBOSHXOCVXYOSKC(22x11)FXLGIAQRSIJQCGUQPFJXFM(3x8)HSE(3x11)JVV(11x2)(6x7)YCATPH(206x5)(133x6)(31x8)(8x5)YTYSRRBZ(4x13)UYBY(3x6)SJW(32x4)ZCNRDWQGEMLBOCMJMCAJJVJPLIQXSTSG(52x3)(12x10)ENCLYDJSGEYW(13x15)EXRYDALLRZKCF(8x1)RIVKPAAB(8x14)GUSBQGHU(46x2)(1x5)P(34x8)(16x3)GDVLVDXNKOCDWQJI(6x15)YGGNZJ(98x6)(91x10)(11x5)RVKZVECGFPV(8x12)(3x7)URB(54x1)(11x12)JPMMFXPJPMQ(5x1)ZKRGP(19x13)ZJIYXFENCFNAFOEFUNL(1225x12)(534x15)(214x13)(64x15)(5x7)PZQBH(25x10)XSZONMJVANCJZOJPAAEJSRYGT(16x5)PQPCLAYGZUDSQKTZ(83x8)(40x6)ZKUMBQGMGPGEAKSJHFSIPNWEKXZEHBJUUSCVWYMY(10x5)CMXYJOWZZN(6x1)WPARZQ(4x14)FAYY(16x1)(1x11)E(3x12)MLF(25x11)(3x8)BRT(10x14)OGKXRSWWPD(4x1)VFBM(227x12)(150x2)(25x10)YFBSVADMLPNYAIXAPMBRZPTCO(8x14)PKGEMLYV(50x10)DKUPPNRQKKWAJIQCFKGQVRSXTUWPVNQZESPGLNQWMVMAOCORMP(9x6)HVKQYKZAH(26x10)RQQPTHCFQFHIBMEATIAVVKWDWG(57x9)(8x10)QVILTCPK(36x13)LUDTUSNBRJNJCTXOFFMWIMAMWBKXHMMENNSW(2x7)ZQ(62x5)(25x8)(5x15)GCZUZ(9x1)JPDRQMLTB(24x13)YTTGOHFCVHRRGLESEARVNFPQ(178x5)(42x2)(21x15)(8x5)RPZICSEL(3x4)YIL(8x13)(2x11)GF(84x11)(70x2)(7x5)MWWDPMK(7x11)TEYJOFJ(31x1)TWNBXEDRILLPRUGJDBIVBFYNVHGLUED(3x8)VDU(3x9)YYV(7x4)(1x12)L(21x1)(1x4)M(1x8)J(4x3)XJGN(491x9)(148x8)(36x3)(2x9)MG(13x11)EDWPZURXZWLML(4x1)VRBX(31x11)(14x8)KBLQBMRGRGKHCT(5x14)PRDLH(3x8)CQB(32x15)(10x15)RLWBNSAEHH(3x3)HPB(2x2)PA(15x2)TKPIZXDBJJMAZDR(133x8)(1x6)B(83x8)(13x10)WNSKNXUSTCDKE(4x8)NMAW(6x6)EJRNHD(4x14)MLJN(27x5)ZQBFSJWECOPVETZPGXQJPPDQZEL(22x1)(16x1)ZSEPLZISVDFRGRJB(4x13)YRXG(39x2)(33x7)(16x9)HMRXYWRBVITBVWTG(6x2)LCYRSW(123x13)(31x12)WVTWWQZUYGBJOSPKLUQTAGWXXURUDLI(34x10)(7x5)ZTTMEQS(2x8)YX(9x13)ROIYTCKSX(28x13)(3x9)WPV(13x14)PQHWCFNXKFFOH(3x15)EUZ(14x7)(8x15)UHHVOLEJ(914x15)(782x12)(448x5)(118x6)(26x12)(4x12)BLTT(10x2)REYZXYJJFQ(39x8)(8x6)XEWKRGZT(3x8)ECB(5x9)GOBWQ(3x2)KKM(34x7)(18x11)QSQRCJXLCKUYJBPSWG(4x9)XOSJ(34x5)CIABSNSBNQQKAARJOOETKSXJIPOFQOMAPK(24x13)(3x7)ADL(10x3)RVSLAIXAJJ(67x7)(52x9)(3x2)AJH(3x6)OGK(4x9)SQFL(1x1)T(14x14)BQZZXEWSTOKEUA(3x13)HBM(171x14)(25x9)YKLMFOEYQHSODISORNEKDIGVY(12x6)(6x13)OFJBKW(53x7)(21x11)GINJQDIXMAWRHIHJLXFIP(19x8)SVTFKYTLPWYEWWFIUPB(16x12)(2x1)PB(4x8)TMWZ(33x15)(5x3)QBMUH(10x5)UHNESLDFMY(2x4)WW(9x2)(4x7)QTKW(94x10)(47x10)UUVWDQXOXQUFEROVLOZRXIHEPHTWRPSGHLNSYGNIVHEDQGV(34x3)(21x4)(7x9)IMCZEIB(4x2)TNMA(2x9)DM(192x6)(2x7)ZF(2x3)VU(6x13)DODXJG(158x15)(1x4)K(42x12)(2x8)RM(4x6)YMIM(5x2)BXKIG(10x1)ZWQMIAOBEY(78x8)(7x1)XHAETJV(28x1)QPKULGVENLMJWWEHOROJEESLKYTA(3x5)XMZ(18x1)FZBLVDOKGEZKOBICEO(13x9)MWICPPUEWVWKH(7x10)KVNGSWM(116x10)(26x3)(20x8)(8x12)SSVBYWJX(1x9)H(77x14)(12x3)OWHWKICESREK(1x11)D(46x3)(11x5)(5x15)ORJRA(1x13)K(16x3)XRJXBYVIUITRPPYRRNHU
diff --git a/adventofcode16/data/advent10-test.txt b/adventofcode16/data/advent10-test.txt
deleted file mode 100644 (file)
index e9ad2b4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-value 5 goes to bot 2
-bot 2 gives low to bot 1 and high to bot 0
-value 3 goes to bot 1
-bot 1 gives low to output 1 and high to bot 0
-bot 0 gives low to output 2 and high to output 0
-value 2 goes to bot 2
diff --git a/adventofcode16/data/advent10.txt b/adventofcode16/data/advent10.txt
deleted file mode 100644 (file)
index bcede34..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-bot 123 gives low to bot 191 and high to bot 162
-bot 191 gives low to output 9 and high to bot 192
-bot 182 gives low to bot 175 and high to bot 196
-bot 113 gives low to bot 172 and high to bot 94
-bot 78 gives low to bot 37 and high to bot 25
-bot 187 gives low to bot 125 and high to bot 45
-bot 71 gives low to bot 108 and high to bot 61
-bot 154 gives low to bot 2 and high to bot 64
-bot 142 gives low to bot 110 and high to bot 163
-bot 109 gives low to output 0 and high to bot 43
-bot 198 gives low to bot 101 and high to bot 52
-bot 138 gives low to bot 9 and high to bot 47
-value 5 goes to bot 189
-bot 179 gives low to bot 176 and high to bot 14
-bot 115 gives low to bot 82 and high to bot 181
-bot 101 gives low to bot 90 and high to bot 5
-bot 9 gives low to output 5 and high to bot 149
-bot 181 gives low to bot 0 and high to bot 27
-bot 119 gives low to bot 207 and high to bot 65
-bot 202 gives low to bot 69 and high to bot 154
-bot 100 gives low to bot 206 and high to bot 169
-bot 72 gives low to bot 205 and high to bot 12
-bot 146 gives low to bot 8 and high to bot 106
-bot 58 gives low to bot 180 and high to bot 123
-value 37 goes to bot 1
-value 61 goes to bot 144
-bot 205 gives low to bot 169 and high to bot 3
-bot 91 gives low to bot 76 and high to bot 84
-bot 93 gives low to bot 122 and high to bot 100
-bot 76 gives low to bot 147 and high to bot 89
-bot 102 gives low to bot 11 and high to bot 23
-bot 43 gives low to output 11 and high to output 12
-bot 128 gives low to bot 15 and high to bot 85
-bot 137 gives low to bot 112 and high to bot 2
-bot 88 gives low to bot 103 and high to bot 55
-bot 162 gives low to bot 192 and high to bot 141
-bot 183 gives low to bot 49 and high to bot 81
-bot 127 gives low to bot 113 and high to bot 207
-value 11 goes to bot 165
-bot 28 gives low to bot 62 and high to bot 42
-bot 95 gives low to bot 42 and high to bot 32
-bot 50 gives low to bot 160 and high to bot 194
-bot 68 gives low to bot 133 and high to bot 142
-bot 20 gives low to bot 208 and high to bot 203
-bot 178 gives low to bot 182 and high to bot 54
-bot 120 gives low to bot 102 and high to bot 99
-bot 131 gives low to bot 67 and high to bot 83
-bot 21 gives low to bot 111 and high to bot 69
-bot 27 gives low to bot 46 and high to bot 193
-bot 98 gives low to bot 63 and high to bot 22
-value 13 goes to bot 7
-bot 121 gives low to bot 155 and high to bot 146
-bot 41 gives low to bot 153 and high to bot 53
-bot 75 gives low to bot 100 and high to bot 205
-value 43 goes to bot 4
-bot 206 gives low to bot 151 and high to bot 77
-bot 0 gives low to bot 95 and high to bot 46
-bot 208 gives low to output 14 and high to bot 126
-bot 40 gives low to bot 187 and high to bot 184
-bot 184 gives low to bot 45 and high to bot 124
-bot 60 gives low to bot 188 and high to bot 202
-value 67 goes to bot 198
-bot 145 gives low to bot 22 and high to bot 108
-bot 197 gives low to bot 195 and high to bot 190
-bot 203 gives low to bot 126 and high to bot 51
-bot 87 gives low to bot 51 and high to bot 179
-bot 64 gives low to bot 128 and high to bot 85
-bot 1 gives low to bot 198 and high to bot 173
-bot 29 gives low to bot 71 and high to bot 168
-bot 47 gives low to bot 149 and high to bot 113
-bot 165 gives low to bot 80 and high to bot 135
-bot 112 gives low to bot 162 and high to bot 174
-bot 149 gives low to output 1 and high to bot 172
-value 41 goes to bot 80
-bot 5 gives low to bot 136 and high to bot 62
-bot 143 gives low to bot 97 and high to bot 41
-bot 86 gives low to bot 145 and high to bot 71
-value 59 goes to bot 147
-bot 57 gives low to bot 30 and high to bot 188
-bot 36 gives low to bot 150 and high to bot 30
-bot 135 gives low to bot 44 and high to bot 117
-bot 134 gives low to bot 16 and high to bot 35
-bot 167 gives low to bot 28 and high to bot 95
-bot 22 gives low to bot 127 and high to bot 119
-bot 26 gives low to bot 81 and high to bot 16
-bot 33 gives low to bot 6 and high to bot 78
-bot 171 gives low to bot 186 and high to bot 17
-bot 16 gives low to bot 96 and high to bot 33
-bot 118 gives low to bot 117 and high to bot 56
-bot 199 gives low to bot 98 and high to bot 145
-bot 188 gives low to bot 21 and high to bot 202
-value 29 goes to bot 164
-bot 169 gives low to bot 77 and high to bot 140
-bot 96 gives low to bot 181 and high to bot 6
-value 71 goes to bot 201
-bot 194 gives low to bot 87 and high to bot 150
-bot 160 gives low to bot 203 and high to bot 87
-bot 15 gives low to bot 158 and high to bot 105
-bot 42 gives low to bot 166 and high to bot 39
-bot 133 gives low to bot 54 and high to bot 110
-value 47 goes to bot 13
-bot 31 gives low to output 8 and high to bot 9
-bot 159 gives low to bot 74 and high to bot 155
-bot 157 gives low to bot 12 and high to bot 187
-bot 176 gives low to bot 139 and high to bot 58
-bot 35 gives low to bot 33 and high to bot 78
-bot 90 gives low to bot 148 and high to bot 136
-bot 122 gives low to bot 70 and high to bot 206
-bot 114 gives low to bot 72 and high to bot 157
-bot 55 gives low to bot 40 and high to bot 184
-bot 37 gives low to bot 193 and high to bot 25
-value 31 goes to bot 13
-bot 107 gives low to bot 99 and high to bot 93
-bot 14 gives low to bot 58 and high to bot 38
-bot 77 gives low to bot 86 and high to bot 29
-bot 116 gives low to bot 79 and high to bot 170
-bot 23 gives low to bot 132 and high to bot 70
-bot 148 gives low to bot 144 and high to bot 120
-bot 195 gives low to bot 170 and high to bot 185
-bot 185 gives low to bot 138 and high to bot 63
-bot 62 gives low to bot 107 and high to bot 166
-bot 174 gives low to bot 141 and high to bot 128
-bot 7 gives low to bot 91 and high to bot 11
-bot 3 gives low to bot 140 and high to bot 34
-bot 12 gives low to bot 3 and high to bot 125
-value 7 goes to bot 148
-bot 70 gives low to bot 161 and high to bot 151
-bot 89 gives low to bot 116 and high to bot 195
-bot 108 gives low to bot 119 and high to bot 204
-bot 201 gives low to bot 1 and high to bot 104
-bot 18 gives low to output 15 and high to bot 208
-bot 66 gives low to bot 177 and high to bot 130
-bot 189 gives low to bot 165 and high to bot 177
-bot 48 gives low to output 13 and high to bot 18
-bot 186 gives low to bot 189 and high to bot 66
-bot 82 gives low to bot 167 and high to bot 0
-bot 92 gives low to bot 201 and high to bot 49
-bot 144 gives low to bot 7 and high to bot 102
-bot 97 gives low to bot 146 and high to bot 153
-bot 104 gives low to bot 173 and high to bot 82
-bot 74 gives low to bot 83 and high to bot 50
-bot 49 gives low to bot 104 and high to bot 115
-bot 172 gives low to output 20 and high to bot 48
-bot 163 gives low to bot 41 and high to bot 53
-bot 117 gives low to bot 26 and high to bot 134
-bot 168 gives low to bot 61 and high to bot 182
-bot 65 gives low to bot 131 and high to bot 74
-bot 180 gives low to output 6 and high to bot 191
-bot 126 gives low to output 19 and high to bot 19
-value 19 goes to bot 186
-bot 166 gives low to bot 93 and high to bot 75
-bot 193 gives low to bot 59 and high to bot 88
-bot 81 gives low to bot 115 and high to bot 96
-bot 207 gives low to bot 94 and high to bot 131
-bot 130 gives low to bot 118 and high to bot 56
-bot 153 gives low to bot 106 and high to bot 152
-value 17 goes to bot 92
-bot 110 gives low to bot 143 and high to bot 163
-bot 192 gives low to output 7 and high to bot 129
-bot 156 gives low to bot 10 and high to bot 68
-bot 83 gives low to bot 20 and high to bot 160
-bot 2 gives low to bot 174 and high to bot 64
-value 23 goes to bot 91
-bot 10 gives low to bot 178 and high to bot 133
-bot 103 gives low to bot 157 and high to bot 40
-bot 61 gives low to bot 204 and high to bot 175
-bot 63 gives low to bot 47 and high to bot 127
-bot 105 gives low to bot 200 and high to bot 24
-bot 79 gives low to output 10 and high to bot 31
-bot 73 gives low to bot 168 and high to bot 178
-bot 19 gives low to output 2 and high to bot 139
-bot 125 gives low to bot 34 and high to bot 156
-bot 56 gives low to bot 134 and high to bot 35
-bot 44 gives low to bot 183 and high to bot 26
-bot 4 gives low to output 3 and high to bot 79
-bot 155 gives low to bot 50 and high to bot 8
-value 73 goes to bot 101
-bot 38 gives low to bot 123 and high to bot 112
-bot 151 gives low to bot 199 and high to bot 86
-bot 17 gives low to bot 66 and high to bot 130
-bot 13 gives low to bot 171 and high to bot 17
-bot 190 gives low to bot 185 and high to bot 98
-bot 161 gives low to bot 190 and high to bot 199
-bot 139 gives low to output 16 and high to bot 180
-bot 99 gives low to bot 23 and high to bot 122
-bot 53 gives low to bot 152 and high to bot 60
-bot 94 gives low to bot 48 and high to bot 67
-bot 132 gives low to bot 197 and high to bot 161
-bot 150 gives low to bot 179 and high to bot 209
-bot 173 gives low to bot 52 and high to bot 167
-bot 45 gives low to bot 156 and high to bot 124
-bot 30 gives low to bot 209 and high to bot 21
-bot 67 gives low to bot 18 and high to bot 20
-bot 84 gives low to bot 89 and high to bot 197
-bot 8 gives low to bot 194 and high to bot 36
-bot 59 gives low to bot 114 and high to bot 103
-bot 209 gives low to bot 14 and high to bot 111
-value 53 goes to bot 76
-bot 69 gives low to bot 137 and high to bot 154
-bot 46 gives low to bot 32 and high to bot 59
-bot 111 gives low to bot 38 and high to bot 137
-bot 196 gives low to bot 121 and high to bot 97
-bot 52 gives low to bot 5 and high to bot 28
-bot 11 gives low to bot 84 and high to bot 132
-bot 204 gives low to bot 65 and high to bot 159
-bot 164 gives low to bot 92 and high to bot 183
-bot 24 gives low to bot 109 and high to bot 43
-value 2 goes to bot 171
-bot 51 gives low to bot 19 and high to bot 176
-bot 136 gives low to bot 120 and high to bot 107
-bot 147 gives low to bot 4 and high to bot 116
-bot 25 gives low to bot 88 and high to bot 55
-bot 129 gives low to output 18 and high to bot 158
-bot 152 gives low to bot 57 and high to bot 60
-bot 39 gives low to bot 75 and high to bot 72
-bot 124 gives low to bot 68 and high to bot 142
-bot 141 gives low to bot 129 and high to bot 15
-bot 85 gives low to bot 105 and high to bot 24
-value 3 goes to bot 90
-bot 80 gives low to bot 164 and high to bot 44
-bot 54 gives low to bot 196 and high to bot 143
-bot 34 gives low to bot 73 and high to bot 10
-bot 175 gives low to bot 159 and high to bot 121
-bot 32 gives low to bot 39 and high to bot 114
-bot 140 gives low to bot 29 and high to bot 73
-bot 200 gives low to output 17 and high to bot 109
-bot 106 gives low to bot 36 and high to bot 57
-bot 177 gives low to bot 135 and high to bot 118
-bot 170 gives low to bot 31 and high to bot 138
-bot 158 gives low to output 4 and high to bot 200
-bot 6 gives low to bot 27 and high to bot 37
diff --git a/adventofcode16/data/advent12.txt b/adventofcode16/data/advent12.txt
deleted file mode 100644 (file)
index 538e9ea..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-cpy 1 a
-cpy 1 b
-cpy 26 d
-jnz c 2
-jnz 1 5
-cpy 7 c
-inc d
-dec c
-jnz c -2
-cpy a c
-inc a
-dec b
-jnz b -2
-cpy c b
-dec d
-jnz d -6
-cpy 18 c
-cpy 11 d
-inc a
-dec d
-jnz d -2
-dec c
-jnz c -5
diff --git a/adventofcode16/data/advent15.test.txt b/adventofcode16/data/advent15.test.txt
deleted file mode 100644 (file)
index 3683605..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Disc #1 has 5 positions; at time=0, it is at position 4.
-Disc #2 has 2 positions; at time=0, it is at position 1.
-
diff --git a/adventofcode16/data/advent15.txt b/adventofcode16/data/advent15.txt
deleted file mode 100644 (file)
index d2463d1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-Disc #1 has 5 positions; at time=0, it is at position 2.
-Disc #2 has 13 positions; at time=0, it is at position 7.
-Disc #3 has 17 positions; at time=0, it is at position 10.
-Disc #4 has 3 positions; at time=0, it is at position 2.
-Disc #5 has 19 positions; at time=0, it is at position 9.
-Disc #6 has 7 positions; at time=0, it is at position 0.
diff --git a/adventofcode16/data/advent20.txt b/adventofcode16/data/advent20.txt
deleted file mode 100644 (file)
index 222a0d9..0000000
+++ /dev/null
@@ -1,1029 +0,0 @@
-1397985562-1399927095
-3833336583-3842601761
-155087348-169525214
-980790001-1002844256
-1977065361-1995466542
-36411396-50881439
-3640866817-3644930814
-2920060305-2932561292
-2865550534-2890593328
-3904139550-3908601694
-732092457-735186747
-1787486182-1806545011
-1491600386-1521258835
-2566773511-2568507598
-2201927929-2217336001
-948934267-952537088
-2146567862-2152339711
-3301828099-3306223909
-476027067-495966189
-2724939184-2726302873
-2270442513-2292973307
-1889038911-1895488302
-1578483230-1586330750
-2640456298-2651236024
-4254290660-4256486512
-1399927096-1421446962
-3253590561-3255525299
-4165315034-4173427102
-2875463797-2888803426
-3656533491-3659451752
-1995466544-2025204494
-3947779886-3987268039
-1521258837-1538635254
-735486056-744123494
-230221149-237996554
-3652971511-3653104884
-3019667516-3024190047
-969642901-977292032
-3645248112-3645595401
-3107902888-3148345903
-3202431537-3216963208
-1220746925-1223070151
-3267241325-3270573499
-903635659-931632639
-2847235008-2856948110
-4224654922-4236958325
-856464812-859836714
-1804748836-1825290046
-4082899236-4091369419
-953634177-954158487
-185823994-190243500
-1964052811-1976412955
-2420916052-2424566745
-953985134-954947310
-2584348542-2614406629
-2191157950-2198152569
-792721019-802271235
-3791161572-3800845341
-1864843815-1865425121
-1974124152-1989195256
-7825290-22939478
-440787397-441318113
-43830518-44800277
-3060173435-3065634268
-3165692093-3169381847
-1833191664-1858547431
-1931833201-1935239219
-57759373-67515020
-4113876528-4114024438
-1942285042-1951328312
-1604942683-1619936021
-853121890-865841853
-1837742103-1838104083
-3653104885-3680835942
-461163769-461467242
-3154277391-3159331043
-1689521647-1696389379
-4132416435-4154260806
-3575213588-3600527150
-962221692-989154668
-1935239220-1964052809
-853763614-856527667
-1529882226-1553729207
-2908870325-2931754108
-2317225465-2326207645
-550660010-557063544
-2362374340-2370047564
-3154439917-3169895876
-2971931902-2973888167
-3915276202-3919826635
-3443104535-3459421692
-2452320784-2463651682
-2645465344-2652262587
-623576471-624671363
-251678316-253256260
-3892899041-3898838343
-464002012-476960875
-3778510328-3794259788
-1032494594-1042075604
-1726869059-1729493515
-3050865580-3058403387
-4096451268-4105743850
-1794978532-1818366498
-1687963887-1693429657
-1919840326-1931792580
-3890085195-3896657673
-687727514-697989805
-2130251157-2132529361
-3709755147-3710261877
-2103854130-2136933959
-1240822471-1247567713
-2490928812-2517604025
-2792885084-2793563605
-4033319760-4037319553
-643767762-679821627
-2244191155-2263679816
-783204448-826857019
-874202754-876456673
-944792902-949779600
-1014490072-1020320091
-3709667893-3710060580
-3034067373-3060173434
-2380617387-2398492444
-3913418161-3925664598
-1327421559-1355573458
-2029296660-2060654925
-1015438314-1024776747
-758467105-766508249
-3196737715-3203535886
-4113219652-4113918216
-1900161068-1903498607
-737196603-742913680
-2762651281-2782581391
-1241724970-1273412553
-2234377553-2234408980
-3485475801-3485850742
-2823889184-2825719103
-546429220-552909166
-3889312069-3891497364
-1402469948-1411853934
-1612881279-1613899725
-609769932-611526589
-2821381184-2837715581
-2793443367-2793757783
-3865830130-3882113243
-2302840856-2330280758
-1587820493-1589487382
-1925168590-1930014298
-139238032-141721873
-3159767763-3165446614
-3124692923-3128639222
-2270740594-2281991663
-1338789977-1355677780
-1748641567-1751344173
-1416549076-1421417040
-4096185893-4097103352
-2627343873-2650750532
-3948622110-3962424399
-3734105837-3770337993
-557813236-573792261
-551603476-555886358
-1030836305-1032494592
-1839182718-1840151300
-833662859-842106273
-1375985004-1393778055
-1219332117-1221436570
-191846359-198587644
-984829875-987740125
-3262588159-3269982376
-4113255424-4114203177
-3754035901-3768277382
-182356017-189508231
-4235072872-4237128944
-2423845665-2424035634
-2247134633-2249391253
-1857070653-1864762228
-2960971255-2986516950
-3609807449-3629876533
-4232009521-4238664410
-2517604027-2532315540
-2284458125-2290950480
-1864762230-1865525184
-1534410012-1552842249
-1413197933-1418525745
-943004746-952141611
-3692615771-3699711756
-1641152229-1667111341
-3747007580-3765218619
-2379349853-2380702573
-2147254282-2171495074
-1839659452-1840812997
-3895746954-3895831312
-1969771475-1979046124
-3083853152-3107315352
-3503489045-3537546786
-2926162506-2931745365
-1533535067-1553811000
-4201206086-4201731554
-3151335418-3163702483
-3589540929-3593463200
-1469107231-1474901685
-1696389381-1748641566
-3910219915-3918863153
-3431523383-3432952214
-4219640842-4234037045
-2150930801-2173615229
-3364393582-3403187084
-3294593092-3301828098
-690072645-725395887
-1123029535-1135646014
-122125578-124303606
-4157086822-4157139009
-3561413702-3569934827
-3814389694-3815485217
-1931792582-1935186677
-3601713750-3623094300
-2322435284-2327697391
-1362099577-1366674586
-628898939-635522883
-3117359644-3135324932
-1119748429-1139457622
-3998554882-4014887284
-2837930003-2838092963
-2123885505-2126641084
-559576606-579617582
-2712491763-2723761235
-1391544337-1397769783
-3416595318-3422405875
-3403187085-3409221687
-1096346351-1099114997
-2703273295-2705328183
-4113785067-4113908859
-206706372-209083880
-3270160481-3271551430
-3285776930-3292794583
-461234099-461937747
-750957483-775003729
-4184090903-4204400455
-362276042-362676210
-4249953310-4250510076
-3477313433-3479866795
-3421127715-3428203812
-900263617-943004744
-835969757-836263940
-1368935057-1381717988
-149206242-166300349
-2154227228-2154605899
-1906507809-1919840325
-305745049-306370999
-1726861064-1728699678
-1357107426-1362288056
-799761595-801167452
-229374054-231369444
-1529834231-1535566821
-754999390-757160209
-1889190091-1897618002
-2138256423-2146567860
-2295710373-2336599718
-1019914990-1023404843
-969695821-980184547
-1443906340-1473362681
-833198360-836801840
-1598512205-1604942681
-3199387842-3210382637
-3895688557-3895758051
-1377900216-1382117658
-3504189983-3527083803
-3577792742-3598561740
-613575187-632091293
-2551456957-2551799726
-4058092124-4103653807
-3381308208-3381342063
-13984873-15227949
-1727002523-1727443872
-2357289728-2361812594
-3876054666-3879516291
-3278228783-3281894754
-1640252019-1649137061
-2372620720-2374166948
-4109383543-4110464683
-2069304258-2091857479
-4107063052-4115320079
-700724903-704038468
-2443015838-2445045788
-2487239190-2506741363
-2840932452-2854276703
-3023346911-3024737732
-855982891-864879970
-3794259789-3803801069
-500728802-502979928
-2043915271-2045977041
-2883286342-2889401600
-3645471325-3645615199
-2570503460-2572567939
-602978860-611682641
-3014237470-3019165777
-82763197-99917251
-3459591973-3480841023
-3726344670-3753436804
-778825357-781459133
-3501129290-3535003794
-2110603192-2124722020
-783458439-789801399
-3244733157-3257526606
-3107315354-3107902887
-3485245437-3487101327
-2981323037-2986657197
-4250870060-4262722661
-402547398-411983817
-1723037247-1732297154
-2168632715-2175630061
-35807058-48835050
-3967606126-3981776003
-1175337592-1177759663
-531093126-538642617
-3639437354-3641516465
-2313078075-2334991622
-2166324817-2172350995
-4271478996-4279496401
-4224492579-4228356386
-213570433-219586693
-3577738508-3578878626
-2004747361-2023251091
-638907979-651338734
-2042269899-2052960282
-3459421693-3470010193
-1255554697-1256876442
-547623253-554247422
-1091999863-1096115712
-3603876264-3620115458
-3743564125-3764787998
-1727097235-1727512693
-3360184134-3361837705
-2693328393-2699639043
-944625756-949285354
-2867948986-2885571238
-3815862045-3817192748
-85521215-90999860
-3492959364-3496450746
-2370047566-2373514273
-978064227-982934994
-3002922234-3034067371
-3702198906-3708772192
-1762248212-1777087215
-3200048313-3217284316
-310731268-314864040
-4256139187-4257030493
-4225267250-4242760473
-4236421277-4249953308
-456593320-464031864
-4173427103-4219640840
-3415471996-3417373524
-517786225-518353134
-2348225752-2349209975
-988767498-1002507583
-251787031-253294331
-2049843175-2053651832
-3272267359-3280700773
-1880334878-1897812119
-2180116083-2181662625
-1325501561-1332569991
-1977956589-1980243809
-1419475215-1429076341
-1571066989-1593324419
-1908591293-1926977363
-892862026-900263616
-2375708935-2420847226
-4252569311-4259706067
-611682642-636576980
-4069864506-4088316591
-3429899073-3443104533
-2881173909-2904242568
-838248538-839457347
-1040048945-1048427339
-2790325698-2817756908
-259065357-260284546
-4251177319-4254787503
-1727035024-1727220036
-1750189264-1751440819
-1182854783-1199103982
-1565110550-1598512204
-1870272544-1906507807
-2294404836-2313311754
-605934295-611508831
-3164119802-3167924307
-1833545461-1834287253
-2077509652-2090604632
-2880238444-2890262424
-1142031337-1148518669
-4005987455-4006591959
-1570054798-1576009746
-2071505543-2096650688
-3485106835-3485722365
-577813461-602978858
-2776866362-2786901141
-652895584-671838947
-3299449839-3300020065
-1623460193-1638054811
-3340666115-3353087971
-2160043893-2166478186
-1096507969-1101378526
-800088830-803013264
-13565145-17743483
-85024888-98806837
-3823224649-3827480049
-3931062541-3938277752
-1012892921-1030836304
-1565255853-1583189516
-1647708193-1660811906
-657010776-666847464
-1839278378-1840330117
-1008973854-1015912839
-1910283066-1913763928
-837557263-838411350
-1282815406-1288995029
-3980611-5584893
-3148345905-3165692092
-2742421263-2776592447
-229688447-231610502
-2743245719-2776866361
-3878098271-3883221309
-801316931-804135040
-1471664269-1473302685
-1667111343-1669791317
-1610947175-1617629889
-2003085048-2013051153
-3307457133-3360184133
-1195340209-1203343093
-2025204495-2028453665
-32923438-47156091
-3168696227-3170592073
-3235742576-3255614827
-2266729227-2280080556
-775349160-775813901
-1473362682-1482720843
-3572312385-3575213587
-528189743-538093910
-2448613175-2454994921
-2843283603-2855830818
-2890593329-2907911642
-153191907-164713586
-4043150608-4096451267
-605875663-610305444
-3021650-3111593
-2420847228-2420916051
-4105743852-4113419273
-2460397045-2462412256
-567585936-602788586
-1727082530-1727671255
-4033434900-4037286987
-4144511592-4162791978
-3075535768-3080851776
-1639907267-1641352662
-920282814-940069234
-3826936712-3829839713
-1916925688-1925357559
-1845213589-1860279111
-1854550234-1855331759
-3065495280-3066648567
-170353613-171186253
-3212824412-3220097963
-2853141261-2853700351
-3556640-3614471
-1976412956-1988224560
-3296627900-3297163117
-725395889-749479392
-2233996777-2234267091
-1757843247-1759325879
-4279435928-4280514617
-801130429-802441496
-3751681078-3760769957
-2347982977-2366662085
-4235682663-4235983270
-3496282296-3499776408
-3821333501-3824224274
-2723761236-2742421261
-2827790660-2835001032
-1935288812-1941728417
-1726855325-1728050569
-1726544710-1727430469
-3940016790-3941936080
-546101318-552097193
-4184013882-4199809831
-2425846522-2426458497
-3361306788-3362865310
-453108094-456181406
-860613212-892862024
-362299769-362572315
-17407637-23147236
-3504547466-3505717615
-985733821-987978530
-2735458050-2740276231
-270737999-279345075
-1787997707-1795677405
-3680835944-3709667892
-3818408771-3825605323
-16201770-24236234
-1158649495-1176112357
-952141612-961131855
-2690399120-2697050905
-2837757591-2838004534
-3487101328-3501129288
-3888980907-3889308041
-3139002312-3144216973
-1812389934-1832528171
-4062104130-4081249321
-4109985868-4116611691
-261499681-305729049
-414982559-415941657
-2837715582-2837939443
-1612314605-1613532579
-1847293843-1854555869
-2048771211-2052518908
-701565294-713634431
-208666820-210559343
-2827420738-2834300681
-4141218867-4154796647
-1970845509-1978651442
-1552842250-1565110548
-412226938-422230809
-596789633-599083332
-571536075-580257978
-4162791979-4165315032
-2578608882-2600367385
-2953753655-2967704893
-1620638998-1623460191
-3652181866-3653081107
-1226734954-1263413684
-208300600-209821102
-3019452277-3019912348
-1614701447-1620638997
-3941936081-3996282520
-3237157247-3249234449
-2348186235-2349807460
-3562813382-3565898388
-3710261879-3738818624
-2629772693-2635508362
-2443958025-2447376004
-399974274-423562472
-1778846705-1790086524
-2234646109-2266729225
-1668227842-1689521646
-3549361830-3564965209
-1286877599-1288249900
-2117171419-2125943104
-3620689032-3652181864
-3299261942-3299688775
-1490791491-1514099208
-3817192749-3833336581
-3410915712-3429899072
-541342032-546429219
-918411171-924314929
-2182745019-2185607312
-2212606518-2214621946
-1779983196-1804748835
-1936162035-1950945741
-3704618658-3705051939
-1764680564-1778846703
-2698697285-2709059938
-1326793529-1329535111
-3702328552-3704015912
-2008848662-2015608293
-1231732813-1247626190
-1750754899-1752420348
-1093229127-1099058712
-4234037046-4236997947
-3493552026-3497919102
-3235053958-3252106974
-4018470466-4036608102
-701727470-719544055
-574115703-596179511
-3202587506-3210265222
-698102469-706160479
-1832528173-1833853020
-441673267-452453492
-2911169435-2921998083
-2229856423-2234646108
-2196901664-2204841238
-1675352425-1691381949
-4250455374-4250513503
-3237515102-3260318492
-171161905-175877664
-2581539215-2596898898
-4004311193-4012385537
-1324083574-1324546090
-4096883078-4097164771
-780817620-784569858
-208242283-211110211
-1330525084-1336070077
-4008229513-4009226682
-834427868-838848257
-348999024-350410733
-467200453-500728800
-4121379695-4138903168
-2949401565-2976409803
-3917170902-3926057375
-3071781061-3074945017
-3299433864-3300019479
-3894069601-3909653487
-3741129648-3770933677
-1337537272-1347157874
-216818049-245842326
-1626689836-1641152228
-1112292760-1131928222
-1651219196-1654305795
-506374440-513152599
-430626871-453108093
-3297525469-3306042698
-3256944-3556639
-2937659849-2949401563
-3915476081-3917349752
-170273133-170386354
-3896834322-3906255111
-2911101673-2912870470
-2383625542-2388030504
-2202988069-2215864531
-3931566185-3938787313
-3893325063-3903409791
-1677593295-1694860962
-1726429432-1726959531
-550814749-553019695
-328183437-332828273
-2463651684-2490928811
-2532315541-2561777512
-902393943-906380753
-3255012511-3262588157
-464031865-471880579
-987894291-990856994
-2994108099-3016224261
-1464668452-1468573067
-3817599599-3819192240
-4281205900-4284988083
-1610485824-1614835930
-2922504894-2943149643
-1366674588-1391544336
-2716673569-2724196148
-2136933960-2141630673
-952929934-954132488
-102430362-103410808
-1097408788-1102041819
-1411884657-1413275434
-1569519099-1595018443
-3314630119-3351858696
-1159063633-1161383669
-1306210365-1310168207
-65606761-70210379
-969367195-1005028750
-305729050-305810398
-2964351925-2968998528
-2586831864-2598752947
-2717800067-2732550815
-1357733985-1357970980
-3142078167-3146050939
-836110255-836394578
-2855830819-2865550532
-1854118661-1854889002
-3275779087-3291457029
-481061771-497879373
-2572567941-2573814074
-3653825904-3656453968
-1752420350-1764680563
-3381301699-3381332932
-1499205864-1508841960
-2568948534-2571512127
-124303608-171161904
-834540652-842353886
-3296634137-3297348568
-756487393-757398433
-2920277931-2929967348
-775003730-775425950
-4006843235-4009222380
-4173461462-4180792939
-2573814075-2627343871
-3379943605-3385769428
-3613135813-3622915872
-456181408-463675190
-1679128363-1689145745
-1771462652-1775663407
-3896043704-3896601721
-3668521412-3670169542
-3189676166-3211906595
-4178058206-4197742264
-649282356-651528503
-4118830219-4151607552
-3403081369-3405163204
-1295416035-1327421558
-3535003795-3540392660
-2521028658-2521094946
-3378794770-3384471028
-3876141848-3885724936
-3415436447-3434089766
-3236961463-3242080308
-1289735149-1320942247
-20583890-31053879
-2039793197-2062178184
-3361173897-3362649522
-476445996-491796622
-2305715287-2337252117
-1407865145-1413213862
-100343325-122125577
-4259473250-4260027959
-1539624652-1558856769
-3388893007-3406562225
-3815438953-3819219050
-88644450-100343323
-2838092965-2853295826
-2298582785-2308283977
-1911552487-1924425897
-3486137486-3495337804
-3087487707-3105123828
-2449249575-2459990446
-1114195378-1147840884
-3084130783-3090098247
-280604127-291812349
-251655795-252002640
-2065738411-2068050329
-3540392662-3561413701
-4108709270-4110339849
-185357325-191846357
-2988550972-3002922233
-2008583503-2009174592
-367514957-375053863
-3738337-5109287
-2068050330-2103854128
-2185761689-2201113375
-502979929-541342030
-437711847-441825502
-763342493-770307022
-3891568242-3896055908
-2771403009-2783873057
-857296477-865365400
-2372996602-2415318753
-209779549-212434153
-3904992626-3910219913
-2976409804-2983591595
-3614472-4019606
-3429649651-3432451145
-2312224052-2330392688
-3889124925-3889312068
-3368044346-3369236254
-2485542419-2506962662
-3703774963-3704692844
-249324444-259065356
-3038718563-3063082755
-2348008128-2348750596
-4027659985-4040018381
-4020167637-4028011463
-631597603-638907977
-156806924-163856510
-465625162-475575707
-1653345924-1655794173
-644029368-673749955
-1342645425-1348056082
-754961620-757509941
-2185607313-2229856421
-2430693014-2452320783
-2423618253-2423991135
-2578007008-2593849390
-251455290-252167220
-2141431440-2145256393
-461551382-490688234
-1280627802-1282187341
-2447416346-2448485092
-801034819-803950109
-3803801071-3817168598
-2791159575-2797552524
-2444538618-2447695611
-3656900217-3658497760
-362424586-362913246
-2315692184-2318703938
-2658294991-2705851874
-758225777-762221309
-3220097965-3253590560
-3918863154-3937848140
-3842601762-3867989792
-1362989964-1365638761
-2669543622-2698580716
-204441701-216667513
-3337068522-3351226708
-2910214082-2911637865
-2887286425-2894235722
-2556506098-2564781736
-3660974732-3670236178
-3738818625-3765658510
-3926612436-3931754899
-849660339-860613211
-3878152839-3882588354
-1198564716-1203493708
-90563967-91509385
-4113419274-4118830217
-2421569872-2430693012
-1380512818-1382191639
-2171495075-2182745017
-2346496816-2347982976
-2773187116-2776527627
-3264380514-3275779086
-2795335811-2807483836
-1255625643-1259049524
-3039851327-3062062714
-3477125643-3485106833
-368161721-385647773
-557063546-567450813
-2662245837-2698867380
-409471723-415008368
-2692399192-2709671522
-3289361982-3294593090
-2444382077-2446243156
-995864334-1008973852
-1485359185-1511483438
-3170296689-3173219013
-651528504-684359142
-2799805080-2819283989
-2745894337-2761860632
-4021069786-4034189388
-2423235028-2423776100
-1161581883-1172788321
-575303235-584246627
-1323324671-1324380624
-423562473-430626869
-3173219015-3207487851
-256367467-256655264
-2729359684-2736808477
-2979779055-2988550970
-1482720845-1491600385
-1057830454-1067468142
-107593407-117739880
-251911362-252150667
-3569934829-3575123572
-2241251261-2263701349
-2726382705-2727247227
-4037319554-4043150606
-3718405500-3739070428
-2364203325-2366532950
-836023031-836878401
-961131857-995864333
-3961933297-3977917454
-3180447251-3212824411
-3124189059-3126106003
-793312386-802938899
-3873230388-3877536365
-2841402828-2852690950
-2931754109-2946377103
-4097161122-4098833023
-2953494240-2963922968
-1016080923-1023809512
-2305965588-2325470268
-1726429959-1728139098
-1725984972-1746517984
-2280080557-2294404834
-1453817212-1468119920
-3343366097-3354792825
-2726120736-2727168410
-1726047629-1726491275
-2425599810-2428632507
-1127809348-1136655248
-784569859-830872706
-3362865312-3399674855
-467374870-490345878
-2028166733-2029296658
-3793434985-3799550158
-4113324238-4114378130
-2768224805-2776292356
-3076910664-3083853151
-3795367294-3799559727
-983334314-985924731
-2566325429-2567644886
-2079828370-2095628301
-1355677782-1357107425
-3139807-3256943
-2297016509-2339606996
-3937987517-3940016788
-3111594-3180044
-3408799234-3410915710
-2736163676-2737085107
-2927299659-2930923781
-2828368238-2835482134
-2924361649-2933817173
-3278336262-3282205864
-209200196-211114889
-1089312986-1101840140
-2426098602-2426594407
-3761524602-3771101074
-4038400571-4039718550
-4278817904-4281979539
-1971790010-1982080495
-2482451447-2482859303
-696142504-708558552
-832751897-838668629
-522885199-537712867
-3854296653-3860724814
-4250257176-4250870059
-1098058891-1101871591
-2041494246-2044474847
-3379302636-3380200608
-2823631138-2825091086
-3114946479-3141035176
-2564781738-2570503459
-3066648569-3072839529
-2963998950-2966815574
-3996282522-4010140708
-2609189498-2612898027
-1398040334-1399196426
-2705851875-2712491761
-3303896197-3307457131
-3072710194-3078315569
-2650750533-2658294989
-125494120-152726161
-1799712687-1813651344
-4113647358-4114354821
-914689746-931400632
-2334991623-2346496814
-952020939-952231689
-3279484720-3279924084
-826369329-829381680
-306371001-356731744
-2545936899-2562194811
-755902693-769100113
-2423872436-2428440493
-1040252532-1043084518
-2531373947-2564360722
-3758158314-3765326552
-250882458-253102421
-2445299323-2451474922
-2845734926-2859990778
-2571586320-2571725933
-4010140709-4018470464
-1397769785-1398762710
-3812038748-3819957572
-2446738279-2447892957
-3600527152-3609409007
-260284548-271403358
-108405773-115248353
-1910315960-1918268562
-1323436354-1327278720
-2234068374-2234384404
-982370550-984890793
-362487749-363332785
-3703404287-3704710600
-511536791-531472470
-1204860806-1211356557
-1280824569-1283027536
-1864956505-1865664159
-1264539978-1280627800
-838668630-849660337
-1039302291-1048802154
-3820162182-3829891468
-252725400-258978812
-3811611218-3815532558
-5584894-20583889
-2571534738-2571657850
-383938370-391077230
-732225856-735643042
-2968582589-2972324720
-2379822184-2380941432
-775813903-782941501
-836283753-836553990
-2786901143-2790325697
-2907911644-2910586722
-3879031171-3883342655
-2446835992-2450584620
-3604970524-3620689031
-3656986634-3664253237
-108870276-116802953
-50881441-82763196
-830872708-834595234
-948787824-952327285
-3554278607-3558372901
-1411483095-1443906338
-1305613100-1306576996
-1171167570-1175215348
-145365808-166164576
-3344972328-3354937927
-178346121-180017093
-3487950867-3498067707
-3455826248-3468331688
-1357654405-1361499079
-2373804146-2375708934
-1682091088-1685006321
-2532666674-2554100432
-3872534964-3888980905
-684359144-690072644
-31053881-36411395
-749479393-750957481
-1233001829-1257233242
-1109953682-1114195377
-175877666-185357324
-1283027537-1289735147
-3374715947-3381800912
-1283434504-1286474690
-1402640030-1423128613
-1426046568-1440437597
-3021217411-3028438706
-3449839444-3455646128
-2192814747-2207353667
-1039244541-1044508076
-363332786-399974272
-620349463-624462815
-3118427268-3142548507
-1177759665-1219332116
-1223070153-1264539977
-2469319931-2491726485
-1101840141-1109953680
-1048427340-1089312984
-2577948853-2584544199
-43965520-47689181
-1833568506-1857070652
-356731745-362276040
-4262722663-4294967295
-2632338905-2641519671
-0-3021649
-1148518671-1158649494
-3562116150-3562242974
-567450814-585792807
-198587645-249324442
-3756871898-3778510326
-2815453754-2821381182
-3562113904-3562138636
-2567358294-2571273144
-2061605698-2065382934
-1865301101-1870272543
-2565458232-2569021972
-267026988-275785393
-2570888765-2571620263
-179248341-180073497
-267066134-277088479
-2060654926-2062597974
-2065382936-2066893485
-3298704119-3299564801
-2194534845-2218883408
diff --git a/adventofcode16/data/advent21.txt b/adventofcode16/data/advent21.txt
deleted file mode 100644 (file)
index b445817..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-rotate based on position of letter a
-swap letter g with letter d
-move position 1 to position 5
-reverse positions 6 through 7
-move position 5 to position 4
-rotate based on position of letter b
-reverse positions 6 through 7
-swap letter h with letter f
-swap letter e with letter c
-reverse positions 0 through 7
-swap position 6 with position 4
-rotate based on position of letter e
-move position 2 to position 7
-swap position 6 with position 4
-rotate based on position of letter e
-reverse positions 2 through 3
-rotate right 2 steps
-swap position 7 with position 1
-move position 1 to position 2
-move position 4 to position 7
-move position 5 to position 0
-swap letter e with letter f
-move position 4 to position 7
-reverse positions 1 through 7
-rotate based on position of letter g
-move position 7 to position 4
-rotate right 6 steps
-rotate based on position of letter g
-reverse positions 0 through 5
-reverse positions 0 through 7
-swap letter c with letter f
-swap letter h with letter f
-rotate right 7 steps
-rotate based on position of letter g
-rotate based on position of letter c
-swap position 1 with position 4
-move position 7 to position 3
-reverse positions 2 through 6
-move position 7 to position 0
-move position 7 to position 1
-move position 6 to position 7
-rotate right 5 steps
-reverse positions 0 through 6
-move position 1 to position 4
-rotate left 3 steps
-swap letter d with letter c
-move position 4 to position 5
-rotate based on position of letter f
-rotate right 1 step
-move position 7 to position 6
-swap position 6 with position 0
-move position 6 to position 2
-rotate right 1 step
-swap position 1 with position 6
-move position 2 to position 6
-swap position 2 with position 1
-reverse positions 1 through 7
-move position 4 to position 1
-move position 7 to position 0
-swap position 6 with position 7
-rotate left 1 step
-reverse positions 0 through 4
-rotate based on position of letter c
-rotate based on position of letter b
-move position 2 to position 1
-rotate right 0 steps
-swap letter b with letter d
-swap letter f with letter c
-swap letter d with letter a
-swap position 7 with position 6
-rotate right 0 steps
-swap position 0 with position 3
-swap position 2 with position 5
-swap letter h with letter f
-reverse positions 2 through 3
-rotate based on position of letter c
-rotate left 2 steps
-move position 0 to position 5
-swap position 2 with position 3
-rotate right 1 step
-rotate left 2 steps
-move position 0 to position 4
-rotate based on position of letter c
-rotate based on position of letter g
-swap position 3 with position 0
-rotate right 3 steps
-reverse positions 0 through 2
-move position 1 to position 2
-swap letter e with letter c
-rotate right 7 steps
-move position 0 to position 7
-rotate left 2 steps
-reverse positions 0 through 4
-swap letter e with letter b
-reverse positions 2 through 7
-rotate right 5 steps
-swap position 2 with position 4
-swap letter d with letter g
-reverse positions 3 through 4
-reverse positions 4 through 5
diff --git a/adventofcode16/data/advent22.txt b/adventofcode16/data/advent22.txt
deleted file mode 100644 (file)
index 8821df9..0000000
+++ /dev/null
@@ -1,1066 +0,0 @@
-root@ebhq-gridcenter# df -h
-Filesystem              Size  Used  Avail  Use%
-/dev/grid/node-x0-y0     88T   66T    22T   75%
-/dev/grid/node-x0-y1     85T   65T    20T   76%
-/dev/grid/node-x0-y2     88T   67T    21T   76%
-/dev/grid/node-x0-y3     92T   68T    24T   73%
-/dev/grid/node-x0-y4     87T   64T    23T   73%
-/dev/grid/node-x0-y5     90T   64T    26T   71%
-/dev/grid/node-x0-y6     85T   64T    21T   75%
-/dev/grid/node-x0-y7     93T   66T    27T   70%
-/dev/grid/node-x0-y8     90T   69T    21T   76%
-/dev/grid/node-x0-y9     88T   69T    19T   78%
-/dev/grid/node-x0-y10    90T   69T    21T   76%
-/dev/grid/node-x0-y11    90T   65T    25T   72%
-/dev/grid/node-x0-y12    86T   73T    13T   84%
-/dev/grid/node-x0-y13    92T   67T    25T   72%
-/dev/grid/node-x0-y14    90T   70T    20T   77%
-/dev/grid/node-x0-y15    90T   66T    24T   73%
-/dev/grid/node-x0-y16    86T   66T    20T   76%
-/dev/grid/node-x0-y17    87T   67T    20T   77%
-/dev/grid/node-x0-y18    85T   64T    21T   75%
-/dev/grid/node-x0-y19    91T   67T    24T   73%
-/dev/grid/node-x0-y20    93T   73T    20T   78%
-/dev/grid/node-x0-y21    91T   72T    19T   79%
-/dev/grid/node-x0-y22    86T   64T    22T   74%
-/dev/grid/node-x0-y23    85T   73T    12T   85%
-/dev/grid/node-x0-y24    93T   65T    28T   69%
-/dev/grid/node-x0-y25    89T   67T    22T   75%
-/dev/grid/node-x0-y26    94T   64T    30T   68%
-/dev/grid/node-x0-y27    85T   69T    16T   81%
-/dev/grid/node-x1-y0     85T   68T    17T   80%
-/dev/grid/node-x1-y1     93T   69T    24T   74%
-/dev/grid/node-x1-y2     85T   68T    17T   80%
-/dev/grid/node-x1-y3     89T   69T    20T   77%
-/dev/grid/node-x1-y4     92T   70T    22T   76%
-/dev/grid/node-x1-y5     92T   65T    27T   70%
-/dev/grid/node-x1-y6     87T   69T    18T   79%
-/dev/grid/node-x1-y7     93T   65T    28T   69%
-/dev/grid/node-x1-y8     85T   69T    16T   81%
-/dev/grid/node-x1-y9     88T   64T    24T   72%
-/dev/grid/node-x1-y10    88T   65T    23T   73%
-/dev/grid/node-x1-y11    85T   66T    19T   77%
-/dev/grid/node-x1-y12    85T   69T    16T   81%
-/dev/grid/node-x1-y13    90T   73T    17T   81%
-/dev/grid/node-x1-y14    93T   68T    25T   73%
-/dev/grid/node-x1-y15    94T   68T    26T   72%
-/dev/grid/node-x1-y16    85T   67T    18T   78%
-/dev/grid/node-x1-y17    87T   71T    16T   81%
-/dev/grid/node-x1-y18    90T   73T    17T   81%
-/dev/grid/node-x1-y19    86T   66T    20T   76%
-/dev/grid/node-x1-y20    89T   71T    18T   79%
-/dev/grid/node-x1-y21    94T   69T    25T   73%
-/dev/grid/node-x1-y22    90T   70T    20T   77%
-/dev/grid/node-x1-y23    92T   70T    22T   76%
-/dev/grid/node-x1-y24    91T   70T    21T   76%
-/dev/grid/node-x1-y25    94T   70T    24T   74%
-/dev/grid/node-x1-y26    90T   64T    26T   71%
-/dev/grid/node-x1-y27    92T   73T    19T   79%
-/dev/grid/node-x2-y0     88T   72T    16T   81%
-/dev/grid/node-x2-y1     88T   70T    18T   79%
-/dev/grid/node-x2-y2     89T   68T    21T   76%
-/dev/grid/node-x2-y3     89T   72T    17T   80%
-/dev/grid/node-x2-y4     93T   66T    27T   70%
-/dev/grid/node-x2-y5     92T   65T    27T   70%
-/dev/grid/node-x2-y6     91T   66T    25T   72%
-/dev/grid/node-x2-y7     86T   70T    16T   81%
-/dev/grid/node-x2-y8     94T   66T    28T   70%
-/dev/grid/node-x2-y9     88T   71T    17T   80%
-/dev/grid/node-x2-y10    90T   64T    26T   71%
-/dev/grid/node-x2-y11    88T   68T    20T   77%
-/dev/grid/node-x2-y12    86T   70T    16T   81%
-/dev/grid/node-x2-y13    90T   68T    22T   75%
-/dev/grid/node-x2-y14    85T   70T    15T   82%
-/dev/grid/node-x2-y15    93T   70T    23T   75%
-/dev/grid/node-x2-y16    87T   73T    14T   83%
-/dev/grid/node-x2-y17    92T   66T    26T   71%
-/dev/grid/node-x2-y18    88T   70T    18T   79%
-/dev/grid/node-x2-y19    89T   69T    20T   77%
-/dev/grid/node-x2-y20    92T   64T    28T   69%
-/dev/grid/node-x2-y21    85T   67T    18T   78%
-/dev/grid/node-x2-y22    89T   70T    19T   78%
-/dev/grid/node-x2-y23    94T   70T    24T   74%
-/dev/grid/node-x2-y24    87T   72T    15T   82%
-/dev/grid/node-x2-y25    91T   73T    18T   80%
-/dev/grid/node-x2-y26    91T   65T    26T   71%
-/dev/grid/node-x2-y27    90T   70T    20T   77%
-/dev/grid/node-x3-y0     92T   72T    20T   78%
-/dev/grid/node-x3-y1     91T   71T    20T   78%
-/dev/grid/node-x3-y2     93T   71T    22T   76%
-/dev/grid/node-x3-y3     89T   72T    17T   80%
-/dev/grid/node-x3-y4     88T   68T    20T   77%
-/dev/grid/node-x3-y5     92T   73T    19T   79%
-/dev/grid/node-x3-y6     86T   64T    22T   74%
-/dev/grid/node-x3-y7     86T   67T    19T   77%
-/dev/grid/node-x3-y8     85T   73T    12T   85%
-/dev/grid/node-x3-y9     86T   72T    14T   83%
-/dev/grid/node-x3-y10    88T   67T    21T   76%
-/dev/grid/node-x3-y11    94T   67T    27T   71%
-/dev/grid/node-x3-y12    91T   66T    25T   72%
-/dev/grid/node-x3-y13    85T   67T    18T   78%
-/dev/grid/node-x3-y14    94T   68T    26T   72%
-/dev/grid/node-x3-y15    94T   73T    21T   77%
-/dev/grid/node-x3-y16    92T   71T    21T   77%
-/dev/grid/node-x3-y17    92T   73T    19T   79%
-/dev/grid/node-x3-y18    86T   66T    20T   76%
-/dev/grid/node-x3-y19    88T   69T    19T   78%
-/dev/grid/node-x3-y20    90T   73T    17T   81%
-/dev/grid/node-x3-y21    87T   71T    16T   81%
-/dev/grid/node-x3-y22    92T   72T    20T   78%
-/dev/grid/node-x3-y23    87T   71T    16T   81%
-/dev/grid/node-x3-y24    93T   66T    27T   70%
-/dev/grid/node-x3-y25    94T   65T    29T   69%
-/dev/grid/node-x3-y26    91T   67T    24T   73%
-/dev/grid/node-x3-y27    88T   69T    19T   78%
-/dev/grid/node-x4-y0     93T   68T    25T   73%
-/dev/grid/node-x4-y1     93T   67T    26T   72%
-/dev/grid/node-x4-y2     85T   67T    18T   78%
-/dev/grid/node-x4-y3     89T   65T    24T   73%
-/dev/grid/node-x4-y4     85T   73T    12T   85%
-/dev/grid/node-x4-y5     86T   72T    14T   83%
-/dev/grid/node-x4-y6     86T   66T    20T   76%
-/dev/grid/node-x4-y7     89T   66T    23T   74%
-/dev/grid/node-x4-y8     94T   73T    21T   77%
-/dev/grid/node-x4-y9     89T   72T    17T   80%
-/dev/grid/node-x4-y10    86T   66T    20T   76%
-/dev/grid/node-x4-y11    92T   70T    22T   76%
-/dev/grid/node-x4-y12    93T   69T    24T   74%
-/dev/grid/node-x4-y13    85T   68T    17T   80%
-/dev/grid/node-x4-y14    93T   73T    20T   78%
-/dev/grid/node-x4-y15    87T   67T    20T   77%
-/dev/grid/node-x4-y16    86T   66T    20T   76%
-/dev/grid/node-x4-y17    90T   70T    20T   77%
-/dev/grid/node-x4-y18    92T   69T    23T   75%
-/dev/grid/node-x4-y19    93T   71T    22T   76%
-/dev/grid/node-x4-y20    94T   66T    28T   70%
-/dev/grid/node-x4-y21    88T   73T    15T   82%
-/dev/grid/node-x4-y22    93T   71T    22T   76%
-/dev/grid/node-x4-y23    87T   68T    19T   78%
-/dev/grid/node-x4-y24    89T   70T    19T   78%
-/dev/grid/node-x4-y25    87T   69T    18T   79%
-/dev/grid/node-x4-y26    87T   69T    18T   79%
-/dev/grid/node-x4-y27    89T   71T    18T   79%
-/dev/grid/node-x5-y0     88T   66T    22T   75%
-/dev/grid/node-x5-y1     91T   70T    21T   76%
-/dev/grid/node-x5-y2     91T   71T    20T   78%
-/dev/grid/node-x5-y3     90T   68T    22T   75%
-/dev/grid/node-x5-y4     85T   72T    13T   84%
-/dev/grid/node-x5-y5     89T   64T    25T   71%
-/dev/grid/node-x5-y6     90T   71T    19T   78%
-/dev/grid/node-x5-y7     91T   64T    27T   70%
-/dev/grid/node-x5-y8     87T   71T    16T   81%
-/dev/grid/node-x5-y9     89T   72T    17T   80%
-/dev/grid/node-x5-y10    86T   68T    18T   79%
-/dev/grid/node-x5-y11    91T   66T    25T   72%
-/dev/grid/node-x5-y12    89T   69T    20T   77%
-/dev/grid/node-x5-y13    85T   72T    13T   84%
-/dev/grid/node-x5-y14    92T   69T    23T   75%
-/dev/grid/node-x5-y15    88T   68T    20T   77%
-/dev/grid/node-x5-y16    92T   72T    20T   78%
-/dev/grid/node-x5-y17    93T   70T    23T   75%
-/dev/grid/node-x5-y18    87T   65T    22T   74%
-/dev/grid/node-x5-y19    86T   64T    22T   74%
-/dev/grid/node-x5-y20    89T   68T    21T   76%
-/dev/grid/node-x5-y21    89T   68T    21T   76%
-/dev/grid/node-x5-y22    89T   71T    18T   79%
-/dev/grid/node-x5-y23    91T   67T    24T   73%
-/dev/grid/node-x5-y24    88T   64T    24T   72%
-/dev/grid/node-x5-y25    92T   73T    19T   79%
-/dev/grid/node-x5-y26    94T   64T    30T   68%
-/dev/grid/node-x5-y27    88T   73T    15T   82%
-/dev/grid/node-x6-y0     88T   64T    24T   72%
-/dev/grid/node-x6-y1     87T   71T    16T   81%
-/dev/grid/node-x6-y2     93T   65T    28T   69%
-/dev/grid/node-x6-y3     90T   71T    19T   78%
-/dev/grid/node-x6-y4     85T   68T    17T   80%
-/dev/grid/node-x6-y5     93T   70T    23T   75%
-/dev/grid/node-x6-y6     91T   70T    21T   76%
-/dev/grid/node-x6-y7     89T   65T    24T   73%
-/dev/grid/node-x6-y8     91T   65T    26T   71%
-/dev/grid/node-x6-y9     92T   65T    27T   70%
-/dev/grid/node-x6-y10    94T   73T    21T   77%
-/dev/grid/node-x6-y11    86T   71T    15T   82%
-/dev/grid/node-x6-y12    87T   68T    19T   78%
-/dev/grid/node-x6-y13    93T   68T    25T   73%
-/dev/grid/node-x6-y14    87T   68T    19T   78%
-/dev/grid/node-x6-y15    85T   71T    14T   83%
-/dev/grid/node-x6-y16    85T   70T    15T   82%
-/dev/grid/node-x6-y17    85T   66T    19T   77%
-/dev/grid/node-x6-y18    90T   66T    24T   73%
-/dev/grid/node-x6-y19    85T   73T    12T   85%
-/dev/grid/node-x6-y20    92T   73T    19T   79%
-/dev/grid/node-x6-y21    90T   68T    22T   75%
-/dev/grid/node-x6-y22    85T   68T    17T   80%
-/dev/grid/node-x6-y23    85T   67T    18T   78%
-/dev/grid/node-x6-y24    87T   65T    22T   74%
-/dev/grid/node-x6-y25    85T   68T    17T   80%
-/dev/grid/node-x6-y26    88T   70T    18T   79%
-/dev/grid/node-x6-y27    86T   65T    21T   75%
-/dev/grid/node-x7-y0     89T   66T    23T   74%
-/dev/grid/node-x7-y1     92T   67T    25T   72%
-/dev/grid/node-x7-y2     94T   69T    25T   73%
-/dev/grid/node-x7-y3     86T   72T    14T   83%
-/dev/grid/node-x7-y4     90T   68T    22T   75%
-/dev/grid/node-x7-y5     87T   72T    15T   82%
-/dev/grid/node-x7-y6     92T   71T    21T   77%
-/dev/grid/node-x7-y7     90T   71T    19T   78%
-/dev/grid/node-x7-y8     92T   70T    22T   76%
-/dev/grid/node-x7-y9     85T   73T    12T   85%
-/dev/grid/node-x7-y10    92T   68T    24T   73%
-/dev/grid/node-x7-y11    94T   69T    25T   73%
-/dev/grid/node-x7-y12    88T   71T    17T   80%
-/dev/grid/node-x7-y13    87T   73T    14T   83%
-/dev/grid/node-x7-y14    92T   70T    22T   76%
-/dev/grid/node-x7-y15    87T   68T    19T   78%
-/dev/grid/node-x7-y16    85T   65T    20T   76%
-/dev/grid/node-x7-y17    93T   64T    29T   68%
-/dev/grid/node-x7-y18    91T   67T    24T   73%
-/dev/grid/node-x7-y19    87T   66T    21T   75%
-/dev/grid/node-x7-y20    94T   72T    22T   76%
-/dev/grid/node-x7-y21    85T   72T    13T   84%
-/dev/grid/node-x7-y22    88T   73T    15T   82%
-/dev/grid/node-x7-y23    91T   66T    25T   72%
-/dev/grid/node-x7-y24    94T   70T    24T   74%
-/dev/grid/node-x7-y25    85T   65T    20T   76%
-/dev/grid/node-x7-y26    88T   64T    24T   72%
-/dev/grid/node-x7-y27    93T   69T    24T   74%
-/dev/grid/node-x8-y0     92T   65T    27T   70%
-/dev/grid/node-x8-y1     89T   69T    20T   77%
-/dev/grid/node-x8-y2     93T   64T    29T   68%
-/dev/grid/node-x8-y3     85T   65T    20T   76%
-/dev/grid/node-x8-y4     91T   69T    22T   75%
-/dev/grid/node-x8-y5     85T   70T    15T   82%
-/dev/grid/node-x8-y6     86T   64T    22T   74%
-/dev/grid/node-x8-y7     94T   67T    27T   71%
-/dev/grid/node-x8-y8     88T   68T    20T   77%
-/dev/grid/node-x8-y9     94T   69T    25T   73%
-/dev/grid/node-x8-y10    91T   73T    18T   80%
-/dev/grid/node-x8-y11    89T   73T    16T   82%
-/dev/grid/node-x8-y12    87T   68T    19T   78%
-/dev/grid/node-x8-y13    89T   70T    19T   78%
-/dev/grid/node-x8-y14    86T   67T    19T   77%
-/dev/grid/node-x8-y15    90T   68T    22T   75%
-/dev/grid/node-x8-y16    92T   72T    20T   78%
-/dev/grid/node-x8-y17    89T   68T    21T   76%
-/dev/grid/node-x8-y18    89T   67T    22T   75%
-/dev/grid/node-x8-y19    85T   68T    17T   80%
-/dev/grid/node-x8-y20    88T   64T    24T   72%
-/dev/grid/node-x8-y21    90T   72T    18T   80%
-/dev/grid/node-x8-y22    93T   73T    20T   78%
-/dev/grid/node-x8-y23    92T   68T    24T   73%
-/dev/grid/node-x8-y24    92T   66T    26T   71%
-/dev/grid/node-x8-y25    93T   70T    23T   75%
-/dev/grid/node-x8-y26    92T   64T    28T   69%
-/dev/grid/node-x8-y27    85T   64T    21T   75%
-/dev/grid/node-x9-y0     94T   71T    23T   75%
-/dev/grid/node-x9-y1     91T   71T    20T   78%
-/dev/grid/node-x9-y2     93T   66T    27T   70%
-/dev/grid/node-x9-y3     86T   73T    13T   84%
-/dev/grid/node-x9-y4     90T   69T    21T   76%
-/dev/grid/node-x9-y5     85T   70T    15T   82%
-/dev/grid/node-x9-y6     88T   67T    21T   76%
-/dev/grid/node-x9-y7     90T   64T    26T   71%
-/dev/grid/node-x9-y8     93T   66T    27T   70%
-/dev/grid/node-x9-y9     90T   73T    17T   81%
-/dev/grid/node-x9-y10    90T   73T    17T   81%
-/dev/grid/node-x9-y11    89T   69T    20T   77%
-/dev/grid/node-x9-y12    89T   69T    20T   77%
-/dev/grid/node-x9-y13    93T   68T    25T   73%
-/dev/grid/node-x9-y14    94T   64T    30T   68%
-/dev/grid/node-x9-y15    94T   66T    28T   70%
-/dev/grid/node-x9-y16    89T   71T    18T   79%
-/dev/grid/node-x9-y17    89T   69T    20T   77%
-/dev/grid/node-x9-y18    86T   65T    21T   75%
-/dev/grid/node-x9-y19    88T   71T    17T   80%
-/dev/grid/node-x9-y20    90T   72T    18T   80%
-/dev/grid/node-x9-y21    91T   71T    20T   78%
-/dev/grid/node-x9-y22    88T   66T    22T   75%
-/dev/grid/node-x9-y23    93T   69T    24T   74%
-/dev/grid/node-x9-y24   502T  496T     6T   98%
-/dev/grid/node-x9-y25    89T   73T    16T   82%
-/dev/grid/node-x9-y26    92T   71T    21T   77%
-/dev/grid/node-x9-y27    94T   70T    24T   74%
-/dev/grid/node-x10-y0    85T   73T    12T   85%
-/dev/grid/node-x10-y1    92T   64T    28T   69%
-/dev/grid/node-x10-y2    92T   64T    28T   69%
-/dev/grid/node-x10-y3    92T   71T    21T   77%
-/dev/grid/node-x10-y4    89T   71T    18T   79%
-/dev/grid/node-x10-y5    87T   72T    15T   82%
-/dev/grid/node-x10-y6    93T   68T    25T   73%
-/dev/grid/node-x10-y7    93T   65T    28T   69%
-/dev/grid/node-x10-y8    87T   67T    20T   77%
-/dev/grid/node-x10-y9    90T   64T    26T   71%
-/dev/grid/node-x10-y10   91T   70T    21T   76%
-/dev/grid/node-x10-y11   86T   66T    20T   76%
-/dev/grid/node-x10-y12   90T   71T    19T   78%
-/dev/grid/node-x10-y13   86T   65T    21T   75%
-/dev/grid/node-x10-y14   93T   69T    24T   74%
-/dev/grid/node-x10-y15   87T   64T    23T   73%
-/dev/grid/node-x10-y16   85T   68T    17T   80%
-/dev/grid/node-x10-y17   89T   65T    24T   73%
-/dev/grid/node-x10-y18   94T   73T    21T   77%
-/dev/grid/node-x10-y19   94T   73T    21T   77%
-/dev/grid/node-x10-y20   88T   68T    20T   77%
-/dev/grid/node-x10-y21   93T   73T    20T   78%
-/dev/grid/node-x10-y22   87T   67T    20T   77%
-/dev/grid/node-x10-y23   90T   67T    23T   74%
-/dev/grid/node-x10-y24  510T  491T    19T   96%
-/dev/grid/node-x10-y25   90T   71T    19T   78%
-/dev/grid/node-x10-y26   94T   67T    27T   71%
-/dev/grid/node-x10-y27   93T   67T    26T   72%
-/dev/grid/node-x11-y0    91T   64T    27T   70%
-/dev/grid/node-x11-y1    91T   67T    24T   73%
-/dev/grid/node-x11-y2    86T   70T    16T   81%
-/dev/grid/node-x11-y3    87T   65T    22T   74%
-/dev/grid/node-x11-y4    86T   66T    20T   76%
-/dev/grid/node-x11-y5    85T   71T    14T   83%
-/dev/grid/node-x11-y6    91T   65T    26T   71%
-/dev/grid/node-x11-y7    86T   65T    21T   75%
-/dev/grid/node-x11-y8    91T   71T    20T   78%
-/dev/grid/node-x11-y9    94T   71T    23T   75%
-/dev/grid/node-x11-y10   89T   65T    24T   73%
-/dev/grid/node-x11-y11   94T   71T    23T   75%
-/dev/grid/node-x11-y12   88T   64T    24T   72%
-/dev/grid/node-x11-y13   85T   67T    18T   78%
-/dev/grid/node-x11-y14   87T   71T    16T   81%
-/dev/grid/node-x11-y15   90T   71T    19T   78%
-/dev/grid/node-x11-y16   87T   73T    14T   83%
-/dev/grid/node-x11-y17   89T   68T    21T   76%
-/dev/grid/node-x11-y18   94T   64T    30T   68%
-/dev/grid/node-x11-y19   92T   68T    24T   73%
-/dev/grid/node-x11-y20   86T   67T    19T   77%
-/dev/grid/node-x11-y21   91T   73T    18T   80%
-/dev/grid/node-x11-y22   91T   69T    22T   75%
-/dev/grid/node-x11-y23   88T   72T    16T   81%
-/dev/grid/node-x11-y24  509T  493T    16T   96%
-/dev/grid/node-x11-y25   93T   68T    25T   73%
-/dev/grid/node-x11-y26   86T   72T    14T   83%
-/dev/grid/node-x11-y27   86T   65T    21T   75%
-/dev/grid/node-x12-y0    93T   65T    28T   69%
-/dev/grid/node-x12-y1    93T   65T    28T   69%
-/dev/grid/node-x12-y2    86T   68T    18T   79%
-/dev/grid/node-x12-y3    92T   65T    27T   70%
-/dev/grid/node-x12-y4    87T   65T    22T   74%
-/dev/grid/node-x12-y5    93T   68T    25T   73%
-/dev/grid/node-x12-y6    90T   67T    23T   74%
-/dev/grid/node-x12-y7    93T   69T    24T   74%
-/dev/grid/node-x12-y8    88T   72T    16T   81%
-/dev/grid/node-x12-y9    90T   72T    18T   80%
-/dev/grid/node-x12-y10   89T   64T    25T   71%
-/dev/grid/node-x12-y11   85T   69T    16T   81%
-/dev/grid/node-x12-y12   90T   69T    21T   76%
-/dev/grid/node-x12-y13   94T   66T    28T   70%
-/dev/grid/node-x12-y14   89T   69T    20T   77%
-/dev/grid/node-x12-y15   92T   68T    24T   73%
-/dev/grid/node-x12-y16   90T   73T    17T   81%
-/dev/grid/node-x12-y17   85T   67T    18T   78%
-/dev/grid/node-x12-y18   90T   67T    23T   74%
-/dev/grid/node-x12-y19   94T   65T    29T   69%
-/dev/grid/node-x12-y20   89T   68T    21T   76%
-/dev/grid/node-x12-y21   88T   71T    17T   80%
-/dev/grid/node-x12-y22   87T   73T    14T   83%
-/dev/grid/node-x12-y23   94T   64T    30T   68%
-/dev/grid/node-x12-y24  505T  499T     6T   98%
-/dev/grid/node-x12-y25   86T   67T    19T   77%
-/dev/grid/node-x12-y26   94T   64T    30T   68%
-/dev/grid/node-x12-y27   92T   66T    26T   71%
-/dev/grid/node-x13-y0    89T   65T    24T   73%
-/dev/grid/node-x13-y1    92T   65T    27T   70%
-/dev/grid/node-x13-y2    92T   67T    25T   72%
-/dev/grid/node-x13-y3    91T   71T    20T   78%
-/dev/grid/node-x13-y4    87T   66T    21T   75%
-/dev/grid/node-x13-y5    92T   71T    21T   77%
-/dev/grid/node-x13-y6    92T   67T    25T   72%
-/dev/grid/node-x13-y7    90T   73T    17T   81%
-/dev/grid/node-x13-y8    91T   67T    24T   73%
-/dev/grid/node-x13-y9    90T   64T    26T   71%
-/dev/grid/node-x13-y10   85T   73T    12T   85%
-/dev/grid/node-x13-y11   91T   65T    26T   71%
-/dev/grid/node-x13-y12   94T   65T    29T   69%
-/dev/grid/node-x13-y13   94T   73T    21T   77%
-/dev/grid/node-x13-y14   91T   71T    20T   78%
-/dev/grid/node-x13-y15   85T   65T    20T   76%
-/dev/grid/node-x13-y16   88T   68T    20T   77%
-/dev/grid/node-x13-y17   94T   65T    29T   69%
-/dev/grid/node-x13-y18   92T   70T    22T   76%
-/dev/grid/node-x13-y19   86T   72T    14T   83%
-/dev/grid/node-x13-y20   88T   71T    17T   80%
-/dev/grid/node-x13-y21   94T   72T    22T   76%
-/dev/grid/node-x13-y22   92T   66T    26T   71%
-/dev/grid/node-x13-y23   90T   69T    21T   76%
-/dev/grid/node-x13-y24  510T  492T    18T   96%
-/dev/grid/node-x13-y25   94T   73T    21T   77%
-/dev/grid/node-x13-y26   87T   68T    19T   78%
-/dev/grid/node-x13-y27   93T   71T    22T   76%
-/dev/grid/node-x14-y0    87T   73T    14T   83%
-/dev/grid/node-x14-y1    86T   69T    17T   80%
-/dev/grid/node-x14-y2    91T   71T    20T   78%
-/dev/grid/node-x14-y3    88T   67T    21T   76%
-/dev/grid/node-x14-y4    88T   70T    18T   79%
-/dev/grid/node-x14-y5    92T   73T    19T   79%
-/dev/grid/node-x14-y6    88T   66T    22T   75%
-/dev/grid/node-x14-y7    85T   68T    17T   80%
-/dev/grid/node-x14-y8    87T   70T    17T   80%
-/dev/grid/node-x14-y9    88T   71T    17T   80%
-/dev/grid/node-x14-y10   89T   66T    23T   74%
-/dev/grid/node-x14-y11   90T   69T    21T   76%
-/dev/grid/node-x14-y12   89T   71T    18T   79%
-/dev/grid/node-x14-y13   89T   64T    25T   71%
-/dev/grid/node-x14-y14   91T   72T    19T   79%
-/dev/grid/node-x14-y15   94T   69T    25T   73%
-/dev/grid/node-x14-y16   86T   73T    13T   84%
-/dev/grid/node-x14-y17   88T   70T    18T   79%
-/dev/grid/node-x14-y18   91T   68T    23T   74%
-/dev/grid/node-x14-y19   91T   67T    24T   73%
-/dev/grid/node-x14-y20   85T   65T    20T   76%
-/dev/grid/node-x14-y21   85T   71T    14T   83%
-/dev/grid/node-x14-y22   90T   70T    20T   77%
-/dev/grid/node-x14-y23   85T   70T    15T   82%
-/dev/grid/node-x14-y24  504T  494T    10T   98%
-/dev/grid/node-x14-y25   94T   69T    25T   73%
-/dev/grid/node-x14-y26   92T   64T    28T   69%
-/dev/grid/node-x14-y27   86T   73T    13T   84%
-/dev/grid/node-x15-y0    88T   72T    16T   81%
-/dev/grid/node-x15-y1    91T   67T    24T   73%
-/dev/grid/node-x15-y2    90T   67T    23T   74%
-/dev/grid/node-x15-y3    90T   68T    22T   75%
-/dev/grid/node-x15-y4    92T   70T    22T   76%
-/dev/grid/node-x15-y5    89T   69T    20T   77%
-/dev/grid/node-x15-y6    89T   70T    19T   78%
-/dev/grid/node-x15-y7    93T   71T    22T   76%
-/dev/grid/node-x15-y8    86T   64T    22T   74%
-/dev/grid/node-x15-y9    91T   71T    20T   78%
-/dev/grid/node-x15-y10   94T   72T    22T   76%
-/dev/grid/node-x15-y11   91T   70T    21T   76%
-/dev/grid/node-x15-y12   93T   71T    22T   76%
-/dev/grid/node-x15-y13   94T   66T    28T   70%
-/dev/grid/node-x15-y14   93T   68T    25T   73%
-/dev/grid/node-x15-y15   85T   67T    18T   78%
-/dev/grid/node-x15-y16   88T   64T    24T   72%
-/dev/grid/node-x15-y17   94T   72T    22T   76%
-/dev/grid/node-x15-y18   93T   67T    26T   72%
-/dev/grid/node-x15-y19   89T   68T    21T   76%
-/dev/grid/node-x15-y20   93T   71T    22T   76%
-/dev/grid/node-x15-y21   90T   70T    20T   77%
-/dev/grid/node-x15-y22   86T   65T    21T   75%
-/dev/grid/node-x15-y23   90T   68T    22T   75%
-/dev/grid/node-x15-y24  506T  494T    12T   97%
-/dev/grid/node-x15-y25   91T   71T    20T   78%
-/dev/grid/node-x15-y26   86T   70T    16T   81%
-/dev/grid/node-x15-y27   87T   64T    23T   73%
-/dev/grid/node-x16-y0    93T   64T    29T   68%
-/dev/grid/node-x16-y1    91T   69T    22T   75%
-/dev/grid/node-x16-y2    89T   66T    23T   74%
-/dev/grid/node-x16-y3    89T   68T    21T   76%
-/dev/grid/node-x16-y4    91T   65T    26T   71%
-/dev/grid/node-x16-y5    85T   71T    14T   83%
-/dev/grid/node-x16-y6    93T   69T    24T   74%
-/dev/grid/node-x16-y7    87T   69T    18T   79%
-/dev/grid/node-x16-y8    85T   72T    13T   84%
-/dev/grid/node-x16-y9    92T   67T    25T   72%
-/dev/grid/node-x16-y10   92T   69T    23T   75%
-/dev/grid/node-x16-y11   93T   72T    21T   77%
-/dev/grid/node-x16-y12   92T   73T    19T   79%
-/dev/grid/node-x16-y13   88T   70T    18T   79%
-/dev/grid/node-x16-y14   91T   71T    20T   78%
-/dev/grid/node-x16-y15   88T   66T    22T   75%
-/dev/grid/node-x16-y16   88T   70T    18T   79%
-/dev/grid/node-x16-y17   88T   73T    15T   82%
-/dev/grid/node-x16-y18   92T   72T    20T   78%
-/dev/grid/node-x16-y19   90T   73T    17T   81%
-/dev/grid/node-x16-y20   94T   73T    21T   77%
-/dev/grid/node-x16-y21   86T   71T    15T   82%
-/dev/grid/node-x16-y22   88T   68T    20T   77%
-/dev/grid/node-x16-y23   88T   73T    15T   82%
-/dev/grid/node-x16-y24  506T  496T    10T   98%
-/dev/grid/node-x16-y25   85T   69T    16T   81%
-/dev/grid/node-x16-y26   90T   64T    26T   71%
-/dev/grid/node-x16-y27   92T   64T    28T   69%
-/dev/grid/node-x17-y0    88T   73T    15T   82%
-/dev/grid/node-x17-y1    87T   65T    22T   74%
-/dev/grid/node-x17-y2    90T   64T    26T   71%
-/dev/grid/node-x17-y3    93T   71T    22T   76%
-/dev/grid/node-x17-y4    90T   64T    26T   71%
-/dev/grid/node-x17-y5    87T   64T    23T   73%
-/dev/grid/node-x17-y6    86T   72T    14T   83%
-/dev/grid/node-x17-y7    90T   65T    25T   72%
-/dev/grid/node-x17-y8    85T   71T    14T   83%
-/dev/grid/node-x17-y9    93T   68T    25T   73%
-/dev/grid/node-x17-y10   87T   65T    22T   74%
-/dev/grid/node-x17-y11   87T   71T    16T   81%
-/dev/grid/node-x17-y12   90T   73T    17T   81%
-/dev/grid/node-x17-y13   92T   71T    21T   77%
-/dev/grid/node-x17-y14   91T   69T    22T   75%
-/dev/grid/node-x17-y15   88T   73T    15T   82%
-/dev/grid/node-x17-y16   88T   73T    15T   82%
-/dev/grid/node-x17-y17   88T   71T    17T   80%
-/dev/grid/node-x17-y18   87T   66T    21T   75%
-/dev/grid/node-x17-y19   89T   71T    18T   79%
-/dev/grid/node-x17-y20   91T   72T    19T   79%
-/dev/grid/node-x17-y21   93T   69T    24T   74%
-/dev/grid/node-x17-y22   85T   68T    17T   80%
-/dev/grid/node-x17-y23   93T   67T    26T   72%
-/dev/grid/node-x17-y24  505T  494T    11T   97%
-/dev/grid/node-x17-y25   88T   72T    16T   81%
-/dev/grid/node-x17-y26   93T   72T    21T   77%
-/dev/grid/node-x17-y27   85T   72T    13T   84%
-/dev/grid/node-x18-y0    92T   70T    22T   76%
-/dev/grid/node-x18-y1    89T   72T    17T   80%
-/dev/grid/node-x18-y2    85T   66T    19T   77%
-/dev/grid/node-x18-y3    90T   68T    22T   75%
-/dev/grid/node-x18-y4    92T   69T    23T   75%
-/dev/grid/node-x18-y5    91T   70T    21T   76%
-/dev/grid/node-x18-y6    87T   68T    19T   78%
-/dev/grid/node-x18-y7    93T   66T    27T   70%
-/dev/grid/node-x18-y8    87T   64T    23T   73%
-/dev/grid/node-x18-y9    89T   72T    17T   80%
-/dev/grid/node-x18-y10   86T   69T    17T   80%
-/dev/grid/node-x18-y11   90T   73T    17T   81%
-/dev/grid/node-x18-y12   92T   72T    20T   78%
-/dev/grid/node-x18-y13   90T   70T    20T   77%
-/dev/grid/node-x18-y14   87T   72T    15T   82%
-/dev/grid/node-x18-y15   89T   70T    19T   78%
-/dev/grid/node-x18-y16   90T   73T    17T   81%
-/dev/grid/node-x18-y17   92T   66T    26T   71%
-/dev/grid/node-x18-y18   87T   73T    14T   83%
-/dev/grid/node-x18-y19   90T   70T    20T   77%
-/dev/grid/node-x18-y20   94T   66T    28T   70%
-/dev/grid/node-x18-y21   88T   73T    15T   82%
-/dev/grid/node-x18-y22   87T   72T    15T   82%
-/dev/grid/node-x18-y23   85T   65T    20T   76%
-/dev/grid/node-x18-y24  504T  498T     6T   98%
-/dev/grid/node-x18-y25   89T   70T    19T   78%
-/dev/grid/node-x18-y26   86T   69T    17T   80%
-/dev/grid/node-x18-y27   94T   70T    24T   74%
-/dev/grid/node-x19-y0    89T   69T    20T   77%
-/dev/grid/node-x19-y1    90T   72T    18T   80%
-/dev/grid/node-x19-y2    91T   68T    23T   74%
-/dev/grid/node-x19-y3    85T   64T    21T   75%
-/dev/grid/node-x19-y4    92T   66T    26T   71%
-/dev/grid/node-x19-y5    89T   65T    24T   73%
-/dev/grid/node-x19-y6    85T   64T    21T   75%
-/dev/grid/node-x19-y7    87T   66T    21T   75%
-/dev/grid/node-x19-y8    90T   65T    25T   72%
-/dev/grid/node-x19-y9    86T   73T    13T   84%
-/dev/grid/node-x19-y10   91T   73T    18T   80%
-/dev/grid/node-x19-y11   91T   64T    27T   70%
-/dev/grid/node-x19-y12   91T   69T    22T   75%
-/dev/grid/node-x19-y13   93T   71T    22T   76%
-/dev/grid/node-x19-y14   88T   67T    21T   76%
-/dev/grid/node-x19-y15   85T   66T    19T   77%
-/dev/grid/node-x19-y16   92T   65T    27T   70%
-/dev/grid/node-x19-y17   85T   67T    18T   78%
-/dev/grid/node-x19-y18   86T   72T    14T   83%
-/dev/grid/node-x19-y19   90T   72T    18T   80%
-/dev/grid/node-x19-y20   87T   65T    22T   74%
-/dev/grid/node-x19-y21   93T   64T    29T   68%
-/dev/grid/node-x19-y22   91T   73T    18T   80%
-/dev/grid/node-x19-y23   93T   65T    28T   69%
-/dev/grid/node-x19-y24  510T  495T    15T   97%
-/dev/grid/node-x19-y25   86T   69T    17T   80%
-/dev/grid/node-x19-y26   94T   68T    26T   72%
-/dev/grid/node-x19-y27   86T   66T    20T   76%
-/dev/grid/node-x20-y0    91T   67T    24T   73%
-/dev/grid/node-x20-y1    92T   67T    25T   72%
-/dev/grid/node-x20-y2    88T   64T    24T   72%
-/dev/grid/node-x20-y3    93T   68T    25T   73%
-/dev/grid/node-x20-y4    88T   71T    17T   80%
-/dev/grid/node-x20-y5    94T   68T    26T   72%
-/dev/grid/node-x20-y6    85T   68T    17T   80%
-/dev/grid/node-x20-y7    89T   65T    24T   73%
-/dev/grid/node-x20-y8    85T   64T    21T   75%
-/dev/grid/node-x20-y9    91T   66T    25T   72%
-/dev/grid/node-x20-y10   94T   64T    30T   68%
-/dev/grid/node-x20-y11   87T   68T    19T   78%
-/dev/grid/node-x20-y12   90T   71T    19T   78%
-/dev/grid/node-x20-y13   90T   67T    23T   74%
-/dev/grid/node-x20-y14   91T   64T    27T   70%
-/dev/grid/node-x20-y15   85T   72T    13T   84%
-/dev/grid/node-x20-y16   87T   65T    22T   74%
-/dev/grid/node-x20-y17   89T   71T    18T   79%
-/dev/grid/node-x20-y18   87T   66T    21T   75%
-/dev/grid/node-x20-y19   88T   71T    17T   80%
-/dev/grid/node-x20-y20   94T   71T    23T   75%
-/dev/grid/node-x20-y21   91T   68T    23T   74%
-/dev/grid/node-x20-y22   92T   71T    21T   77%
-/dev/grid/node-x20-y23   88T   68T    20T   77%
-/dev/grid/node-x20-y24  507T  498T     9T   98%
-/dev/grid/node-x20-y25   87T   71T    16T   81%
-/dev/grid/node-x20-y26   88T   69T    19T   78%
-/dev/grid/node-x20-y27   87T   69T    18T   79%
-/dev/grid/node-x21-y0    92T   70T    22T   76%
-/dev/grid/node-x21-y1    89T   64T    25T   71%
-/dev/grid/node-x21-y2    86T   67T    19T   77%
-/dev/grid/node-x21-y3    88T   66T    22T   75%
-/dev/grid/node-x21-y4    89T   68T    21T   76%
-/dev/grid/node-x21-y5    86T   67T    19T   77%
-/dev/grid/node-x21-y6    87T   68T    19T   78%
-/dev/grid/node-x21-y7    89T   73T    16T   82%
-/dev/grid/node-x21-y8    87T   71T    16T   81%
-/dev/grid/node-x21-y9    90T   71T    19T   78%
-/dev/grid/node-x21-y10   92T   69T    23T   75%
-/dev/grid/node-x21-y11   92T   70T    22T   76%
-/dev/grid/node-x21-y12   92T   64T    28T   69%
-/dev/grid/node-x21-y13   91T   69T    22T   75%
-/dev/grid/node-x21-y14   89T   64T    25T   71%
-/dev/grid/node-x21-y15   92T   67T    25T   72%
-/dev/grid/node-x21-y16   93T   65T    28T   69%
-/dev/grid/node-x21-y17   89T   69T    20T   77%
-/dev/grid/node-x21-y18   86T   73T    13T   84%
-/dev/grid/node-x21-y19   93T   67T    26T   72%
-/dev/grid/node-x21-y20   88T   70T    18T   79%
-/dev/grid/node-x21-y21   93T   68T    25T   73%
-/dev/grid/node-x21-y22   94T   64T    30T   68%
-/dev/grid/node-x21-y23   90T   71T    19T   78%
-/dev/grid/node-x21-y24  504T  496T     8T   98%
-/dev/grid/node-x21-y25   94T   72T    22T   76%
-/dev/grid/node-x21-y26   93T   70T    23T   75%
-/dev/grid/node-x21-y27   88T   71T    17T   80%
-/dev/grid/node-x22-y0    94T   66T    28T   70%
-/dev/grid/node-x22-y1    92T   71T    21T   77%
-/dev/grid/node-x22-y2    92T   66T    26T   71%
-/dev/grid/node-x22-y3    93T   64T    29T   68%
-/dev/grid/node-x22-y4    88T   65T    23T   73%
-/dev/grid/node-x22-y5    91T   67T    24T   73%
-/dev/grid/node-x22-y6    91T   67T    24T   73%
-/dev/grid/node-x22-y7    85T   69T    16T   81%
-/dev/grid/node-x22-y8    85T   69T    16T   81%
-/dev/grid/node-x22-y9    85T   72T    13T   84%
-/dev/grid/node-x22-y10   85T   69T    16T   81%
-/dev/grid/node-x22-y11   87T   73T    14T   83%
-/dev/grid/node-x22-y12   91T   67T    24T   73%
-/dev/grid/node-x22-y13   94T   73T    21T   77%
-/dev/grid/node-x22-y14   91T   73T    18T   80%
-/dev/grid/node-x22-y15   86T   73T    13T   84%
-/dev/grid/node-x22-y16   85T   73T    12T   85%
-/dev/grid/node-x22-y17   92T   66T    26T   71%
-/dev/grid/node-x22-y18   86T   67T    19T   77%
-/dev/grid/node-x22-y19   88T   73T    15T   82%
-/dev/grid/node-x22-y20   91T   72T    19T   79%
-/dev/grid/node-x22-y21   92T   65T    27T   70%
-/dev/grid/node-x22-y22   85T   65T    20T   76%
-/dev/grid/node-x22-y23   93T   69T    24T   74%
-/dev/grid/node-x22-y24  501T  494T     7T   98%
-/dev/grid/node-x22-y25   93T   69T    24T   74%
-/dev/grid/node-x22-y26   89T   72T    17T   80%
-/dev/grid/node-x22-y27   94T   71T    23T   75%
-/dev/grid/node-x23-y0    89T   70T    19T   78%
-/dev/grid/node-x23-y1    93T   64T    29T   68%
-/dev/grid/node-x23-y2    94T   65T    29T   69%
-/dev/grid/node-x23-y3    86T   67T    19T   77%
-/dev/grid/node-x23-y4    91T   72T    19T   79%
-/dev/grid/node-x23-y5    86T   64T    22T   74%
-/dev/grid/node-x23-y6    88T   69T    19T   78%
-/dev/grid/node-x23-y7    88T   66T    22T   75%
-/dev/grid/node-x23-y8    87T   64T    23T   73%
-/dev/grid/node-x23-y9    85T   69T    16T   81%
-/dev/grid/node-x23-y10   85T   68T    17T   80%
-/dev/grid/node-x23-y11   92T   65T    27T   70%
-/dev/grid/node-x23-y12   94T   70T    24T   74%
-/dev/grid/node-x23-y13   88T   67T    21T   76%
-/dev/grid/node-x23-y14   91T   67T    24T   73%
-/dev/grid/node-x23-y15   91T   73T    18T   80%
-/dev/grid/node-x23-y16   91T   73T    18T   80%
-/dev/grid/node-x23-y17   89T   68T    21T   76%
-/dev/grid/node-x23-y18   86T   73T    13T   84%
-/dev/grid/node-x23-y19   87T   72T    15T   82%
-/dev/grid/node-x23-y20   88T   66T    22T   75%
-/dev/grid/node-x23-y21   89T   71T    18T   79%
-/dev/grid/node-x23-y22   89T   66T    23T   74%
-/dev/grid/node-x23-y23   92T   73T    19T   79%
-/dev/grid/node-x23-y24  503T  493T    10T   98%
-/dev/grid/node-x23-y25   86T   68T    18T   79%
-/dev/grid/node-x23-y26   94T   68T    26T   72%
-/dev/grid/node-x23-y27   92T   65T    27T   70%
-/dev/grid/node-x24-y0    91T   70T    21T   76%
-/dev/grid/node-x24-y1    87T   73T    14T   83%
-/dev/grid/node-x24-y2    92T   66T    26T   71%
-/dev/grid/node-x24-y3    86T   72T    14T   83%
-/dev/grid/node-x24-y4    88T   70T    18T   79%
-/dev/grid/node-x24-y5    90T   65T    25T   72%
-/dev/grid/node-x24-y6    88T   67T    21T   76%
-/dev/grid/node-x24-y7    86T   68T    18T   79%
-/dev/grid/node-x24-y8    91T   73T    18T   80%
-/dev/grid/node-x24-y9    93T   71T    22T   76%
-/dev/grid/node-x24-y10   86T   69T    17T   80%
-/dev/grid/node-x24-y11   93T   69T    24T   74%
-/dev/grid/node-x24-y12   89T   72T    17T   80%
-/dev/grid/node-x24-y13   91T   71T    20T   78%
-/dev/grid/node-x24-y14   86T   71T    15T   82%
-/dev/grid/node-x24-y15   87T   67T    20T   77%
-/dev/grid/node-x24-y16   92T   72T    20T   78%
-/dev/grid/node-x24-y17   88T   64T    24T   72%
-/dev/grid/node-x24-y18   91T   67T    24T   73%
-/dev/grid/node-x24-y19   93T   69T    24T   74%
-/dev/grid/node-x24-y20   91T   72T    19T   79%
-/dev/grid/node-x24-y21   87T   66T    21T   75%
-/dev/grid/node-x24-y22   87T   72T    15T   82%
-/dev/grid/node-x24-y23   94T   67T    27T   71%
-/dev/grid/node-x24-y24  504T  497T     7T   98%
-/dev/grid/node-x24-y25   91T   71T    20T   78%
-/dev/grid/node-x24-y26   92T   65T    27T   70%
-/dev/grid/node-x24-y27   85T   67T    18T   78%
-/dev/grid/node-x25-y0    89T   66T    23T   74%
-/dev/grid/node-x25-y1    88T   71T    17T   80%
-/dev/grid/node-x25-y2    93T   72T    21T   77%
-/dev/grid/node-x25-y3    92T   65T    27T   70%
-/dev/grid/node-x25-y4    88T   65T    23T   73%
-/dev/grid/node-x25-y5    89T   64T    25T   71%
-/dev/grid/node-x25-y6    87T   73T    14T   83%
-/dev/grid/node-x25-y7    88T   67T    21T   76%
-/dev/grid/node-x25-y8    92T   68T    24T   73%
-/dev/grid/node-x25-y9    86T   70T    16T   81%
-/dev/grid/node-x25-y10   91T   68T    23T   74%
-/dev/grid/node-x25-y11   90T   65T    25T   72%
-/dev/grid/node-x25-y12   92T   67T    25T   72%
-/dev/grid/node-x25-y13   90T   66T    24T   73%
-/dev/grid/node-x25-y14   93T   66T    27T   70%
-/dev/grid/node-x25-y15   86T   68T    18T   79%
-/dev/grid/node-x25-y16   92T   69T    23T   75%
-/dev/grid/node-x25-y17   88T   66T    22T   75%
-/dev/grid/node-x25-y18   91T   73T    18T   80%
-/dev/grid/node-x25-y19   86T   71T    15T   82%
-/dev/grid/node-x25-y20   88T   70T    18T   79%
-/dev/grid/node-x25-y21   85T   66T    19T   77%
-/dev/grid/node-x25-y22   92T   64T    28T   69%
-/dev/grid/node-x25-y23   87T   72T    15T   82%
-/dev/grid/node-x25-y24  506T  493T    13T   97%
-/dev/grid/node-x25-y25   85T   64T    21T   75%
-/dev/grid/node-x25-y26   87T   64T    23T   73%
-/dev/grid/node-x25-y27   88T   72T    16T   81%
-/dev/grid/node-x26-y0    87T   73T    14T   83%
-/dev/grid/node-x26-y1    91T   72T    19T   79%
-/dev/grid/node-x26-y2    86T   66T    20T   76%
-/dev/grid/node-x26-y3    86T   72T    14T   83%
-/dev/grid/node-x26-y4    90T   67T    23T   74%
-/dev/grid/node-x26-y5    87T   70T    17T   80%
-/dev/grid/node-x26-y6    87T   64T    23T   73%
-/dev/grid/node-x26-y7    90T   64T    26T   71%
-/dev/grid/node-x26-y8    85T   64T    21T   75%
-/dev/grid/node-x26-y9    92T   68T    24T   73%
-/dev/grid/node-x26-y10   92T   65T    27T   70%
-/dev/grid/node-x26-y11   88T   65T    23T   73%
-/dev/grid/node-x26-y12   85T   70T    15T   82%
-/dev/grid/node-x26-y13   86T   68T    18T   79%
-/dev/grid/node-x26-y14   92T   70T    22T   76%
-/dev/grid/node-x26-y15   89T   68T    21T   76%
-/dev/grid/node-x26-y16   89T   66T    23T   74%
-/dev/grid/node-x26-y17   86T   71T    15T   82%
-/dev/grid/node-x26-y18   87T   68T    19T   78%
-/dev/grid/node-x26-y19   88T   69T    19T   78%
-/dev/grid/node-x26-y20   92T   67T    25T   72%
-/dev/grid/node-x26-y21   94T   69T    25T   73%
-/dev/grid/node-x26-y22   86T   68T    18T   79%
-/dev/grid/node-x26-y23   85T   73T    12T   85%
-/dev/grid/node-x26-y24  508T  498T    10T   98%
-/dev/grid/node-x26-y25   85T   73T    12T   85%
-/dev/grid/node-x26-y26   88T   69T    19T   78%
-/dev/grid/node-x26-y27   89T   68T    21T   76%
-/dev/grid/node-x27-y0    86T   64T    22T   74%
-/dev/grid/node-x27-y1    93T   65T    28T   69%
-/dev/grid/node-x27-y2    92T   71T    21T   77%
-/dev/grid/node-x27-y3    87T   68T    19T   78%
-/dev/grid/node-x27-y4    92T   64T    28T   69%
-/dev/grid/node-x27-y5    91T   65T    26T   71%
-/dev/grid/node-x27-y6    86T   64T    22T   74%
-/dev/grid/node-x27-y7    90T   73T    17T   81%
-/dev/grid/node-x27-y8    91T   67T    24T   73%
-/dev/grid/node-x27-y9    85T   69T    16T   81%
-/dev/grid/node-x27-y10   92T   64T    28T   69%
-/dev/grid/node-x27-y11   93T   69T    24T   74%
-/dev/grid/node-x27-y12   90T   69T    21T   76%
-/dev/grid/node-x27-y13   87T   72T    15T   82%
-/dev/grid/node-x27-y14   94T   70T    24T   74%
-/dev/grid/node-x27-y15   91T   72T    19T   79%
-/dev/grid/node-x27-y16   86T   70T    16T   81%
-/dev/grid/node-x27-y17   90T   67T    23T   74%
-/dev/grid/node-x27-y18   86T   73T    13T   84%
-/dev/grid/node-x27-y19   92T   66T    26T   71%
-/dev/grid/node-x27-y20   94T   64T    30T   68%
-/dev/grid/node-x27-y21   89T   70T    19T   78%
-/dev/grid/node-x27-y22   91T   73T    18T   80%
-/dev/grid/node-x27-y23   89T   67T    22T   75%
-/dev/grid/node-x27-y24  503T  490T    13T   97%
-/dev/grid/node-x27-y25   94T   67T    27T   71%
-/dev/grid/node-x27-y26   90T   68T    22T   75%
-/dev/grid/node-x27-y27   87T   72T    15T   82%
-/dev/grid/node-x28-y0    90T   68T    22T   75%
-/dev/grid/node-x28-y1    86T   73T    13T   84%
-/dev/grid/node-x28-y2    88T   73T    15T   82%
-/dev/grid/node-x28-y3    93T   70T    23T   75%
-/dev/grid/node-x28-y4    86T   64T    22T   74%
-/dev/grid/node-x28-y5    86T   69T    17T   80%
-/dev/grid/node-x28-y6    89T   71T    18T   79%
-/dev/grid/node-x28-y7    94T   72T    22T   76%
-/dev/grid/node-x28-y8    85T   68T    17T   80%
-/dev/grid/node-x28-y9    90T   69T    21T   76%
-/dev/grid/node-x28-y10   87T   73T    14T   83%
-/dev/grid/node-x28-y11   86T   64T    22T   74%
-/dev/grid/node-x28-y12   88T   71T    17T   80%
-/dev/grid/node-x28-y13   87T   64T    23T   73%
-/dev/grid/node-x28-y14   94T   71T    23T   75%
-/dev/grid/node-x28-y15   85T   73T    12T   85%
-/dev/grid/node-x28-y16   86T   69T    17T   80%
-/dev/grid/node-x28-y17   92T   72T    20T   78%
-/dev/grid/node-x28-y18   88T   71T    17T   80%
-/dev/grid/node-x28-y19   85T   68T    17T   80%
-/dev/grid/node-x28-y20   94T   65T    29T   69%
-/dev/grid/node-x28-y21   85T   71T    14T   83%
-/dev/grid/node-x28-y22   85T   67T    18T   78%
-/dev/grid/node-x28-y23   94T   65T    29T   69%
-/dev/grid/node-x28-y24  509T  496T    13T   97%
-/dev/grid/node-x28-y25   93T   71T    22T   76%
-/dev/grid/node-x28-y26   87T   72T    15T   82%
-/dev/grid/node-x28-y27   90T   72T    18T   80%
-/dev/grid/node-x29-y0    91T   67T    24T   73%
-/dev/grid/node-x29-y1    90T   66T    24T   73%
-/dev/grid/node-x29-y2    89T   71T    18T   79%
-/dev/grid/node-x29-y3    87T   68T    19T   78%
-/dev/grid/node-x29-y4    86T   64T    22T   74%
-/dev/grid/node-x29-y5    93T   73T    20T   78%
-/dev/grid/node-x29-y6    86T   65T    21T   75%
-/dev/grid/node-x29-y7    94T   70T    24T   74%
-/dev/grid/node-x29-y8    88T   72T    16T   81%
-/dev/grid/node-x29-y9    93T   66T    27T   70%
-/dev/grid/node-x29-y10   89T   65T    24T   73%
-/dev/grid/node-x29-y11   89T   72T    17T   80%
-/dev/grid/node-x29-y12   88T   72T    16T   81%
-/dev/grid/node-x29-y13   94T   71T    23T   75%
-/dev/grid/node-x29-y14   93T   65T    28T   69%
-/dev/grid/node-x29-y15   89T   72T    17T   80%
-/dev/grid/node-x29-y16   85T   71T    14T   83%
-/dev/grid/node-x29-y17   93T   68T    25T   73%
-/dev/grid/node-x29-y18   86T   66T    20T   76%
-/dev/grid/node-x29-y19   90T   65T    25T   72%
-/dev/grid/node-x29-y20   94T   66T    28T   70%
-/dev/grid/node-x29-y21   87T   68T    19T   78%
-/dev/grid/node-x29-y22   92T   70T    22T   76%
-/dev/grid/node-x29-y23   92T   72T    20T   78%
-/dev/grid/node-x29-y24  508T  497T    11T   97%
-/dev/grid/node-x29-y25   87T   64T    23T   73%
-/dev/grid/node-x29-y26   86T   68T    18T   79%
-/dev/grid/node-x29-y27   87T   71T    16T   81%
-/dev/grid/node-x30-y0    89T   71T    18T   79%
-/dev/grid/node-x30-y1    93T   64T    29T   68%
-/dev/grid/node-x30-y2    86T   73T    13T   84%
-/dev/grid/node-x30-y3    89T   71T    18T   79%
-/dev/grid/node-x30-y4    86T   70T    16T   81%
-/dev/grid/node-x30-y5    85T   70T    15T   82%
-/dev/grid/node-x30-y6    85T   72T    13T   84%
-/dev/grid/node-x30-y7    94T   64T    30T   68%
-/dev/grid/node-x30-y8    94T   64T    30T   68%
-/dev/grid/node-x30-y9    89T   65T    24T   73%
-/dev/grid/node-x30-y10   87T   71T    16T   81%
-/dev/grid/node-x30-y11   93T   64T    29T   68%
-/dev/grid/node-x30-y12   91T   67T    24T   73%
-/dev/grid/node-x30-y13   89T   68T    21T   76%
-/dev/grid/node-x30-y14   88T   67T    21T   76%
-/dev/grid/node-x30-y15   85T   71T    14T   83%
-/dev/grid/node-x30-y16   85T   64T    21T   75%
-/dev/grid/node-x30-y17   86T   73T    13T   84%
-/dev/grid/node-x30-y18   89T   65T    24T   73%
-/dev/grid/node-x30-y19   92T   72T    20T   78%
-/dev/grid/node-x30-y20   88T   70T    18T   79%
-/dev/grid/node-x30-y21   94T   66T    28T   70%
-/dev/grid/node-x30-y22   91T   68T    23T   74%
-/dev/grid/node-x30-y23   90T   66T    24T   73%
-/dev/grid/node-x30-y24  509T  494T    15T   97%
-/dev/grid/node-x30-y25   86T   72T    14T   83%
-/dev/grid/node-x30-y26   90T   65T    25T   72%
-/dev/grid/node-x30-y27   85T   69T    16T   81%
-/dev/grid/node-x31-y0    88T   64T    24T   72%
-/dev/grid/node-x31-y1    92T   70T    22T   76%
-/dev/grid/node-x31-y2    90T   69T    21T   76%
-/dev/grid/node-x31-y3    87T   70T    17T   80%
-/dev/grid/node-x31-y4    92T   72T    20T   78%
-/dev/grid/node-x31-y5    94T   72T    22T   76%
-/dev/grid/node-x31-y6    91T   68T    23T   74%
-/dev/grid/node-x31-y7    90T   69T    21T   76%
-/dev/grid/node-x31-y8    91T   64T    27T   70%
-/dev/grid/node-x31-y9    87T   68T    19T   78%
-/dev/grid/node-x31-y10   87T   69T    18T   79%
-/dev/grid/node-x31-y11   90T   68T    22T   75%
-/dev/grid/node-x31-y12   92T   70T    22T   76%
-/dev/grid/node-x31-y13   93T   64T    29T   68%
-/dev/grid/node-x31-y14   91T   66T    25T   72%
-/dev/grid/node-x31-y15   87T   64T    23T   73%
-/dev/grid/node-x31-y16   94T   69T    25T   73%
-/dev/grid/node-x31-y17   89T   70T    19T   78%
-/dev/grid/node-x31-y18   91T   69T    22T   75%
-/dev/grid/node-x31-y19   85T   69T    16T   81%
-/dev/grid/node-x31-y20   86T   67T    19T   77%
-/dev/grid/node-x31-y21   93T   69T    24T   74%
-/dev/grid/node-x31-y22   93T   64T    29T   68%
-/dev/grid/node-x31-y23   87T   73T    14T   83%
-/dev/grid/node-x31-y24  510T  494T    16T   96%
-/dev/grid/node-x31-y25   90T   68T    22T   75%
-/dev/grid/node-x31-y26   89T   73T    16T   82%
-/dev/grid/node-x31-y27   91T   65T    26T   71%
-/dev/grid/node-x32-y0    93T   70T    23T   75%
-/dev/grid/node-x32-y1    90T   71T    19T   78%
-/dev/grid/node-x32-y2    87T   71T    16T   81%
-/dev/grid/node-x32-y3    94T   64T    30T   68%
-/dev/grid/node-x32-y4    90T   64T    26T   71%
-/dev/grid/node-x32-y5    90T   67T    23T   74%
-/dev/grid/node-x32-y6    90T   70T    20T   77%
-/dev/grid/node-x32-y7    94T   64T    30T   68%
-/dev/grid/node-x32-y8    91T   67T    24T   73%
-/dev/grid/node-x32-y9    89T   64T    25T   71%
-/dev/grid/node-x32-y10   88T   70T    18T   79%
-/dev/grid/node-x32-y11   85T   68T    17T   80%
-/dev/grid/node-x32-y12   85T   68T    17T   80%
-/dev/grid/node-x32-y13   86T   68T    18T   79%
-/dev/grid/node-x32-y14   87T   71T    16T   81%
-/dev/grid/node-x32-y15   85T   70T    15T   82%
-/dev/grid/node-x32-y16   92T   71T    21T   77%
-/dev/grid/node-x32-y17   88T   71T    17T   80%
-/dev/grid/node-x32-y18   93T   71T    22T   76%
-/dev/grid/node-x32-y19   89T   67T    22T   75%
-/dev/grid/node-x32-y20   85T   68T    17T   80%
-/dev/grid/node-x32-y21   86T   65T    21T   75%
-/dev/grid/node-x32-y22   91T   70T    21T   76%
-/dev/grid/node-x32-y23   87T   72T    15T   82%
-/dev/grid/node-x32-y24  506T  490T    16T   96%
-/dev/grid/node-x32-y25   94T   68T    26T   72%
-/dev/grid/node-x32-y26   86T   65T    21T   75%
-/dev/grid/node-x32-y27   91T   70T    21T   76%
-/dev/grid/node-x33-y0    90T   72T    18T   80%
-/dev/grid/node-x33-y1    90T   70T    20T   77%
-/dev/grid/node-x33-y2    94T   69T    25T   73%
-/dev/grid/node-x33-y3    86T   67T    19T   77%
-/dev/grid/node-x33-y4    88T   66T    22T   75%
-/dev/grid/node-x33-y5    91T   67T    24T   73%
-/dev/grid/node-x33-y6    94T   65T    29T   69%
-/dev/grid/node-x33-y7    89T   67T    22T   75%
-/dev/grid/node-x33-y8    87T   72T    15T   82%
-/dev/grid/node-x33-y9    93T   68T    25T   73%
-/dev/grid/node-x33-y10   91T   71T    20T   78%
-/dev/grid/node-x33-y11   87T   69T    18T   79%
-/dev/grid/node-x33-y12   88T   65T    23T   73%
-/dev/grid/node-x33-y13   86T   64T    22T   74%
-/dev/grid/node-x33-y14   92T   67T    25T   72%
-/dev/grid/node-x33-y15   94T   67T    27T   71%
-/dev/grid/node-x33-y16   85T   73T    12T   85%
-/dev/grid/node-x33-y17   92T   64T    28T   69%
-/dev/grid/node-x33-y18   87T   65T    22T   74%
-/dev/grid/node-x33-y19   87T   68T    19T   78%
-/dev/grid/node-x33-y20   89T   73T    16T   82%
-/dev/grid/node-x33-y21   87T   65T    22T   74%
-/dev/grid/node-x33-y22   92T   71T    21T   77%
-/dev/grid/node-x33-y23   89T   67T    22T   75%
-/dev/grid/node-x33-y24  505T  497T     8T   98%
-/dev/grid/node-x33-y25   91T   64T    27T   70%
-/dev/grid/node-x33-y26   88T   67T    21T   76%
-/dev/grid/node-x33-y27   93T   68T    25T   73%
-/dev/grid/node-x34-y0    88T   66T    22T   75%
-/dev/grid/node-x34-y1    94T   69T    25T   73%
-/dev/grid/node-x34-y2    89T   66T    23T   74%
-/dev/grid/node-x34-y3    90T   64T    26T   71%
-/dev/grid/node-x34-y4    86T   73T    13T   84%
-/dev/grid/node-x34-y5    93T   67T    26T   72%
-/dev/grid/node-x34-y6    86T   73T    13T   84%
-/dev/grid/node-x34-y7    85T   70T    15T   82%
-/dev/grid/node-x34-y8    92T   70T    22T   76%
-/dev/grid/node-x34-y9    89T   67T    22T   75%
-/dev/grid/node-x34-y10   86T   68T    18T   79%
-/dev/grid/node-x34-y11   91T   65T    26T   71%
-/dev/grid/node-x34-y12   94T   72T    22T   76%
-/dev/grid/node-x34-y13   91T   70T    21T   76%
-/dev/grid/node-x34-y14   91T   72T    19T   79%
-/dev/grid/node-x34-y15   91T   64T    27T   70%
-/dev/grid/node-x34-y16   89T   67T    22T   75%
-/dev/grid/node-x34-y17   92T   67T    25T   72%
-/dev/grid/node-x34-y18   89T   69T    20T   77%
-/dev/grid/node-x34-y19   87T   66T    21T   75%
-/dev/grid/node-x34-y20   94T   71T    23T   75%
-/dev/grid/node-x34-y21   86T   71T    15T   82%
-/dev/grid/node-x34-y22   89T   72T    17T   80%
-/dev/grid/node-x34-y23   87T   73T    14T   83%
-/dev/grid/node-x34-y24  509T  494T    15T   97%
-/dev/grid/node-x34-y25   88T   69T    19T   78%
-/dev/grid/node-x34-y26   87T    0T    87T    0%
-/dev/grid/node-x34-y27   90T   67T    23T   74%
-/dev/grid/node-x35-y0    94T   69T    25T   73%
-/dev/grid/node-x35-y1    90T   71T    19T   78%
-/dev/grid/node-x35-y2    93T   72T    21T   77%
-/dev/grid/node-x35-y3    85T   64T    21T   75%
-/dev/grid/node-x35-y4    91T   69T    22T   75%
-/dev/grid/node-x35-y5    94T   73T    21T   77%
-/dev/grid/node-x35-y6    88T   65T    23T   73%
-/dev/grid/node-x35-y7    91T   67T    24T   73%
-/dev/grid/node-x35-y8    90T   66T    24T   73%
-/dev/grid/node-x35-y9    94T   70T    24T   74%
-/dev/grid/node-x35-y10   92T   68T    24T   73%
-/dev/grid/node-x35-y11   90T   64T    26T   71%
-/dev/grid/node-x35-y12   92T   68T    24T   73%
-/dev/grid/node-x35-y13   94T   64T    30T   68%
-/dev/grid/node-x35-y14   94T   68T    26T   72%
-/dev/grid/node-x35-y15   94T   68T    26T   72%
-/dev/grid/node-x35-y16   94T   70T    24T   74%
-/dev/grid/node-x35-y17   93T   68T    25T   73%
-/dev/grid/node-x35-y18   88T   70T    18T   79%
-/dev/grid/node-x35-y19   89T   66T    23T   74%
-/dev/grid/node-x35-y20   85T   73T    12T   85%
-/dev/grid/node-x35-y21   89T   72T    17T   80%
-/dev/grid/node-x35-y22   86T   72T    14T   83%
-/dev/grid/node-x35-y23   89T   71T    18T   79%
-/dev/grid/node-x35-y24  510T  498T    12T   97%
-/dev/grid/node-x35-y25   93T   69T    24T   74%
-/dev/grid/node-x35-y26   86T   71T    15T   82%
-/dev/grid/node-x35-y27   89T   64T    25T   71%
-/dev/grid/node-x36-y0    87T   64T    23T   73%
-/dev/grid/node-x36-y1    91T   69T    22T   75%
-/dev/grid/node-x36-y2    87T   68T    19T   78%
-/dev/grid/node-x36-y3    90T   65T    25T   72%
-/dev/grid/node-x36-y4    90T   65T    25T   72%
-/dev/grid/node-x36-y5    87T   68T    19T   78%
-/dev/grid/node-x36-y6    94T   70T    24T   74%
-/dev/grid/node-x36-y7    94T   68T    26T   72%
-/dev/grid/node-x36-y8    90T   69T    21T   76%
-/dev/grid/node-x36-y9    88T   67T    21T   76%
-/dev/grid/node-x36-y10   93T   64T    29T   68%
-/dev/grid/node-x36-y11   89T   71T    18T   79%
-/dev/grid/node-x36-y12   88T   65T    23T   73%
-/dev/grid/node-x36-y13   89T   73T    16T   82%
-/dev/grid/node-x36-y14   86T   70T    16T   81%
-/dev/grid/node-x36-y15   87T   64T    23T   73%
-/dev/grid/node-x36-y16   86T   71T    15T   82%
-/dev/grid/node-x36-y17   85T   71T    14T   83%
-/dev/grid/node-x36-y18   90T   72T    18T   80%
-/dev/grid/node-x36-y19   92T   68T    24T   73%
-/dev/grid/node-x36-y20   91T   66T    25T   72%
-/dev/grid/node-x36-y21   87T   67T    20T   77%
-/dev/grid/node-x36-y22   85T   66T    19T   77%
-/dev/grid/node-x36-y23   86T   67T    19T   77%
-/dev/grid/node-x36-y24  502T  499T     3T   99%
-/dev/grid/node-x36-y25   94T   70T    24T   74%
-/dev/grid/node-x36-y26   85T   72T    13T   84%
-/dev/grid/node-x36-y27   87T   68T    19T   78%
-/dev/grid/node-x37-y0    93T   70T    23T   75%
-/dev/grid/node-x37-y1    92T   72T    20T   78%
-/dev/grid/node-x37-y2    89T   73T    16T   82%
-/dev/grid/node-x37-y3    94T   70T    24T   74%
-/dev/grid/node-x37-y4    92T   66T    26T   71%
-/dev/grid/node-x37-y5    91T   64T    27T   70%
-/dev/grid/node-x37-y6    87T   64T    23T   73%
-/dev/grid/node-x37-y7    90T   72T    18T   80%
-/dev/grid/node-x37-y8    91T   66T    25T   72%
-/dev/grid/node-x37-y9    94T   65T    29T   69%
-/dev/grid/node-x37-y10   85T   70T    15T   82%
-/dev/grid/node-x37-y11   89T   69T    20T   77%
-/dev/grid/node-x37-y12   93T   71T    22T   76%
-/dev/grid/node-x37-y13   88T   67T    21T   76%
-/dev/grid/node-x37-y14   94T   67T    27T   71%
-/dev/grid/node-x37-y15   86T   73T    13T   84%
-/dev/grid/node-x37-y16   85T   68T    17T   80%
-/dev/grid/node-x37-y17   89T   72T    17T   80%
-/dev/grid/node-x37-y18   88T   67T    21T   76%
-/dev/grid/node-x37-y19   87T   66T    21T   75%
-/dev/grid/node-x37-y20   88T   69T    19T   78%
-/dev/grid/node-x37-y21   86T   70T    16T   81%
-/dev/grid/node-x37-y22   92T   68T    24T   73%
-/dev/grid/node-x37-y23   87T   70T    17T   80%
-/dev/grid/node-x37-y24  502T  498T     4T   99%
-/dev/grid/node-x37-y25   87T   72T    15T   82%
-/dev/grid/node-x37-y26   90T   64T    26T   71%
-/dev/grid/node-x37-y27   90T   70T    20T   77%
diff --git a/adventofcode16/data/advent23.txt b/adventofcode16/data/advent23.txt
deleted file mode 100644 (file)
index 93f25d2..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-cpy a b
-dec b
-cpy a d
-cpy 0 a
-cpy b c
-inc a
-dec c
-jnz c -2
-dec d
-jnz d -5
-dec b
-cpy b c
-cpy c d
-dec d
-inc c
-jnz d -2
-tgl c
-cpy -16 c
-jnz 1 c
-cpy 94 c
-jnz 99 d
-inc a
-inc d
-jnz d -2
-inc c
-jnz c -5
\ No newline at end of file
diff --git a/adventofcode16/src/Lib.hs b/adventofcode16/src/Lib.hs
deleted file mode 100644 (file)
index d36ff27..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-module Lib
-    ( someFunc
-    ) where
-
-someFunc :: IO ()
-someFunc = putStrLn "someFunc"
diff --git a/adventofcode16/stack.yaml b/adventofcode16/stack.yaml
deleted file mode 100644 (file)
index b77fb38..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-flags: {}
-extra-package-dbs: []
-packages:
-- '.'
-system-ghc: true
-extra-deps:
-- astar-0.3.0.0
-- parsec-numbers-0.1.0
-- pqueue-1.3.2
-resolver: lts-6.25
diff --git a/adventofcode16/test/Spec.hs b/adventofcode16/test/Spec.hs
deleted file mode 100644 (file)
index cd4753f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-main :: IO ()
-main = putStrLn "Test suite not yet implemented"
diff --git a/app/Main.hs b/app/Main.hs
new file mode 100644 (file)
index 0000000..de1c1ab
--- /dev/null
@@ -0,0 +1,6 @@
+module Main where
+
+import Lib
+
+main :: IO ()
+main = someFunc
diff --git a/app/advent01.hs b/app/advent01.hs
new file mode 100644 (file)
index 0000000..b76195d
--- /dev/null
@@ -0,0 +1,99 @@
+module Main(main) where
+
+import Data.List (sort)
+import Data.List.Split (splitOn)
+
+-- turn direction, number of steps
+data Step = Step Char Int deriving (Show)
+
+data Direction = North | East | South | West 
+    deriving (Enum, Show, Bounded, Eq)
+
+-- direction, easting, northing
+data Position = Position Direction Int Int deriving (Show)
+-- Two positions are the same if they're in the same place, 
+-- regardless of facing
+instance Eq Position where
+    Position _ e n == Position _ e' n' = e == e' && n == n'
+
+main :: IO ()
+main = do 
+        instructions <- readFile "data/advent01.txt"
+        part1 instructions
+        part2 instructions
+
+part1 :: String -> IO ()
+part1 instructions = do
+        let answer = finalDistance $ last $ stepsFromStart $ steps instructions
+        print answer
+
+part2 :: String -> IO ()
+part2 instructions = do
+        let visited = finalDistance $ firstRepeat $ stepsFromStart $ expandSteps $ steps instructions
+        print visited
+
+
+-- Extract the steps from the input string.
+steps :: String -> [Step]
+steps s = map readStep $ splitOn ", " s
+    where readStep (d:l) = Step d (read l)
+
+-- Take steps from the starting position
+stepsFromStart :: [Step] -> [Position]
+stepsFromStart = takeSteps (Position North 0 0)
+
+-- Calculate manhattan distance from start to this state
+finalDistance :: Position -> Int
+finalDistance (Position _ e n) = (abs e) + (abs n)
+
+-- For part 2: convert one step of many spaces to many steps of one space each
+expandSteps :: [Step] -> [Step]
+expandSteps = 
+    concatMap expandStep
+    where expandStep (Step dir d) = (Step dir 1) : replicate (d - 1) (Step 'S' 1)
+
+-- Execute a series of steps, keeping track of the positions after each step
+takeSteps :: Position -> [Step] -> [Position]
+-- takeSteps pos steps = scanl move pos steps
+takeSteps = scanl move
+
+-- Make one move, by updating direction then position
+move :: Position -> Step -> Position
+move (Position facing easting northing)
+    (Step turnInstr distance) = 
+    Position facing' easting' northing'
+    where facing' = turn turnInstr facing
+          (easting', northing') = takeStep facing' distance easting northing
+
+-- Turn right, left, or straight
+turn :: Char -> Direction -> Direction
+turn 'R' direction = turnCW direction
+turn 'L' direction = turnACW direction
+turn 'S' direction = direction
+
+-- Move in the current direction
+takeStep :: Direction -> Int -> Int -> Int -> (Int, Int)
+takeStep North d e n = (e, n+d)
+takeStep South d e n = (e, n-d)
+takeStep West  d e n = (e-d, n)
+takeStep East  d e n = (e+d, n)
+
+
+-- | a `succ` that wraps 
+turnCW :: (Bounded a, Enum a, Eq a) => a -> a 
+turnCW dir | dir == maxBound = minBound
+         | otherwise = succ dir
+
+-- | a `pred` that wraps
+turnACW :: (Bounded a, Enum a, Eq a) => a -> a
+turnACW dir | dir == minBound = maxBound
+            | otherwise = pred dir
+
+-- All the prefixes of a list of items
+prefixes = scanl addTerm []
+    where addTerm ps t = ps ++ [t]
+
+-- The first item that exists in a prefix of the list to that point
+firstRepeat positions = 
+    last $ head $ dropWhile (\p -> (last p) `notElem` (tail $ reverse p)) 
+                            (tail $ prefixes positions)
diff --git a/app/advent02.hs b/app/advent02.hs
new file mode 100644 (file)
index 0000000..747001d
--- /dev/null
@@ -0,0 +1,90 @@
+module Main(main) where
+
+import Data.Array.IArray
+
+-- Row 1 is top, column 1 is left
+type Position = (Int, Int)
+type Keyboard = Array Position Char
+
+kb1 = ["xxxxx", 
+       "x123x", 
+       "x456x",
+       "x789x",
+       "xxxxx"]
+
+kb2 = ["xxxxxxx",
+       "xxx1xxx",
+       "xx234xx",
+       "x56789x",
+       "xxABCxx",
+       "xxxDxxx",
+       "xxxxxxx"]
+
+enumerate = zip [0..]
+
+mkKeyboard :: [String] -> Keyboard
+mkKeyboard kb = array ((0, 0), (length kb - 1, length (kb!!0) - 1))
+    [((i, j), c) | (i, r) <- enumerate kb, (j, c) <- enumerate r]
+
+keyboard1 = mkKeyboard kb1
+keyboard2 = mkKeyboard kb2
+
+findKey :: Keyboard -> Char-> Position
+findKey kb c = fst $ head $ filter (\a -> (snd a) == c) $ assocs kb
+
+-- data Coord = One | Two | Three
+--     deriving (Read, Show, Eq, Ord, Enum, Bounded)
+-- -- instance Bounded Coord where
+-- --     minBound = Coord 1
+-- --     maxBound = Coord 3
+
+-- data Position = Position Coord Coord
+--     deriving (Show, Eq)
+
+main :: IO ()
+main = do 
+        instrText <- readFile "data/advent02.txt" 
+        let instructions = lines instrText
+        part1 instructions
+        part2 instructions
+
+part1 :: [String] -> IO ()
+part1 instructions = do 
+        putStrLn $ followInstructions keyboard1 instructions
+
+
+part2 :: [String] -> IO ()
+part2 instructions = do 
+        putStrLn $ followInstructions keyboard2 instructions
+
+
+followInstructions :: Keyboard -> [String] -> String
+followInstructions kb instr = moveSeries kb (startPosition kb) instr
+
+
+startPosition :: Keyboard -> Position
+startPosition kb = findKey kb '5'
+
+moveSeries :: Keyboard -> Position -> [String] -> String
+moveSeries _ _ [] = []
+moveSeries kb p (i:is) = (n:ns)
+    where p' = makeMoves kb p i
+          n = kb ! p'
+          ns = moveSeries kb p' is
+
+makeMoves :: Keyboard -> Position -> [Char] -> Position
+makeMoves kb p ms = foldl (safeMove kb) p ms
+
+safeMove :: Keyboard -> Position -> Char -> Position
+safeMove kb pos dir = maybeRevert kb pos (move pos dir)
+
+move :: Position -> Char -> Position
+move (r, c) 'U' = (r-1, c)
+move (r, c) 'D' = (r+1, c)
+move (r, c) 'L' = (r, c-1)
+move (r, c) 'R' = (r, c+1)
+
+maybeRevert :: Keyboard -> Position -> Position -> Position
+maybeRevert kb oldPos newPos 
+    | kb ! newPos == 'x' = oldPos
+    | otherwise = newPos
diff --git a/app/advent03.hs b/app/advent03.hs
new file mode 100644 (file)
index 0000000..ef40bcc
--- /dev/null
@@ -0,0 +1,33 @@
+module Main(main) where
+
+import Data.List (transpose, sort)
+import Data.List.Split (splitOn, chunksOf)
+
+type Triple = [Integer]
+
+main :: IO ()
+main = do 
+        instrText <- readFile "data/advent03.txt" 
+        let triangles = map (parseLine) $ lines instrText
+        part1 triangles
+        part2 triangles
+
+
+part1 :: [Triple] -> IO ()
+part1 triangles = do 
+    print $ length $ filter (validTriangle) triangles 
+
+part2 :: [Triple] -> IO ()
+part2 triangles = do 
+    print $ length $ filter (validTriangle) $ byColumns triangles 
+
+
+parseLine :: String -> Triple
+parseLine = map (read) . filter (not . null) . splitOn " "
+
+validTriangle :: Triple -> Bool
+validTriangle triple = sortedTriple!!0 + sortedTriple!!1 > sortedTriple!!2
+    where sortedTriple = sort triple
+
+byColumns :: [[Integer]] -> [Triple]
+byColumns = chunksOf 3 . concat . transpose 
diff --git a/app/advent04.hs b/app/advent04.hs
new file mode 100644 (file)
index 0000000..85b7555
--- /dev/null
@@ -0,0 +1,66 @@
+module Main(main) where
+
+import Data.List (last, intersperse, sortBy, intercalate, isInfixOf, init)
+import Data.List.Split (splitOn)
+import Data.Char (isLetter, ord, chr)
+import qualified Data.Map.Lazy as Map
+
+data Room = Room { name :: String
+                 , sector :: Int
+                 , checksum :: String
+                 } deriving (Show)
+
+main :: IO ()
+main = do 
+        instrText <- readFile "data/advent04.txt" 
+        let rooms = map (parseLine) $ lines instrText
+        part1 rooms
+        part2 rooms
+
+
+part1 :: [Room] -> IO ()
+part1 rooms = do 
+    print $ sum $ map (sector) validRooms
+    where 
+        validChecksum room = (checksum room) == makeChecksum (name room)
+        validRooms = filter (validChecksum) rooms
+
+part2 :: [Room] -> IO ()
+part2 rooms = do 
+    print $ fst $ head $ filter (\sn -> isInfixOf "north" (snd sn)) sectorNames
+    where 
+        validChecksum room = (checksum room) == makeChecksum (name room)
+        validRooms = filter (validChecksum) rooms
+        sectorNames = [((sector r),
+            shiftWord (sector r) (name r)) | r <- validRooms]
+
+
+parseLine :: String -> Room
+parseLine line = Room {name=name, sector=sector, checksum=checksum}
+    where components = splitOn "-" line
+          name = intercalate "-" $ init components
+          sector = read $ head $ splitOn "[" $ last components
+          checksum = filter (isLetter) $ last components
+
+countedLetters :: String -> [(Char, Int)]
+countedLetters name = sortBy sortCLetter $ unsortedCountedLetters name
+    where unsortedCountedLetters name = 
+            Map.toList $ Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
+
+sortCLetter :: (Char, Int) -> (Char, Int) -> Ordering
+sortCLetter (l1, n1) (l2, n2)
+    | n1 < n2 = GT
+    | n1 > n2 = LT
+    | n1 == n2 = compare l1 l2
+
+makeChecksum :: String -> String
+makeChecksum name = [l | (l, _) <- take 5 $ countedLetters name]
+
+
+shiftWord :: Int -> String -> String
+shiftWord shift letters = map (shiftLetter shift) letters
+
+shiftLetter :: Int -> Char -> Char
+shiftLetter shift letter
+    | isLetter letter = chr $ (ord letter - ord 'a' + shift) `mod` 26 + ord 'a'
+    | otherwise = ' '
diff --git a/app/advent05.hs b/app/advent05.hs
new file mode 100644 (file)
index 0000000..82a035e
--- /dev/null
@@ -0,0 +1,44 @@
+module Main(main) where
+
+import Data.Hash.MD5 (md5s, Str(..))
+import Data.List (isPrefixOf)
+import qualified Data.Map.Lazy as Map 
+
+type Password = Map.Map Integer Char
+
+input = "cxdnnyjw"
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+
+part1 :: IO ()
+part1 = do 
+    putStrLn $ take 8 [h!!5 | h <- filter (interesting) $ md5sequence input 0]
+
+part2 :: IO ()
+part2 = do 
+    putStrLn $ Map.foldr (:) [] password
+    where interestingHashes = 
+            [(read [h!!5], h!!6) | 
+              h <- filter (interesting) (md5sequence input 0), 
+              h!!5 `elem` "01234567"]
+          password = findPassword Map.empty interestingHashes
+
+
+md5sequence :: String -> Integer -> [String]
+md5sequence key i = (md5s (Str (key ++ show i))) : (md5sequence key (i+1))
+
+interesting :: String -> Bool
+interesting hash = "00000" `isPrefixOf` hash
+
+dontReplace :: (Integer, Char) -> Password -> Password
+dontReplace (k, v) = Map.insertWith (\_ v -> v) k v
+
+findPassword :: Password -> [(Integer, Char)] -> Password
+findPassword p (c:cs)
+  | Map.size p == 8 = p
+  | otherwise = findPassword p' cs
+      where p' = dontReplace c p
diff --git a/app/advent06-old.hs b/app/advent06-old.hs
new file mode 100644 (file)
index 0000000..77d4093
--- /dev/null
@@ -0,0 +1,36 @@
+module Main(main) where
+
+import Data.List (transpose)
+import Data.Char (isLetter)
+import qualified Data.Map.Lazy as Map
+
+main :: IO ()
+main = do 
+    text <- readFile "advent06.txt" 
+    let message = lines text
+    part1 message
+    part2 message
+
+part1 :: [String] -> IO ()
+part1 message = do 
+    print $ map (fst) $ map (mostCommon) $ map (countedLetters) $ transpose message
+
+part2 :: [String] -> IO ()
+part2 message = do 
+    print $ map (fst) $ map (leastCommon) $ map (countedLetters) $ transpose message
+
+
+countedLetters :: String -> Map.Map Char Int
+countedLetters name = Map.fromListWith (+) [(c, 1) | c <- filter (isLetter) name]
+
+mostCommon = Map.foldlWithKey (mostCommonP) ('a', 0)
+
+mostCommonP (letter0, count0) letter count
+    | count > count0 = (letter, count)
+    | otherwise = (letter0, count0)
+
+leastCommon = Map.foldlWithKey (leastCommonP) ('a', maxBound :: Int)
+
+leastCommonP (letter0, count0) letter count
+    | count < count0 = (letter, count)
+    | otherwise = (letter0, count0)
\ No newline at end of file
diff --git a/app/advent06.hs b/app/advent06.hs
new file mode 100644 (file)
index 0000000..96c4aa2
--- /dev/null
@@ -0,0 +1,22 @@
+module Main(main) where
+
+import Data.List (transpose, maximum, minimum, sort, group)
+import Data.Tuple (swap)
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent06.txt" 
+    let message = lines text
+    part1 message
+    part2 message
+
+part1 :: [String] -> IO ()
+part1 message = do 
+    putStrLn $ map (snd . maximum . counts) $ transpose message
+
+part2 :: [String] -> IO ()
+part2 message = do 
+    putStrLn $ map (snd . minimum . counts) $ transpose message
+
+counts :: (Eq a, Ord a) => [a] -> [(Int, a)]
+counts = map (\g -> (length g, head g)) . group . sort
\ No newline at end of file
diff --git a/app/advent07.hs b/app/advent07.hs
new file mode 100644 (file)
index 0000000..8700958
--- /dev/null
@@ -0,0 +1,136 @@
+module Main(main) where
+
+import Text.Parsec
+import Data.List (partition, union, intersect, tails)
+import Data.Char (isAlphaNum)
+
+data Chunk = Include String | Exclude String deriving (Show)
+data ChunkV = Includev Bool | Excludev Bool deriving (Show)
+
+chunkValue :: Chunk -> String
+chunkValue (Include v) = v
+chunkValue (Exclude v) = v
+
+isInclude :: Chunk -> Bool
+isInclude (Include _) = True
+isInclude (Exclude _) = False
+
+chunkValueV :: ChunkV -> Bool
+chunkValueV (Includev v) = v
+chunkValueV (Excludev v) = v
+
+isIncludeV :: ChunkV -> Bool
+isIncludeV (Includev _) = True
+isIncludeV (Excludev _) = False
+
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent07.txt" 
+    part1 text
+    part2 text
+
+
+part1 :: String -> IO ()
+part1 text = do 
+    print $ length $ filter (allowsAbba) $ successfulParse $ parseI7vf text
+
+
+part2 :: String -> IO ()
+part2 text = do 
+    print $ length $ filter (supportsSSL) $ successfulParse $ parseI7f text
+
+allowsAbba :: [ChunkV] -> Bool
+allowsAbba chunks = (any (chunkValueV) includeChunks) && (not (any (chunkValueV) excludeChunks))
+    where (includeChunks, excludeChunks) = partition (isIncludeV) chunks
+
+i7file = i7line `endBy` newline 
+i7line = many1 (includeChunk <|> excludeChunk)
+
+chunk = many1 alphaNum
+
+excludeChunk = Exclude <$> (between (char '[') (char ']') $ chunk)
+includeChunk = Include <$> chunk
+
+hasABBA = preambleAbba <* (many alphaNum)
+preambleAbba = (try abba) <|> (alphaNum >> preambleAbba)
+
+-- abba = 
+--     do  a <- alphaNum
+--         b <- alphaNum
+--         if a == b then
+--             fail "Identical"
+--         else do char b
+--                 char a
+--                 return [a, b, b, a]
+
+abba = 
+    do  a <- alphaNum
+        b <- noneOf [a]
+        char b
+        char a
+        return [a, b, b, a]
+
+--         where
+-- Â  firstChar = satisfy (\a -> isLetter a || a == '_')
+-- Â  nonFirstChar = satisfy (\a -> isDigit a || isLetter a || a == '_')
+
+   -- b <- bChar
+-- where bChar = satisfy (\l -> lsLetter l && l /= a)
+
+
+
+i7filev = i7linev `endBy` newline
+i7linev = many1 (includeChunkv <|> excludeChunkv)
+
+excludeChunkv = Excludev <$> (between (char '[') (char ']') $ hasABBAv)
+includeChunkv = Includev <$> hasABBAv
+
+hasABBAv = 
+    (try (id True <$ preambleAbba <* (many alphaNum)))
+    <|>
+    (id False <$ (many1 alphaNum))
+
+
+parseI7f :: String -> Either ParseError [[Chunk]]
+parseI7f input = parse i7file "(unknown)" input
+
+parseI7 :: String -> Either ParseError [Chunk]
+parseI7 input = parse i7line "(unknown)" input
+
+parseAbba :: String -> Either ParseError String
+parseAbba input = parse hasABBA "(unknown)" input
+
+parseI7v :: String -> Either ParseError [ChunkV]
+parseI7v input = parse i7linev "(unknown)" input
+
+parseI7vf :: String -> Either ParseError [[ChunkV]]
+parseI7vf input = parse i7filev "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
+
+
+allSubstrings :: Int -> [a] -> [[a]]
+-- allSubstrings n es 
+--     | length es < n = []
+--     | otherwise = (take n es) : (allSubstrings n $ tail es)
+allSubstrings n e = filter (\s -> length s == n) $ map (take n) $ tails e
+
+
+ieCandidates :: [Chunk] -> ([String], [String])
+ieCandidates chunks = (includeCandidates, excludeCandidates)
+    where (includeChunks, excludeChunks) = partition (isInclude) chunks
+          isABA s = (s!!0 == s!!2) && (s!!0 /= s!!1)
+          candidates = (filter (isABA)) . (foldl (union) []) . (map ((allSubstrings 3) . chunkValue))
+          includeCandidates = candidates includeChunks
+          excludeCandidates = candidates excludeChunks
+          
+inverseABA :: String -> String
+inverseABA s = [s!!1, s!!0, s!!1]
+
+supportsSSL :: [Chunk] -> Bool
+supportsSSL chunks = not $ null $ intersect abas eabas
+    where (abas, babs) = ieCandidates chunks
+          eabas = map (inverseABA) babs
diff --git a/app/advent08.hs b/app/advent08.hs
new file mode 100644 (file)
index 0000000..ccf2de0
--- /dev/null
@@ -0,0 +1,148 @@
+module Main(main) where
+
+import Data.Array.IArray
+import Text.Parsec
+import Control.Monad (liftM, ap)
+
+-- Row 1 is top, column 1 is left
+type Position = (Int, Int)
+type Screen = Array Position Bool
+
+data Direction = Row | Column deriving (Show)
+data Command = Rect Int Int | Rotate Direction Int Int deriving (Show)
+
+data ScState a = ScState (Screen -> (Screen, a))
+
+mkScreen :: Int -> Int -> Screen
+mkScreen w h = array ((0, 0), (h - 1, w - 1))
+    [((i, j), False) | i <- [0..(h-1)], j <- [0..(w-1)]]
+
+showScreen :: Screen -> String
+showScreen screen = unlines [showRow r | r <- [minRow..maxRow]]
+    where ((minRow, minCol), (maxRow, maxCol)) = bounds screen
+          showCell True  = '*'
+          showCell False = ' '
+          showRow r = [showCell (screen!(r, c)) | c <- [minCol..maxCol]]
+
+countLights :: Screen -> Int
+countLights screen = length $ filter (id) $ elems screen
+
+screen0 :: Screen
+screen0 = mkScreen 50 6
+
+
+main :: IO ()
+main = do
+    text <- readFile "data/advent08.txt"
+    let instrs = successfulParse $ parseCommands text
+    part1 instrs
+    part2 instrs
+
+part1 :: [Command] -> IO ()
+part1 commands =
+    print $ countLights $ (extractScreen . doCommands) commands
+
+part2 :: [Command] -> IO ()
+part2 commands = 
+    putStrLn $ showScreen $ (extractScreen . doCommands) commands
+
+
+instance Functor ScState where
+  fmap = liftM
+
+instance Applicative ScState where
+  pure  = return
+  (<*>) = ap
+
+instance Monad ScState where
+    return x = ScState (\screen -> (screen, x))
+
+    (ScState st) >>= f
+        = ScState (\screen -> let
+                            (newScreen, y) = st screen
+                            (ScState transformer) = f y
+                            in
+                            transformer newScreen)
+
+doCommands :: [Command] -> ScState (Int)
+doCommands [] = return 0
+doCommands (i:is) = 
+    do doCommand i
+       doCommands is
+       return 0
+
+doCommand :: Command -> ScState Int
+doCommand i = ScState (execute i)
+
+execute :: Command -> (Screen -> (Screen, Int))
+execute (Rect w h) screen = (rect screen w h, 0)
+execute (Rotate Column c n) screen = (rotateColumn screen c n, 0)
+execute (Rotate Row r n) screen = (rotateRow screen r n, 0)
+
+extractScreen :: ScState Int -> Screen
+extractScreen (ScState st) = fst (st screen0)
+
+
+
+parseCommands :: String -> Either ParseError [Command]
+parseCommands input = parse commandFile "(unknown)" input
+
+commandFile = commandLine `endBy` newline
+commandLine = (try rectCommand) <|> rotateCommand
+
+rectCommand = 
+    do  string "rect"
+        spaces
+        w <- (many1 digit)
+        char 'x'
+        h <- (many1 digit)
+        return (Rect (read w) (read h))
+
+rotateCommand = 
+    do  string "rotate"
+        spaces
+        direction <- (string "row" <|> string "column")
+        spaces
+        string "x=" <|> string "y="
+        index <- (many1 digit)
+        spaces
+        string "by"
+        spaces
+        distance <- (many1 digit)
+        return (buildCommand direction index distance)
+
+buildCommand "row" i d = Rotate Row (read i) (read d)
+buildCommand "column" i d = Rotate Column (read i) (read d)
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
+
+
+
+
+rect :: Screen -> Int -> Int -> Screen
+rect screen w h = screen // newBits
+    where newBits = [((i, j), True) | i <- [0..(h-1)], j <- [0..(w-1)]]
+
+rotateColumn :: Screen -> Int -> Int -> Screen
+rotateColumn screen column givenShift = screen // newCells
+    where 
+        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
+        colLength = 1 + maxRow - minRow
+        shift = givenShift `mod` colLength
+        offset = colLength - shift
+        column0 = [screen!(r, column) | r <- [minRow..maxRow]]
+        newColumn = (drop offset column0) ++ (take offset column0)
+        newCells = [((r, column), cell) | (r, cell) <- zip [minRow..maxRow] newColumn]
+
+rotateRow :: Screen -> Int -> Int -> Screen
+rotateRow screen row givenShift = screen // newCells
+    where 
+        ((minRow, minCol), (maxRow, maxCol)) = bounds screen
+        rowLength = 1 + maxCol - minCol
+        shift = givenShift `mod` rowLength
+        offset = rowLength - shift
+        row0 = [screen!(row, c) | c <- [minCol..maxCol]]
+        newRow = (drop offset row0) ++ (take offset row0)
+        newCells = [((row, c), cell) | (c, cell) <- zip [minCol..maxCol] newRow]
diff --git a/app/advent09.hs b/app/advent09.hs
new file mode 100644 (file)
index 0000000..a3ce495
--- /dev/null
@@ -0,0 +1,57 @@
+module Main(main) where
+
+import Data.List.Split (splitOn)
+import Data.Char (isSpace)
+
+type Chunk = (Int, String)
+
+main :: IO ()
+main = do 
+        textL <- readFile "data/advent09.txt" 
+        let text = filter (not . isSpace) textL
+        part1 text
+        part2 text
+
+part1 :: String -> IO ()
+part1 text = do 
+    print $ cLength $ decompress text
+
+part2 :: String -> IO ()
+part2 text = do 
+    print $ cLength $ decompress2 text
+
+
+decompress :: String -> [Chunk]
+decompress text = 
+    if not (null msuf) 
+        then (1, pre):(num, chunk):drest
+        else [(1, pre)]
+    where 
+        (pre, msuf) = span ('(' /= ) text
+        (marker, suf) = span (')' /= ) msuf
+        ln = splitOn "x" (tail marker)
+        len = read (ln!!0) :: Int
+        num = read (ln!!1) :: Int
+        (chunk, remainder) = splitAt len (tail suf)
+        drest = decompress remainder
+
+decompress2 :: String -> [Chunk]
+decompress2 text = 
+    if not (null msuf) 
+        then [(1, pre)] ++ mulDchunks ++ drest
+        else [(1, pre)]
+    where 
+        (pre, msuf) = span ('(' /= ) text
+        (marker, suf) = span (')' /= ) msuf
+        ln = splitOn "x" (tail marker)
+        len = read (ln!!0) :: Int
+        num = read (ln!!1) :: Int
+        (chunk, remainder) = splitAt len (tail suf)
+        dchunks = decompress2 chunk
+        mulDchunks = [(dl * num, ds) | (dl, ds) <- dchunks]
+        drest = decompress2 remainder
+
+cLength :: [Chunk] -> Int
+cLength = sum . map (clen)
+    where clen (n, t) = n * (length t)
+
diff --git a/app/advent10.hs b/app/advent10.hs
new file mode 100644 (file)
index 0000000..70e80e0
--- /dev/null
@@ -0,0 +1,217 @@
+import Text.Parsec hiding (State)
+import Data.Text (pack, unpack, toTitle)
+import Control.Monad.State.Lazy
+import Data.List (partition, findIndices, sort, find)
+import Data.Maybe (fromJust)
+
+data Destination = Bot | Output deriving (Show, Read, Eq)
+-- Rule bot low-destination high-destination
+-- Gift bot value
+data Instruction = Rule { ruleId :: Int 
+                        , lowDestType :: Destination
+                        , lowDestId :: Int
+                        , highDestType :: Destination
+                        , highDestId :: Int
+                        } | 
+                   Gift { giftId :: Int
+                        , value :: Int 
+                        }
+                   deriving (Show)
+
+-- bod id [item1, item2]
+data Place = Place { placeId :: Int
+                   , placeType :: Destination
+                   , items :: [Int]} 
+                   deriving (Show)
+
+-- delivery by bot of low-value and high-value
+data Event = Delivery { deliveryId :: Int
+                      , lowDelivery :: Int
+                      , highDelivery :: Int
+                      } | 
+             Update { updateId :: Int
+                    , updateType :: Destination
+                    , updateItem :: Int
+                    } deriving (Show)
+
+type Factory = ([Place], [Instruction], [Event]) 
+-- data FactorySt History = FactorySt (Factory -> (Factory, History))
+
+emptyFactory :: Factory
+emptyFactory = ([], [], [])
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent10.txt" 
+    let instructions = successfulParse $ parseIfile text
+    part1 instructions
+    part2 instructions
+
+
+part1 :: [Instruction] -> IO ()
+part1 instructions = 
+    do  let (_, _, events) = snd $  runState (runFactory instructions) emptyFactory
+        -- let (places, instructions, events) = snd finalFactory
+        print $ deliveryId $ fromJust $ findDelivery events 17 61
+
+part2 :: [Instruction] -> IO ()
+part2 instructions = 
+    do  let (places, _, _) = snd $  runState (runFactory instructions) emptyFactory
+        let outs = findOutputs places [0, 1, 2]
+        let product = foldl1 (*) $ concatMap (items) outs
+        print $ product
+
+
+findDelivery :: [Event] -> Int -> Int -> Maybe Event
+findDelivery events lowItem highItem = find (delivery) events
+    where delivery Update {} = False
+          delivery Delivery {deliveryId = bot, lowDelivery = l, highDelivery = h} 
+            | l == lowItem && h == highItem = True
+            | otherwise = False
+
+findOutputs :: [Place] -> [Int] -> [Place]
+findOutputs outputs ids = filter (interesting) outputs
+    where interesting Place {placeId = p, placeType = t, items = i}
+            | (p `elem` ids) && t == Output = True
+            | otherwise = False
+
+
+runFactory :: [Instruction] -> State Factory ()
+runFactory instructions = do
+    addInstructions instructions
+    runInstructions instructions
+
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = ruleL <|> giftL
+
+
+ruleL = 
+    do (string "bot" >> spaces)
+       bot <- many1 digit
+       (spaces >> string "gives low to" >> spaces)
+       lowDestType <- (string "output" <|> string "bot")
+       spaces
+       lowDest <- many1 digit
+       (spaces >> string "and high to" >> spaces)
+       highDestType <- (string "output" <|> string "bot")
+       spaces
+       highDest <- many1 digit
+       let rule = Rule (read bot)
+                   (read $ unpack $ toTitle $ pack lowDestType)
+                   (read lowDest)
+                   (read $ unpack $ toTitle $ pack highDestType)
+                   (read highDest)
+       return rule
+
+giftL = 
+    do (string "value" >> spaces)
+       value <- many1 digit
+       (spaces >> string "goes to bot" >> spaces)
+       bot <- many1 digit
+       let gift = Gift (read bot) (read value)
+       return gift
+
+
+parseIfile :: String -> Either ParseError [Instruction]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Instruction
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
+
+
+
+
+addInstructions :: [Instruction] -> State Factory ()
+addInstructions [] = return ()
+addInstructions (i:is) = do
+    addInstruction i
+    addInstructions is
+
+
+addInstruction :: Instruction -> State Factory ()
+addInstruction r@(Rule {lowDestType = ld, lowDestId = li,
+                     highDestType = hd, highDestId = hi}) = 
+    do (places, rules, history) <- get
+       put (places, r:rules, history)
+       addPlace (Place {placeType = ld, placeId = li, items = []})
+       addPlace (Place {placeType = hd, placeId = hi, items = []})
+addInstruction Gift {giftId = g} = 
+    do addPlace (Place {placeType = Bot, placeId = g, items = []})
+
+
+addPlace :: Place -> State Factory ()
+addPlace place = 
+    do  (places, rules, history) <- get
+        if not $ placeElem place places
+            then put ((place:places), rules, history)
+        else return ()
+
+
+runInstructions :: [Instruction] -> State Factory ()
+runInstructions [] = return ()
+runInstructions (i:is) = 
+    do  runInstruction i
+        runInstructions is
+
+
+runInstruction :: Instruction -> State Factory ()
+runInstruction Rule {} = return ()
+runInstruction g@(Gift {}) = 
+    do  updatePlace (giftId g) Bot (value g)
+        propogateUpdates
+
+updatePlace :: Int -> Destination -> Int -> State Factory ()
+updatePlace b d i = 
+    do  (places, instructions, events) <- get
+        let (place0s, otherPlaces) = partition (samePlace (Place {placeId = b, placeType = d, items = []})) places
+        let place = head place0s
+        let place' = place {items = i:(items place)}
+        let update = Update {updateId = b, updateType = d, updateItem = i}
+        put (place':otherPlaces, instructions, update:events)
+  
+
+propogateUpdates :: State Factory ()
+propogateUpdates = 
+    do  (places, instructions, events) <- get
+        let (fullBots, otherPlaces) = fullRobots places
+        if (not . null) fullBots
+            then do let fullBot = head fullBots
+                    let maybeRule = findRule instructions (placeId fullBot)
+                    case maybeRule of
+                        Nothing -> propogateUpdates
+                        Just rule -> do let small:large:_ = sort $ items fullBot
+                                        let emptyBot = fullBot {items = []}
+                                        let delivery = Delivery { deliveryId = placeId fullBot
+                                                                , lowDelivery = small
+                                                                , highDelivery = large
+                                                                }
+                                        put (emptyBot:(tail fullBots) ++ otherPlaces,
+                                             instructions, 
+                                             delivery:events)
+                                        updatePlace (lowDestId rule) (lowDestType rule) small
+                                        updatePlace (highDestId rule) (highDestType rule) large
+                                        propogateUpdates
+            else return ()
+
+
+placeElem :: Place -> [Place] -> Bool
+placeElem place places = (not . null) $ findIndices (samePlace place) places
+
+samePlace :: Place -> Place -> Bool
+samePlace p1 p2 = (placeId p1 == placeId p2) && (placeType p1 == placeType p2)
+
+fullRobots :: [Place] -> ([Place], [Place])
+fullRobots places = partition (\p -> placeType p == Bot && length (items p) >= 2) places
+
+findRule :: [Instruction] -> Int -> Maybe Instruction
+findRule instructions bot = find ruleForBot instructions
+    where ruleForBot Gift {} = False
+          ruleForBot Rule {ruleId = b}
+            | b == bot = True
+            | otherwise = False
diff --git a/app/advent11.hs b/app/advent11.hs
new file mode 100644 (file)
index 0000000..0286d77
--- /dev/null
@@ -0,0 +1,137 @@
+module Main(main) where
+
+import Data.List (subsequences, (\\), sort, sortBy)
+import Data.Ord (comparing)
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+-- part1 = print $ length $ init $ extractJust $ hillClimb [[buildingTest]] []
+part1 = print $ length $ init $ extractJust $ hillClimb [[building1]] []
+-- part1 = print $ length $ init $ extractJust $ aStar [[building1]] []
+
+part2 :: IO ()
+part2 = print $ length $ init $ extractJust $ hillClimb [[building2]] []
+
+
+extractJust :: Maybe [a] -> [a]
+extractJust Nothing = []
+extractJust (Just x) = x
+
+hillClimb :: [[Building]] -> [Building] -> Maybe [Building]
+hillClimb [] _ = Nothing
+hillClimb (currentTrail:trails) closed = 
+    if isGoal (head currentTrail) then Just currentTrail
+    else hillClimb newAgenda ((head currentTrail): closed) 
+    where newAgenda = 
+            sortBy (\t1 t2 -> (head t1) `compare` (head t2)) $ 
+            trails ++ (candidates currentTrail closed)
+
+aStar :: [[Building]] -> [Building] -> Maybe [Building]
+aStar [] _ = Nothing
+aStar (currentTrail:trails) closed = 
+    if isGoal (head currentTrail) then Just currentTrail
+    else aStar newAgenda ((head currentTrail): closed) 
+    where newAgenda = 
+            sortBy (\t1 t2 -> (trailCost t1) `compare` (trailCost t2)) $ 
+            trails ++ (candidates currentTrail closed)
+          trailCost t = estimateCost (head t) + length t - 1
+
+
+candidates :: [Building] -> [Building] -> [[Building]]
+candidates currentTrail closed = newCandidates
+    where
+        (candidate:trail) = currentTrail
+        succs = legalSuccessors $ successors candidate
+        nonloops = (succs \\ trail) \\ closed
+        newCandidates = map (\n -> n:candidate:trail) nonloops
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/app/advent11a.hs b/app/advent11a.hs
new file mode 100644 (file)
index 0000000..c5349c8
--- /dev/null
@@ -0,0 +1,164 @@
+-- Using the idea of canonical representation of buildings from
+-- https://andars.github.io/aoc_day11.html by Andrew Foote,
+-- plus my extension of represening the pairs as an integer.
+
+-- This version is A* search, using a list for the agenda.
+
+module Main(main) where
+
+import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
+import Data.Ord (comparing)
+import Data.Char (isDigit)
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+data CBuilding = CBuilding Int Integer deriving (Show, Eq)
+data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building0 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+canonical :: Building -> CBuilding
+canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
+    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
+          floorOf (Generator g) = head (findIndices 
+                                                (\fl -> (Generator g) `elem` fl) 
+                                                floors)
+          floorOf (Microchip g) = head (findIndices 
+                                                (\fl -> (Microchip g) `elem` fl) 
+                                                floors)
+          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
+
+
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+part1 = print $ length $ trail $ aStar (initAgenda building1) []
+
+part2 :: IO ()
+part2 = print $ length $ trail $aStar (initAgenda building2) []
+
+initAgenda :: Building -> [Agendum]
+initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
+
+
+aStar :: [Agendum] -> [CBuilding] -> Agendum
+aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
+aStar (currentAgendum:agenda) closed = 
+    if isGoal reached then currentAgendum
+    else if creached `elem` closed 
+        then aStar agenda closed
+        else aStar newAgenda (creached:closed) 
+    where 
+        reached = current currentAgendum
+        creached = canonical reached
+        newAgenda = 
+            sortOn (cost) $ 
+            agenda ++ (candidates currentAgendum closed)
+
+
+candidates :: Agendum -> [CBuilding] -> [Agendum]
+candidates agendum closed = newCandidates
+    where
+        candidate = current agendum
+        previous = trail agendum
+        succs = legalSuccessors $ successors candidate
+        excludable = previous ++ closed
+        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
+        newCandidates = map (\n -> makeAgendum n) nonloops
+        makeAgendum new = Agendum {current = new, 
+                                    trail = (canonical candidate):previous, 
+                                    cost = estimateCost new + length previous + 1}
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/app/advent11h.hs b/app/advent11h.hs
new file mode 100644 (file)
index 0000000..d362ee8
--- /dev/null
@@ -0,0 +1,162 @@
+-- Using the idea of canonical representation of buildings from
+-- https://andars.github.io/aoc_day11.html by Andrew Foote,
+-- plus my extension of represening the pairs as an integer.
+
+-- This version is hillclimbing search, using a list for the agenda.
+module Main(main) where
+    
+import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
+import Data.Ord (comparing)
+import Data.Char (isDigit)
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+data CBuilding = CBuilding Int Integer deriving (Show, Eq)
+data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building0 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+canonical :: Building -> CBuilding
+canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
+    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
+          floorOf (Generator g) = head (findIndices 
+                                                (\fl -> (Generator g) `elem` fl) 
+                                                floors)
+          floorOf (Microchip g) = head (findIndices 
+                                                (\fl -> (Microchip g) `elem` fl) 
+                                                floors)
+          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
+
+
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+part1 = print $ length $ trail $ hillClimb (initAgenda building1) []
+
+part2 :: IO ()
+part2 = print $ length $ trail $ hillClimb (initAgenda building2) []
+
+initAgenda :: Building -> [Agendum]
+initAgenda b = [Agendum {current = b, trail=[], cost = estimateCost b}]
+
+hillClimb :: [Agendum] -> [CBuilding] -> Agendum
+hillClimb [] _ = Agendum {current=buildingTest, trail=[], cost=0}
+hillClimb (currentAgendum:agenda) closed = 
+    if isGoal reached then currentAgendum
+    else if creached `elem` closed 
+        then hillClimb agenda closed
+        else hillClimb newAgenda (creached:closed) 
+    where 
+        reached = current currentAgendum
+        creached = canonical reached
+        newAgenda = 
+            sortOn (cost) $ 
+            agenda ++ (candidates currentAgendum closed)
+
+
+candidates :: Agendum -> [CBuilding] -> [Agendum]
+candidates agendum closed = newCandidates
+    where
+        candidate = current agendum
+        previous = trail agendum
+        succs = legalSuccessors $ successors candidate
+        excludable = previous ++ closed
+        nonloops = filter (\s -> not $ (canonical s) `elem` excludable) succs
+        newCandidates = map (\n -> makeAgendum n) nonloops
+        makeAgendum new = Agendum {current = new, 
+                                    trail = (canonical candidate):previous, 
+                                    cost = estimateCost new}
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/app/advent11p.hs b/app/advent11p.hs
new file mode 100644 (file)
index 0000000..4136e8f
--- /dev/null
@@ -0,0 +1,166 @@
+-- Using the idea of canonical representation of buildings from
+-- https://andars.github.io/aoc_day11.html by Andrew Foote,
+-- plus my extension of represening the pairs as an integer.
+
+-- This version is A* search, using a priority queue for the agenda.
+
+module Main(main) where
+
+import Data.List (subsequences, (\\), sort, sortOn, nub, findIndices)
+import Data.Ord (comparing)
+import Data.Char (isDigit)
+import Data.Maybe (fromMaybe)
+import qualified Data.PQueue.Prio.Min as P
+
+data Item = Generator String | Microchip String deriving (Show, Eq)
+type Floor = [Item]
+data Building = Building Int [Floor] deriving (Show, Eq)
+data CBuilding = CBuilding Int Integer deriving (Show, Eq)
+data Agendum = Agendum {current :: Building, trail :: [CBuilding], cost :: Int}
+type Agenda = P.MinPQueue Int Agendum
+
+instance Ord Item where
+    compare (Generator a) (Generator b) = compare a b
+    compare (Microchip a) (Microchip b) = compare a b
+    compare (Generator _) (Microchip _) = LT
+    compare (Microchip _) (Generator _) = GT
+
+instance Ord Building where
+    compare b1 b2 = comparing estimateCost b1 b2
+
+building1 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building0 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+building2 = Building 0 [
+    (sort [Generator "polonium", Generator "thulium", 
+     Microchip "thulium", Generator "promethium", Generator "ruthenium",
+     Microchip "ruthenium", Generator "cobalt", Microchip "cobalt",
+     Generator "elerium", Microchip "elerium",
+     Generator "dilithium", Microchip "dilithium"]),
+    (sort [Microchip "polonium", Microchip "promethium"]),
+    [],
+    []
+    ]
+
+
+buildingTest = Building 0 [
+    sort([Microchip "hydrogen", Microchip "lithium"]),
+    [Generator "hydrogen"],
+    [Generator "lithium"],
+    []]
+
+canonical :: Building -> CBuilding
+canonical (Building f floors) = CBuilding f (read $ filter (isDigit) $ show $ sort pairs)
+    where names = nub $ map (\(Generator n) -> n) $ filter (isGenerator) $ concat floors
+          floorOf (Generator g) = head (findIndices 
+                                                (\fl -> (Generator g) `elem` fl) 
+                                                floors)
+          floorOf (Microchip g) = head (findIndices 
+                                                (\fl -> (Microchip g) `elem` fl) 
+                                                floors)
+          pairs = foldl (\ps n -> (floorOf (Generator n), floorOf (Microchip n)):ps) [] names
+
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+part1 :: IO ()
+part1 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building1) []
+
+part2 :: IO ()
+part2 = print $ length $ trail $ fromMaybe (snd $ P.findMin $ initAgenda buildingTest) $ aStar (initAgenda building2) []
+
+initAgenda :: Building -> Agenda
+initAgenda b = P.singleton (estimateCost b) Agendum {current = b, trail=[], cost = estimateCost b}
+
+
+aStar :: Agenda -> [CBuilding] -> Maybe Agendum
+-- aStar [] _ = Agendum {current=buildingTest, trail=[], cost=0}
+aStar agenda closed 
+    | P.null agenda = Nothing
+    | otherwise = 
+        if isGoal reached then Just currentAgendum
+        else if creached `elem` closed 
+            then aStar (P.deleteMin agenda) closed
+            else aStar newAgenda (creached:closed) 
+        where 
+            (_, currentAgendum) = P.findMin agenda
+            reached = current currentAgendum
+            creached = canonical reached
+            newAgenda = P.union (P.deleteMin agenda) 
+                                (P.fromList $ candidates currentAgendum closed)
+
+
+candidates :: Agendum -> [CBuilding] -> [(Int, Agendum)]
+candidates agendum closed = newCandidates
+    where
+        candidate = current agendum
+        previous = trail agendum
+        succs = legalSuccessors $ successors candidate
+        nonloops = filter (\s -> not $ (canonical s) `elem` closed) succs
+        newCandidates = map (\a -> (cost a, a)) $ map (\n -> makeAgendum n) nonloops
+        makeAgendum new = Agendum {current = new, 
+                                    trail = (canonical candidate):previous, 
+                                    cost = estimateCost new + length previous + 1}
+
+isGoal :: Building -> Bool
+isGoal (Building f floors) =
+    f+1 == height && (all (null) $ take f floors)
+    where height = length floors
+
+isLegal :: Building -> Bool
+isLegal (Building f floors) = 
+    null floor 
+    ||
+    not (any (isGenerator) floor)
+    ||
+    any (safePair) pairs
+    where floor = floors!!f
+          pairs = [(i, j) | i <- floor, j <- floor, isGenerator i]
+          safePair (Generator e, Microchip f) = e == f
+          safePair (Generator _, Generator _) = False
+
+isGenerator :: Item -> Bool
+isGenerator (Generator _) = True
+isGenerator (Microchip _) = False
+
+successors :: Building -> [Building]
+successors (Building f floors) = [updateBuilding f floors nf is | nf <- nextFloors, is <- items]
+    where 
+        floor = floors!!f
+        items = filter (\is -> length is == 1 || length is == 2) $ subsequences floor
+        nextFloors = if f == 0 then [1]
+                     else if f+1 == length floors then [f-1]
+                     else [f+1, f-1]
+
+legalSuccessors :: [Building] -> [Building]
+legalSuccessors = filter (isLegal)
+
+updateBuilding :: Int -> [Floor] -> Int -> [Item] -> Building
+updateBuilding oldF oldFloors newF items = Building newF newFloors
+    where newFloors = map (updateFloor) $ zip [0..] oldFloors
+          updateFloor (f, fl) 
+            | f == oldF = sort $ fl \\ items
+            | f == newF = sort $ items ++ fl
+            | otherwise = fl
+
+estimateCost :: Building -> Int
+estimateCost (Building _ floors) = 
+    sum $ map (\(c, f) -> c * length f) $ zip [0..] $ reverse floors
+
diff --git a/app/advent12.hs b/app/advent12.hs
new file mode 100644 (file)
index 0000000..906c185
--- /dev/null
@@ -0,0 +1,134 @@
+module Main(main) where
+
+import Text.Parsec hiding (State)
+import Text.ParserCombinators.Parsec.Number
+import Data.List (partition, union, intersect, tails)
+import Data.Char (isDigit)
+import Control.Monad.State.Lazy
+
+data Location = Literal Int | Register Char deriving (Show)
+data Instruction = Cpy Location Location | 
+                   Inc Location |
+                   Dec Location | 
+                   Jnz Location Int
+                   deriving (Show)
+
+data Machine = Machine { a :: Int
+                       , b :: Int
+                       , c :: Int
+                       , d :: Int
+                       , pc :: Int
+                       , instructions :: [Instruction]} 
+               deriving (Show)
+
+emptyMachine :: Machine
+emptyMachine = Machine {a=0, b=0, c=0, d=0, pc=0, instructions=[]}
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent12.txt" 
+    let instructions = successfulParse $ parseIfile text
+    part1 instructions
+    part2 instructions
+
+
+part1 :: [Instruction] -> IO ()
+part1 instrs = 
+    do  let m0 = emptyMachine {instructions=instrs}
+        let mf = snd $ runState runMachine m0
+        print (a mf)
+
+part2 :: [Instruction] -> IO ()
+part2 instrs = 
+    do  let m0 = emptyMachine {instructions=instrs, c=1}
+        let mf = snd $ runState runMachine m0
+        print (a mf)
+
+
+
+runMachine :: State Machine ()
+runMachine = 
+    do  m <- get
+        if (pc m) >= (length $ instructions m)
+            then return ()
+            else do executeStep
+                    runMachine
+
+executeStep :: State Machine ()
+executeStep = 
+    do  m <- get
+        let i = (instructions m)!!(pc m)
+        put (executeInstruction i m)
+
+executeInstruction :: Instruction -> Machine -> Machine
+executeInstruction (Inc (Register r)) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m (Register r)
+          m' = writeValue m (Register r) (v+1)
+executeInstruction (Dec (Register r)) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m (Register r)
+          m' = writeValue m (Register r) (v-1)
+executeInstruction (Cpy s d) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m s
+          m' = writeValue m d v
+executeInstruction (Jnz s d) m 
+    | v == 0 = m {pc=pc1}
+    | otherwise = m {pc=pcj}
+    where pc1 = (pc m) + 1
+          pcj = (pc m) + d
+          v = evaluate m s
+          
+
+evaluate :: Machine -> Location -> Int
+evaluate _ (Literal i) = i
+evaluate m (Register r) = 
+    case r of
+        'a' -> (a m)
+        'b' -> (b m)
+        'c' -> (c m)
+        'd' -> (d m)
+
+writeValue :: Machine -> Location -> Int -> Machine
+writeValue m (Literal i) _ = m
+writeValue m (Register r) v =
+    case r of 
+        'a' -> m {a=v}
+        'b' -> m {b=v}
+        'c' -> m {c=v}
+        'd' -> m {d=v}
+
+
+instructionFile = instructionLine `endBy` newline 
+-- instructionLine = choice [cpyL, incL, decL, jnzL]
+instructionLine = incL <|> decL <|> cpyL <|> jnzL
+
+incL = incify <$> (string "inc" *> spaces *> (oneOf "abcd"))
+        where incify r = Inc (Register r)
+decL = decify <$> (string "dec" *> spaces *> (oneOf "abcd"))
+        where decify r = Dec (Register r)
+cpyL = cpyify <$> (string "cpy" *> spaces *> ((many1 letter) <|> (many1 digit))) 
+                  <*> (spaces *> (oneOf "abcd"))
+        where cpyify s r = Cpy (readLocation s) (Register r)
+jnzL = jnzify <$> (string "jnz" *> spaces *> ((many1 letter) <|> (many1 digit))) 
+                  <*> (spaces *> int)
+        where jnzify r d = Jnz (readLocation r) d
+
+
+readLocation :: String -> Location
+readLocation l
+    | all (isDigit) l = Literal (read l)
+    | otherwise = Register (head l)
+
+
+
+parseIfile :: String -> Either ParseError [Instruction]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Instruction
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
\ No newline at end of file
diff --git a/app/advent13.hs b/app/advent13.hs
new file mode 100644 (file)
index 0000000..86981df
--- /dev/null
@@ -0,0 +1,95 @@
+module Main(main) where
+
+import Data.List ((\\), nub, sortOn)
+import Data.Bits (popCount)
+import Data.Maybe (fromMaybe)
+
+type Pos = (Int, Int)
+
+seed = 1362
+
+goal1 = (31, 39)
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+
+part1 :: IO ()
+part1 = print $ length $ tail $ fromMaybe [] $ aStar [[(1, 1)]] []
+
+part2 :: IO ()
+part2 = do print $ length $ tail $ edl 50 [[(1, 1)]] []
+           putStrLn $ showRoomR 30 25 $ edl 50 [[(1, 1)]] []
+
+
+-- extractJust :: Maybe [a] -> [a]
+-- extractJust Nothing = []
+-- extractJust (Just x) = x
+isWall :: Int -> Int -> Bool
+isWall x y = odd $ popCount n
+    where 
+        n = x*x + 3*x + 2*x*y + y + y*y + seed
+
+
+showRoom w h = showRoomR w h []
+
+showRoomR w h reached = unlines rows
+    where 
+        rows = [row x | x <- [0..h]]
+        row x = [showCell x y | y <- [0..w]]
+        showCell x y = if (isWall x y) 
+            then '#' 
+            else if (x, y) `elem` reached 
+                then 'O'
+                else '.'
+
+
+aStar :: [[Pos]] -> [Pos] -> Maybe [Pos]
+aStar [] _ = Nothing
+aStar (currentTrail:trails) closed = 
+    if isGoal (head currentTrail) then Just currentTrail
+    else if (head currentTrail) `elem` closed then aStar trails closed
+         else aStar newAgenda ((head currentTrail): closed) 
+    where newAgenda = 
+            sortOn (\a -> trailCost a) $ 
+            trails ++ (candidates currentTrail closed)
+          trailCost t = estimateCost (head t) + length t - 1
+
+
+-- exhaustive depth-limited
+edl :: Int -> [[Pos]] -> [Pos] -> [Pos]
+edl _ [] closed = nub closed
+edl limit (currentTrail:trails) closed = 
+    if (length currentTrail) > (limit+1) then edl limit trails ((head currentTrail):closed)
+    else if (head currentTrail) `elem` closed then edl limit trails closed
+         else edl limit newAgenda ((head currentTrail):closed) 
+    where newAgenda = trails ++ (candidates currentTrail closed)
+
+candidates :: [Pos] -> [Pos] -> [[Pos]]
+candidates currentTrail closed = newCandidates
+    where
+        (candidate:trail) = currentTrail
+        succs = legalSuccessors $ successors candidate
+        nonloops = (succs \\ trail) \\ closed
+        newCandidates = map (\n -> n:candidate:trail) nonloops
+
+isGoal :: Pos -> Bool
+isGoal p = p == goal1
+
+isLegal :: Pos -> Bool
+isLegal (x, y) = 
+    x >= 0 && y >= 0 && (not $ isWall x y)
+
+successors :: Pos -> [Pos]
+successors (x, y) = [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]
+
+legalSuccessors :: [Pos] -> [Pos]
+legalSuccessors = filter (isLegal)
+
+estimateCost :: Pos -> Int
+estimateCost (x, y) = abs (x - gx) + abs (y - gy)
+    where (gx, gy) = goal1
+
diff --git a/app/advent14.hs b/app/advent14.hs
new file mode 100644 (file)
index 0000000..c6c092e
--- /dev/null
@@ -0,0 +1,43 @@
+module Main(main) where
+
+import Data.List (nub, tails, null)
+import Data.Hash.MD5 (md5s, Str(..))
+
+salt = "yjdafjpo"
+-- salt = "abc"
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequence
+
+part2 :: IO ()
+part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequenceS
+
+md5sequence :: [String]
+md5sequence = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = md5s (Str (salt ++ show i))
+
+md5sequenceS :: [String]
+md5sequenceS = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = stretch $ md5s (Str (salt ++ show i)) 
+          stretch h0 = foldr (\_ h -> md5s (Str h)) h0 [1..2016]
+
+possibleKey :: [String] -> Int-> Bool
+possibleKey s = not . null . repeats 3 . ((!!) s)
+
+confirmKey :: [String] -> Int -> Bool
+confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
+    where c = head $ repeats 3 $ s!!i
+          confirmation m = c `elem` (repeats 5 m)
+
+repeats :: Int -> String -> [String]
+repeats n = filter (null . tail) . map (nub) . substrings n
+
+substrings :: Int -> [a] -> [[a]]
+substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/app/advent14c.hs b/app/advent14c.hs
new file mode 100644 (file)
index 0000000..ea699ed
--- /dev/null
@@ -0,0 +1,47 @@
+module Main(main) where
+
+import Data.List (nub, tails)
+import Data.ByteString.Char8 (pack)
+import Crypto.Hash (hash, Digest, MD5)
+
+salt = "yjdafjpo"
+-- salt = "abc"
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequence
+
+part2 :: IO ()
+part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequenceS
+
+getHash :: String -> String
+getHash bs = show (hash $ pack bs :: Digest MD5)
+
+md5sequence :: [String]
+md5sequence = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = getHash (salt ++ show i)
+
+md5sequenceS :: [String]
+md5sequenceS = [makeMd5 i | i <- [0..]]
+    where makeMd5 i = stretch $ getHash (salt ++ show i)
+          stretch h0 = foldr (\_ h -> getHash h) h0 [1..2016]
+
+possibleKey :: [String] -> Int-> Bool
+possibleKey s = not . null . repeats 3 . ((!!) s)
+
+confirmKey :: [String] -> Int -> Bool
+confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
+    where c = head $ repeats 3 $ s!!i
+          confirmation m = c `elem` (repeats 5 m)
+                              
+repeats :: Int -> String -> [String]
+repeats n = filter (null . tail) . map (nub) . substrings n
+
+substrings :: Int -> [a] -> [[a]]
+substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/app/advent14parallel.hs b/app/advent14parallel.hs
new file mode 100644 (file)
index 0000000..b0ca781
--- /dev/null
@@ -0,0 +1,53 @@
+module Main(main) where
+
+import Data.List (nub, tails)
+import Data.ByteString.Char8 (pack)
+import Crypto.Hash (hash, Digest, MD5)
+import Control.Parallel.Strategies (withStrategy, parBuffer, rdeepseq)
+
+salt = "yjdafjpo"
+-- salt = "abc"
+
+stretch_factor = [1..2016]
+-- stretch_factor = [1..100]
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequence
+
+part2 :: IO ()
+part2 = print $ head $ drop 63 $ filter (\i -> possibleKey sq i && confirmKey sq i) [0..]
+    where sq = md5sequenceS
+
+getHash :: String -> String
+getHash bs = show (hash $ pack bs :: Digest MD5)
+
+md5sequence :: [String]
+-- md5sequence = [makeMd5 i | i <- [0..]]
+md5sequence = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
+    where makeMd5 i = getHash (salt ++ show i)
+
+md5sequenceS :: [String]
+-- md5sequenceS = [makeMd5 i | i <- [0..]]
+md5sequenceS = withStrategy (parBuffer 100 rdeepseq) $ map (makeMd5) [0..]
+    where makeMd5 i = stretch $ getHash (salt ++ show i)
+          stretch h0 = foldr (\_ h -> getHash h) h0 stretch_factor
+
+possibleKey :: [String] -> Int-> Bool
+possibleKey s = not . null . repeats 3 . ((!!) s)
+
+confirmKey :: [String] -> Int -> Bool
+confirmKey s i = any (confirmation) $ take 1000 $ drop (i+1) s
+    where c = head $ repeats 3 $ s!!i
+          confirmation m = c `elem` (repeats 5 m)
+                              
+repeats :: Int -> String -> [String]
+repeats n = filter (null . tail) . map (nub) . substrings n
+
+substrings :: Int -> [a] -> [[a]]
+substrings l = filter (\s -> (length s) == l) . map (take l) . tails
diff --git a/app/advent15.hs b/app/advent15.hs
new file mode 100644 (file)
index 0000000..5970bd6
--- /dev/null
@@ -0,0 +1,43 @@
+module Main(main) where
+
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+
+type Disk = (Int -> Bool)
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent15.txt" 
+    let disks = successfulParse $ parseIfile text
+    part1 disks
+    part2 disks
+
+part1 :: [Disk] -> IO ()
+part1 disks = print $ head $ filter (canFall disks) [0..]
+
+part2 :: [Disk] -> IO ()
+part2 disks = print $ head $ filter (canFall disks2) [0..]
+    where disks2 = disks ++ [diskify 7 11 0]
+
+canFall :: [Disk] -> Int -> Bool
+canFall ds i = all (\d -> (d i)) ds
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = diskify <$> (string "Disc #" *> int) 
+                          <*> (string " has " *> int)
+                          <*> (string " positions; at time=0, it is at position " *> int)
+                          <*  (string ".")
+
+diskify :: Int -> Int -> Int -> (Int -> Bool)
+diskify n size pos0 = (\i -> (size + n + pos0 + i) `mod` size == 0)
+
+parseIfile :: String -> Either ParseError [Disk]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Disk
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/app/advent15l.hs b/app/advent15l.hs
new file mode 100644 (file)
index 0000000..67e2ac0
--- /dev/null
@@ -0,0 +1,39 @@
+module Main(main) where
+
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent15.txt" 
+    let disks = successfulParse $ parseIfile text
+    part1 disks
+    part2 disks
+
+part1 :: [[Int]] -> IO ()
+part1 disks = print $ head $ filter (canFall disks) [0..]
+
+part2 :: [[Int]] -> IO ()
+part2 disks = print $ head $ filter (canFall disks2) [0..]
+    where disks2 = disks ++ [drop 7 $ drop 0 $ cycle [0..(11-1)]]
+
+canFall :: [[Int]] -> Int -> Bool
+canFall ds i = all (\d -> (d!!i) == 0) ds
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = diskify <$> (string "Disc #" *> int) 
+                          <*> (string " has " *> int)
+                          <*> (string " positions; at time=0, it is at position " *> int)
+                          <*  (string ".")
+                    where diskify n size pos0 = drop n $ drop pos0 $ cycle [0..(size-1)]
+
+parseIfile :: String -> Either ParseError [[Int]]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError [Int]
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/app/advent16.hs b/app/advent16.hs
new file mode 100644 (file)
index 0000000..88b8b59
--- /dev/null
@@ -0,0 +1,42 @@
+module Main(main) where
+
+import Data.List (nub)
+
+input = "11100010111110100"
+disk1length = 272
+disk2length = 35651584
+
+-- input = "10000"
+-- disk1length = 20
+
+main :: IO ()
+main = do 
+    part1 
+    part2
+
+part1 :: IO ()
+part1 = putStrLn $ checksum $ take disk1length $ expand disk1length input
+
+part2 :: IO ()
+part2 = putStrLn $ checksum $ take disk2length $ expand disk2length input
+
+
+expand :: Int -> String -> String
+expand len a
+    | length a >= len = a
+    | otherwise = expand len $ a ++ "0" ++ b
+        where b = map (invert) $ reverse a
+              invert '0' = '1'
+              invert '1' = '0'
+
+checksum :: String -> String
+checksum digits
+    | odd $ length digits = digits
+    | otherwise = checksum $ map (checksumPair) $ pairs digits
+        where checksumPair p = if (length $ nub p) == 1 then '1' else '0'
+
+
+pairs :: [a] -> [[a]]
+pairs [] = []
+pairs xs = [p] ++ (pairs ys)
+    where (p, ys) = splitAt 2 xs 
diff --git a/app/advent16i.hs b/app/advent16i.hs
new file mode 100644 (file)
index 0000000..897559d
--- /dev/null
@@ -0,0 +1,45 @@
+module Main(main) where
+
+input = "11100010111110100"
+disk1length = 272
+disk2length = 35651584
+
+-- input = "10000"
+-- disk1length = 20
+
+main :: IO ()
+main = do 
+    part1 
+    part2
+
+part1 :: IO ()
+part1 = print $ fill disk1length input
+
+part2 :: IO ()
+part2 = print $ fill disk2length input
+
+fill :: Int -> String -> String
+fill len filler = deBool $ checksum $ take len $ expand len $ enBool filler
+
+enBool :: String -> [Bool]
+enBool = map (== '1')
+
+deBool :: [Bool] -> String
+deBool = map (\b -> if b then '1' else '0')
+
+
+expand :: Int -> [Bool] -> [Bool]
+expand len = head . dropWhile ((<= len) . length) . iterate expandStep
+
+expandStep :: [Bool] -> [Bool]
+expandStep a = a ++ [False] ++ b
+        where b = map (not) $ reverse a
+
+checksum :: [Bool] -> [Bool]
+checksum = head . dropWhile (even . length) . iterate checksumStep 
+
+checksumStep :: [Bool] -> [Bool]
+checksumStep [] = []
+checksumStep [x] = [x]
+checksumStep (x:y:xs) = (x==y):(checksumStep xs)
+
diff --git a/app/advent17.hs b/app/advent17.hs
new file mode 100644 (file)
index 0000000..e757def
--- /dev/null
@@ -0,0 +1,77 @@
+module Main(main) where
+
+import Data.ByteString.Char8 (pack)
+import qualified Crypto.Hash as C
+
+type Position = (Int, Int)
+data Agendum = Agendum {position :: Position, path :: String, hash :: String} deriving (Show, Eq)
+type Agenda = [Agendum]
+
+-- input = "hijkl"
+-- input = "ihgpwlah"
+
+input = "qljzarfv" -- my input
+
+main :: IO ()
+main = do 
+    part1 
+    part2 
+
+part1 :: IO ()
+part1 = putStrLn $ path $ extractJust $ bfs initialAgenda
+
+part2 :: IO ()
+part2 = print $ bfs2 initialAgenda 0
+
+initialAgenda :: Agenda
+initialAgenda = [Agendum {position=(1, 1), path="", hash=(getHash "")}]
+
+getHash :: String -> String
+getHash path = show (C.hash $ pack (input ++ path) :: C.Digest C.MD5)
+
+extractJust :: Maybe Agendum -> Agendum
+extractJust Nothing = head initialAgenda
+extractJust (Just x) = x
+
+bfs :: Agenda -> Maybe Agendum
+bfs [] = Nothing
+bfs (current:agenda) = 
+    if isGoal current then Just current
+    else bfs (agenda ++ (successors current))
+
+bfs2 :: Agenda -> Int -> Int
+bfs2 [] l = l
+bfs2 (current:agenda) l = 
+    if isGoal current then bfs2 agenda (length $ path $ current)
+    else bfs2 (agenda ++ (successors current)) l
+
+isGoal :: Agendum -> Bool
+isGoal agendum = (position agendum) == (4, 4)
+
+isLegalPos :: Position -> Bool
+isLegalPos p = fst p >= 1 && fst p <= 4 && snd p >= 1 && snd p <= 4
+
+successors :: Agendum -> Agenda
+successors state = [Agendum {position = step p0 ld, 
+                             path = path0 ++ [ld],
+                             hash = getHash (path0 ++ [ld])} | ld <- legalDoors ]
+    where 
+        p0 = position state
+        path0 = path state
+        h0 = hash state
+        doors = openDoors h0
+        legalDoors = filter (isLegalPos . (step p0)) doors
+
+openDoors :: String -> String
+openDoors h = up ++ down ++ left ++ right
+    where
+        up    = if h!!0 `elem` "bcdef" then "U" else ""
+        down  = if h!!1 `elem` "bcdef" then "D" else ""
+        left  = if h!!2 `elem` "bcdef" then "L" else ""
+        right = if h!!3 `elem` "bcdef" then "R" else ""
+
+step :: Position -> Char -> Position
+step (r, c) 'U' = (r-1, c)
+step (r, c) 'D' = (r+1, c)
+step (r, c) 'L' = (r, c-1)
+step (r, c) 'R' = (r, c+1)
diff --git a/app/advent18.hs b/app/advent18.hs
new file mode 100644 (file)
index 0000000..2b1462f
--- /dev/null
@@ -0,0 +1,42 @@
+module Main(main) where
+
+import Data.List (tails)
+
+-- input = "..^^."
+-- input = ".^^.^.^^^^"
+input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+-- part1 = putStrLn $ unlines $ map (showRow) $ take 10 $ iterate nextRow $ readRow input
+part1 = print $ length $ filter (not) $ concat $ take 40 $ iterate nextRow $ readRow input
+
+part2 :: IO ()
+part2 = print $ length $ filter (not) $ concat $ take 400000 $ iterate nextRow $ readRow input
+
+readRow :: String -> [Bool]
+readRow = map (=='^')
+
+showRow :: [Bool] -> String
+showRow = map (\c -> if c then '^' else '.')
+
+extended :: [Bool] -> [Bool]
+extended row = [False] ++ row ++ [False]
+
+nextRow :: [Bool] -> [Bool]
+nextRow = map (isTrap) . segments . extended
+
+segments :: [a] -> [[a]]
+segments = filter ((==3) . length) . map (take 3) . tails
+
+isTrap :: [Bool] -> Bool
+isTrap segment
+    | segment == [True, True, False] = True
+    | segment == [False, True, True] = True
+    | segment == [True, False, False] = True
+    | segment == [False, False, True] = True
+    | otherwise = False
diff --git a/app/advent18f.hs b/app/advent18f.hs
new file mode 100644 (file)
index 0000000..d1650e6
--- /dev/null
@@ -0,0 +1,50 @@
+module Main(main) where
+
+import Data.List (tails, foldl')
+
+-- input = "..^^."
+-- input = ".^^.^.^^^^"
+input = "^.^^^.^..^....^^....^^^^.^^.^...^^.^.^^.^^.^^..^.^...^.^..^.^^.^..^.....^^^.^.^^^..^^...^^^...^...^."
+
+main :: IO ()
+main = do 
+        part1 
+        part2
+
+part1 :: IO ()
+part1 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..40]
+    where row = readRow input
+
+part2 :: IO ()
+part2 = print $ fst $ foldl' nextRowFold (countSafe row, row) [2..400000]
+    where row = readRow input
+
+readRow :: String -> [Bool]
+readRow = map (=='^')
+
+showRow :: [Bool] -> String
+showRow = map (\c -> if c then '^' else '.')
+
+extended :: [Bool] -> [Bool]
+extended row = [False] ++ row ++ [False]
+
+nextRow :: [Bool] -> [Bool]
+nextRow = map (isTrap) . segments . extended
+
+nextRowFold :: (Int, [Bool]) -> Int -> (Int, [Bool])
+nextRowFold (n, row) _ = (n + countSafe newRow, newRow)
+    where newRow = nextRow row
+
+countSafe :: [Bool] -> Int
+countSafe = length . filter (not)
+
+segments :: [a] -> [[a]]
+segments = filter ((==3) . length) . map (take 3) . tails
+
+isTrap :: [Bool] -> Bool
+isTrap segment
+    | segment == [True, True, False] = True
+    | segment == [False, True, True] = True
+    | segment == [True, False, False] = True
+    | segment == [False, False, True] = True
+    | otherwise = False
diff --git a/app/advent19.hs b/app/advent19.hs
new file mode 100644 (file)
index 0000000..009a07c
--- /dev/null
@@ -0,0 +1,37 @@
+module Main(main) where
+
+import Prelude hiding (length, take, drop)
+import Data.Sequence
+
+-- input = 5 
+input = 3012210 
+
+main :: IO ()
+main = do 
+    part1 
+    part2
+
+part1 :: IO ()
+part1 = print $ 2 * (input - 2 ^ (toInteger (floor $ logBase 2 (fromIntegral input)))) + 1
+
+part2 :: IO ()
+part2 = print $ flip index 0 $ presentSteps initial
+
+presentSteps :: Seq Int -> Seq Int
+presentSteps elves 
+    | isFinished elves = elves
+    | otherwise = presentSteps $ next elves
+
+initial :: Seq Int
+initial = fromList [1..input] 
+
+isFinished :: Seq Int -> Bool
+isFinished elves = length elves == 1
+
+next :: Seq Int -> Seq Int
+next elves = prefix >< (midfix |> suffix)
+    where 
+        target = length elves `quot` 2
+        prefix = drop 1 $ take target elves
+        midfix = drop (target+1) elves
+        suffix = index elves 0
diff --git a/app/advent20.hs b/app/advent20.hs
new file mode 100644 (file)
index 0000000..8830c45
--- /dev/null
@@ -0,0 +1,74 @@
+module Main(main) where
+
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.List (foldl')
+
+data Interval = Interval Int Int deriving (Show, Eq)
+
+low :: Interval -> Int
+low (Interval l _) = l
+
+high :: Interval -> Int
+high (Interval _ h) = h
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent20.txt" 
+    let intervals = successfulParse $ parseIfile text
+    part1 intervals
+    part2 intervals
+
+part1 :: [Interval] -> IO ()
+part1 intervals = print $ (+1) $ high $ head $ foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
+
+part2 :: [Interval] -> IO ()
+part2 intervals = do
+    let ints = foldl' (mergeAdjacent) [] $ foldl' (merge) [] intervals
+    let gapCount = gaps ints
+    let lowGap = low $ head ints
+    let highGap = 4294967295 - (high $ last ints)
+    print (lowGap + gapCount + highGap)
+
+disjoint :: Interval -> Interval -> Bool
+disjoint (Interval a b) (Interval c d)
+    | b < c = True
+    | d < a = True
+    | a > d = True
+    | c > b = True
+    | otherwise = False
+
+intersect :: Interval -> Interval -> Bool
+intersect a b = not $ disjoint a b
+
+merge :: [Interval] -> Interval -> [Interval]
+merge [] i0 = [i0]
+merge (i1:intervals) i0
+    | (high i0) < (low i1) = i0:i1:intervals
+    | intersect i0 i1 = merge intervals (Interval a' b')
+    | otherwise = i1:(merge intervals i0)
+        where a' = minimum [low i0, low i1]
+              b' = maximum [high i0, high i1]
+
+mergeAdjacent :: [Interval] -> Interval -> [Interval]
+mergeAdjacent [] i0 = [i0]
+mergeAdjacent (i1:intervals) i0
+    | high i0 + 1 == low i1 = (Interval (low i0) (high i1)):intervals
+    | low i0 == high i1 + 1 = (Interval (low i1) (high i0)):intervals
+    | otherwise = i1:(mergeAdjacent intervals i0)
+
+gaps :: [Interval] -> Int
+gaps [] = 0
+gaps [_] = 0
+gaps ((Interval _ b):(Interval c d):intervals) = 
+    (c - b - 1) + gaps ((Interval c d):intervals)
+
+intervalFile = intervalLine `endBy` newline 
+intervalLine = Interval <$> int <*> (string "-" *> int)
+
+parseIfile :: String -> Either ParseError [Interval]
+parseIfile input = parse intervalFile "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/app/advent21.hs b/app/advent21.hs
new file mode 100644 (file)
index 0000000..2415974
--- /dev/null
@@ -0,0 +1,198 @@
+module Main(main) where
+
+import Text.Parsec hiding (State)
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (fromJust)
+import Data.List (elemIndex)
+
+import Control.Monad.Identity
+import Control.Monad.State
+import Control.Monad.Writer
+
+data Instruction =    SwapPosition Int Int 
+                    | SwapLetter Char Char
+                    | RotateSteps Int
+                    | RotateLetter Char
+                    | Reverse Int Int
+                    | Move Int Int 
+                    deriving (Show, Eq)
+
+data Log = Log {
+    action :: String
+    } deriving (Show)
+
+data Password = Password {
+    password :: String
+    } deriving (Show)
+
+
+type App = WriterT [Log] (StateT Password Identity)
+
+infixl 9 ??
+
+(??) :: Eq a => [a] -> a -> Int
+(??) items item = fromJust $ elemIndex item items
+
+
+initial = "abcdefgh"
+final   = "fbgdceah"
+
+testInstructions = "\
+\swap position 4 with position 0\n\
+\swap letter d with letter b\n\
+\reverse positions 0 through 4\n\
+\rotate left 1 step\n\
+\move position 1 to position 4\n\
+\move position 3 to position 0\n\
+\rotate based on position of letter b\n\
+\rotate based on position of letter d\n"
+
+main :: IO ()
+main = do 
+    -- let ti = successfulParse $ parseIfile testInstructions
+    -- part1 ti "abcde"
+    -- part2 (reverse ti) "decab"
+    text <- readFile "data/advent21.txt" 
+    let instructions = successfulParse $ parseIfile text
+    part1 instructions initial
+    part2 (reverse instructions) final
+
+part1 :: [Instruction] -> String -> IO ()
+part1 instructions start = 
+    let st = Password {password = start}
+        ((_, log), st') = runIdentity (runStateT (runWriterT (apply instructions)) st)
+    in do 
+        -- putStrLn $ unlines $ map (action) log
+        putStrLn $ password st'
+
+part2 :: [Instruction] -> String -> IO ()
+part2 instructions end = 
+    let st = Password {password = end}
+        ((_, log), st') = runIdentity (runStateT (runWriterT (unApply instructions)) st)
+    in do 
+        -- putStrLn $ unlines $ map (action) log
+        putStrLn $ password st'
+
+
+apply :: [Instruction] -> App ()
+apply [] = return ()
+apply (i:is) = 
+    do  st <- get
+        let p0 = password st
+        let p1 = applyInstruction i p0
+        put st {password = p1}
+        tell [Log (p0 ++ " -> " ++ p1 ++ " : " ++ (show i))]
+        apply is
+
+
+applyInstruction :: Instruction -> String -> String
+applyInstruction (SwapPosition from to) p0 
+    | from == to = p0
+    | otherwise = prefix ++ [p0!!end] ++ midfix ++ [p0!!start] ++ suffix
+        where start = minimum [from, to]
+              end = maximum [from, to]
+              prefix = take start p0
+              midfix = take (end-start-1) $ drop (start+1) p0
+              suffix = drop (end+1) p0
+
+applyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapPosition (p0??l0) (p0??l1)) p0
+
+applyInstruction (RotateSteps n) p0 = (drop n' p0) ++ (take n' p0)
+    where n' = if n < 0 
+                then (-1 * n)
+                else (length p0) - n
+
+applyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
+    where n = (1 + (p0??l) + if (p0??l) >= 4 then 1 else 0) `mod` (length p0)
+
+applyInstruction (Reverse from to) p0
+    | from == to = p0
+    | otherwise = prefix ++ (reverse midfix) ++ suffix
+        where start = minimum [from, to]
+              end = maximum [from, to]
+              prefix = take start p0
+              midfix = take (end-start+1) $ drop start p0
+              suffix = drop (end+1) p0
+
+applyInstruction (Move from to) p0 
+    | from == to = p0
+    | otherwise = prefix ++ [p0!!from] ++ suffix
+        where without = take from p0 ++ drop (from+1) p0
+              prefix = take to without
+              suffix = drop (to) without
+
+
+unApply :: [Instruction] -> App ()
+unApply [] = return ()
+unApply (i:is) = 
+    do  st <- get
+        let p0 = password st
+        let p1 = unApplyInstruction i p0
+        put st {password = p1}
+        tell [Log (p1 ++ " <- " ++ p0 ++ " : " ++ (show i))]
+        unApply is
+
+unApplyInstruction :: Instruction -> String -> String
+unApplyInstruction (SwapPosition from to) p0 = applyInstruction (SwapPosition from to) p0
+unApplyInstruction (SwapLetter l0 l1) p0 = applyInstruction (SwapLetter l0 l1) p0
+unApplyInstruction (RotateSteps n) p0 = applyInstruction (RotateSteps (-1 * n)) p0
+unApplyInstruction (Reverse from to) p0 = applyInstruction (Reverse from to) p0
+unApplyInstruction (Move from to) p0 = applyInstruction (Move to from) p0
+unApplyInstruction (RotateLetter l) p0 = applyInstruction (RotateSteps n) p0
+    where n = case (p0??l) of
+                0 -> -1
+                1 -> -1
+                2 ->  2
+                3 -> -2
+                4 ->  1
+                5 -> -3
+                6 ->  0
+                7 -> -4
+    -- where n = case (p0??l) of
+    --             0 -> -1
+    --             1 -> -1
+    --             2 ->  1
+    --             3 -> -2
+    --             4 ->  1
+
+
+instructionFile = instructionLine `endBy` newline 
+instructionLine = choice [ swapL 
+                         , rotateL
+                         , reverseL
+                         , moveL
+                         ]
+
+swapL = (try (string "swap ")) *> (swapPosL <|> swapLetterL)
+
+swapPosL = SwapPosition <$> (string "position" *> spaces *> int) 
+                        <*> (spaces *> string "with position" *> spaces *> int)
+
+swapLetterL = SwapLetter <$> (string "letter" *> spaces *> letter) 
+                         <*> (spaces *> string "with letter" *> spaces *> letter)
+
+rotateL = (try (string "rotate ")) *> (rotateDirL <|> rotateLetterL)
+
+rotateDirL = rotateStepify <$> ((string "left") <|> (string "right"))
+                           <*> (spaces *> int <* spaces <* skipMany letter)
+    where rotateStepify dir n = case dir of 
+                                     "left" -> (RotateSteps (-1 * n))
+                                     "right" -> (RotateSteps n)
+rotateLetterL = RotateLetter <$> (string "based on position of letter " *> letter)
+
+reverseL = Reverse <$> (string "reverse positions" *> spaces *> int)
+                   <*> (spaces *> (string "through") *> spaces *> int)
+
+moveL = Move <$> (string "move position" *> spaces *> int)
+             <*> (spaces *> (string "to position") *> spaces *> int)
+
+
+parseIfile :: String -> Either ParseError [Instruction]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Instruction
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/app/advent22.hs b/app/advent22.hs
new file mode 100644 (file)
index 0000000..f2e084a
--- /dev/null
@@ -0,0 +1,156 @@
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort, sortOn, reverse)
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord)
+
+data SearchState = SearchState { cx :: Int
+                               , cy :: Int 
+                               , grid :: [Node]
+                               } deriving (Show)
+instance Ord SearchState where
+    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
+instance Eq SearchState where
+  s1 == s2 = equivalentState s1 s2
+
+equivalentState :: SearchState -> SearchState -> Bool
+equivalentState s1 s2 =
+    let h1 = fromJust $ find (\n -> used n == 0) $ grid s1
+        h2 = fromJust $ find (\n -> used n == 0) $ grid s2
+      in
+        cx s1 == cx s2 && cy s1 == cy s2 && 
+                    x h1 == x h2 && y h1 == y h2
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    part1 sizes
+    part2 sizes
+
+part1 :: [Node] ->  IO ()
+part1 sizes = print $ length viable
+    where viable = [(a, b) | a <- sizes, 
+                             b <- sizes, 
+                             a /= b,
+                             (used a) > 0,
+                             (used a) <= (available b)]
+
+
+part2 :: [Node] ->  IO ()
+part2 sizes = 
+    -- do let testSizes = successfulParse $ parseFile testGrid
+    --    putStrLn $ searchTraceH $ reverse $ aStar [[startSt testSizes]] []
+       print (26 + 26 + 29 + 5 * 36)
+
+
+aStar :: [[SearchState]] -> [SearchState] -> [SearchState]
+aStar [] _ = []
+aStar (currentPath:agenda) closed = 
+    if isGoal reached then currentPath
+    else if reached `elem` closed 
+        then aStar agenda closed
+        else aStar newAgenda (reached:closed) 
+    where 
+        reached = head currentPath
+        successorPaths = map (:currentPath) $ successors reached
+        newAgenda = sortOn (cost) $ successorPaths ++ agenda 
+
+
+searchTrace :: [SearchState] -> String
+searchTrace ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ")"
+
+searchTraceH :: [SearchState] -> String
+searchTraceH ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
+          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
+          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
+
+startSt :: [Node] -> SearchState
+startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
+    where xs = map (\n -> x n) nodes
+
+isGoal :: SearchState -> Bool
+isGoal st = cx st == 0 && cy st == 0
+
+adjacent :: Node -> Node -> Bool
+adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
+
+-- A move of data from n1 to n2 is legal.
+legal :: Node -> Node -> Bool
+legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
+
+heuristic :: SearchState -> Int
+heuristic st = (cx st) + (cy st)
+
+successors :: SearchState -> [SearchState]
+successors st = map (newState st current) possibleMoves
+    where nodes = grid st
+          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
+          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
+
+
+-- Moving data from n1 to n2
+newState :: SearchState -> Node -> (Node, Node) -> SearchState
+newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
+    where cx' = if current == n1 then x n2 else x current
+          cy' = if current == n1 then y n2 else y current
+          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
+                        (n1 {used = 0, available = (size n1)}):
+                        (delete n1 $ delete n2 (grid st))
+
+cost :: [SearchState] -> Int
+cost p = (heuristic $ head p) + (length p)
+
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/app/advent22library.hs b/app/advent22library.hs
new file mode 100644 (file)
index 0000000..bad3621
--- /dev/null
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveGeneric #-}
+
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort)
+import Data.Graph.AStar
+import Data.Hashable
+import qualified Data.HashSet
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord, Generic)
+instance Hashable Node
+
+data SearchState = SearchState { cx :: Int
+                               , cy :: Int 
+                               , grid :: [Node]
+                               } deriving (Show, Eq, Generic)
+instance Hashable SearchState
+instance Ord SearchState where
+    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    part1 sizes
+    part2 sizes
+
+part1 :: [Node] ->  IO ()
+part1 sizes = print $ length viable
+    where viable = [(a, b) | a <- sizes, 
+                             b <- sizes, 
+                             a /= b,
+                             (used a) > 0,
+                             (used a) <= (available b)]
+
+
+part2 :: [Node] ->  IO ()
+part2 sizes = 
+    -- do let testSizes = successfulParse $ parseFile testGrid
+    --    putStrLn $ searchTrace $ fromJust $ 
+    --                 aStar successors 
+    --                         (\_ _ -> 1) 
+    --                         heuristic
+    --                         isGoal
+    --                         (startSt testSizes)
+    putStrLn $ searchTrace $ fromJust $ 
+                    aStar successors 
+                            (\_ _ -> 1) 
+                            heuristic
+                            isGoal
+                            (startSt sizes)
+
+
+
+searchTrace :: [SearchState] -> String
+searchTrace ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
+          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
+          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
+
+startSt :: [Node] -> SearchState
+startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
+    where xs = map (\n -> x n) nodes
+
+isGoal :: SearchState -> Bool
+isGoal st = cx st == 0 && cy st == 0
+
+adjacent :: Node -> Node -> Bool
+adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
+
+-- A move of data from n1 to n2 is legal.
+legal :: Node -> Node -> Bool
+legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
+
+heuristic :: SearchState -> Int
+heuristic st = (cx st) + (cy st)
+
+successors :: SearchState -> Data.HashSet.HashSet SearchState
+successors st = Data.HashSet.fromList $ map (newState st current) possibleMoves
+    where nodes = grid st
+          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
+          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
+
+
+-- Moving data from n1 to n2
+newState :: SearchState -> Node -> (Node, Node) -> SearchState
+newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
+    where cx' = if current == n1 then x n2 else x current
+          cy' = if current == n1 then y n2 else y current
+          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
+                        (n1 {used = 0, available = (size n1)}):
+                        (delete n1 $ delete n2 (grid st))
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/app/advent22search.hs b/app/advent22search.hs
new file mode 100644 (file)
index 0000000..32ada24
--- /dev/null
@@ -0,0 +1,156 @@
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort, sortOn, reverse)
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord)
+
+data SearchState = SearchState { cx :: Int
+                               , cy :: Int 
+                               , grid :: [Node]
+                               } deriving (Show)
+instance Ord SearchState where
+    s1 `compare` s2 = (heuristic s1) `compare` (heuristic s2)
+instance Eq SearchState where
+  s1 == s2 = equivalentState s1 s2
+
+equivalentState :: SearchState -> SearchState -> Bool
+equivalentState s1 s2 =
+    let h1 = fromJust $ find (\n -> used n == 0) $ grid s1
+        h2 = fromJust $ find (\n -> used n == 0) $ grid s2
+      in
+        cx s1 == cx s2 && cy s1 == cy s2 && 
+                    x h1 == x h2 && y h1 == y h2
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    part1 sizes
+    part2 sizes
+
+part1 :: [Node] ->  IO ()
+part1 sizes = print $ length viable
+    where viable = [(a, b) | a <- sizes, 
+                             b <- sizes, 
+                             a /= b,
+                             (used a) > 0,
+                             (used a) <= (available b)]
+
+
+part2 :: [Node] ->  IO ()
+part2 sizes = 
+    -- do let testSizes = successfulParse $ parseFile testGrid
+    --    putStrLn $ searchTraceH $ reverse $ aStar [[startSt testSizes]] []
+       print $ length $ aStar [[startSt sizes]] []
+
+
+aStar :: [[SearchState]] -> [SearchState] -> [SearchState]
+aStar [] _ = []
+aStar (currentPath:agenda) closed = 
+    if isGoal reached then currentPath
+    else if reached `elem` closed 
+        then aStar agenda closed
+        else aStar newAgenda (reached:closed) 
+    where 
+        reached = head currentPath
+        successorPaths = map (:currentPath) $ successors reached
+        newAgenda = sortOn (cost) $ successorPaths ++ agenda 
+
+
+searchTrace :: [SearchState] -> String
+searchTrace ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ")"
+
+searchTraceH :: [SearchState] -> String
+searchTraceH ss = unlines $ map (sst) ss
+    where sst s = "(" ++ show (cx s) ++ ", " ++ show (cy s) ++ ") :: " ++ holeS s
+          hole sk = fromJust $ find (\n -> used n == 0) $ grid sk 
+          holeS sk = "(" ++ show (x $ hole sk) ++ ", " ++ show (y $ hole sk) ++ ")"
+
+startSt :: [Node] -> SearchState
+startSt nodes = SearchState {cx = maximum xs, cy = 0, grid = nodes}
+    where xs = map (\n -> x n) nodes
+
+isGoal :: SearchState -> Bool
+isGoal st = cx st == 0 && cy st == 0
+
+adjacent :: Node -> Node -> Bool
+adjacent n1 n2 = abs ((x n1) - (x n2)) + abs ((y n1) - (y n2)) == 1
+
+-- A move of data from n1 to n2 is legal.
+legal :: Node -> Node -> Bool
+legal n1 n2 = adjacent n1 n2 && used n1 > 0 && used n1 <= available n2
+
+heuristic :: SearchState -> Int
+heuristic st = (cx st) + (cy st)
+
+successors :: SearchState -> [SearchState]
+successors st = map (newState st current) possibleMoves
+    where nodes = grid st
+          current = fromJust $ find (\n -> (x n) == (cx st) && (y n) == (cy st)) nodes
+          possibleMoves = [(n1, n2) | n1 <- nodes, n2 <- nodes, legal n1 n2]
+
+
+-- Moving data from n1 to n2
+newState :: SearchState -> Node -> (Node, Node) -> SearchState
+newState st current (n1, n2) = st {cx = cx', cy = cy', grid = grid'}
+    where cx' = if current == n1 then x n2 else x current
+          cy' = if current == n1 then y n2 else y current
+          grid' = sort $ (n2 {used = (used n2 + used n1), available = (available n2 - used n1)}):
+                        (n1 {used = 0, available = (size n1)}):
+                        (delete n1 $ delete n2 (grid st))
+
+cost :: [SearchState] -> Int
+cost p = (heuristic $ head p) + (length p)
+
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/app/advent22showgrid.hs b/app/advent22showgrid.hs
new file mode 100644 (file)
index 0000000..aec4309
--- /dev/null
@@ -0,0 +1,77 @@
+{-# LANGUAGE DeriveGeneric #-}
+
+module Main(main) where
+
+import GHC.Generics (Generic)
+import Text.Parsec 
+import Text.ParserCombinators.Parsec.Number
+import Data.Maybe (catMaybes, fromJust)
+import Data.List (find, delete, sort, sortOn, reverse)
+
+data Node = Node { x :: Int
+                 , y :: Int
+                 , size :: Int
+                 , used :: Int
+                 , available :: Int
+                 , use_pc :: Int 
+                 } deriving (Show, Eq, Ord)
+
+
+testGrid = "\
+\Filesystem            Size  Used  Avail  Use%\n\
+\/dev/grid/node-x0-y0   10T    8T     2T   80%\n\
+\/dev/grid/node-x0-y1   11T    6T     5T   54%\n\
+\/dev/grid/node-x0-y2   32T   28T     4T   87%\n\
+\/dev/grid/node-x1-y0    9T    7T     2T   77%\n\
+\/dev/grid/node-x1-y1    8T    0T     8T    0%\n\
+\/dev/grid/node-x1-y2   11T    7T     4T   63%\n\
+\/dev/grid/node-x2-y0   10T    6T     4T   60%\n\
+\/dev/grid/node-x2-y1    9T    8T     1T   88%\n\
+\/dev/grid/node-x2-y2    9T    6T     3T   66%\n\
+\"
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent22.txt" 
+    let sizes = successfulParse $ parseFile text
+    let maxX = maximum $ map (\n -> x n) sizes
+    let maxY = maximum $ map (\n -> y n) sizes
+    putStrLn $ unlines $ map (showRow maxX sizes) [0..(maxY-1)]
+
+
+showRow maxX sizes r = map (charOf) row
+  where row = sortOn (\c -> x c) $ filter (\c -> y c == r) sizes
+        charOf c = if (used c) == 0 
+                      then '+'
+                      else if (used c) > 100
+                              then '#'
+                              else '_'
+
+
+
+
+duFile = duLine `sepEndBy` newline 
+-- duLine = (optionMaybe nodeL)
+
+duLine = (nodeL >>= return . Just) <|> (headerL >> return Nothing)
+
+headerL = (many (noneOf "\r\n"))
+
+nodeL = nodeify <$> (string "/dev/grid/node-x" *> int)
+                <*> (string "-y" *> int)
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "T")
+                <*> (spaces *> int <* string "%")
+            where nodeify x y size used available use_pc = 
+                      Node {x=x, y=y, size=size, used=used, available=available, use_pc=use_pc}
+
+parseFile :: String -> Either ParseError [Maybe Node]
+parseFile input = parse duFile "(unknown)" input
+
+parseLine :: String -> Either ParseError (Maybe Node)
+parseLine input = parse duLine "(unknown)" input
+
+successfulParse :: Either ParseError [Maybe a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = catMaybes a
diff --git a/app/advent23.hs b/app/advent23.hs
new file mode 100644 (file)
index 0000000..2903967
--- /dev/null
@@ -0,0 +1,180 @@
+module Main(main) where
+
+import Text.Parsec hiding (State)
+import Text.ParserCombinators.Parsec.Number
+import Control.Monad.State.Lazy
+-- import Debug.Trace
+
+data Location = Literal Int | Register Char deriving (Show, Eq)
+data Instruction =   Cpy Location Location 
+                   | Inc Location 
+                   | Dec Location 
+                   | Jnz Location Location
+                   | Tgl Location
+                   deriving (Show, Eq)
+
+data Machine = Machine { a :: Int
+                       , b :: Int
+                       , c :: Int
+                       , d :: Int
+                       , pc :: Int
+                       , instructions :: [Instruction]} 
+               deriving (Show, Eq)
+
+testInstructions = "cpy 2 a\n\
+\tgl a\n\
+\tgl a\n\
+\tgl a\n\
+\cpy 1 a\n\
+\dec a\n\
+\dec a"
+
+emptyMachine :: Machine
+emptyMachine = Machine {a=0, b=0, c=0, d=0, pc=0, instructions=[]}
+
+main :: IO ()
+main = do 
+    text <- readFile "data/advent23.txt" 
+    let instructions = successfulParse $ parseIfile text
+    part1 instructions
+    part2 instructions
+
+
+part1 :: [Instruction] -> IO ()
+part1 instrs = 
+    do  let m0 = emptyMachine {instructions=instrs, a = 7}
+        let mf = snd $ runState runMachine m0
+        print (a mf)
+
+part2 :: [Instruction] -> IO ()
+part2 instrs = 
+    do  let m0 = emptyMachine {instructions=instrs, a = 12}
+        let mf = snd $ runState runMachine m0
+        print (a mf)
+
+
+runMachine :: State Machine ()
+runMachine = 
+    do  m <- get
+        if (pc m) >= (length $ instructions m)
+            then return ()
+            else do executeStep
+                    runMachine
+
+executeStep :: State Machine ()
+executeStep = 
+    do  m <- get
+        let i = (instructions m)!!(pc m)
+        put (executeInstructionPeep i m)
+        -- put (executeInstruction i m)
+
+executeInstructionPeep :: Instruction -> Machine -> Machine
+executeInstructionPeep i m =
+    if sample1 == sample1Target
+        -- then trace ("Peeping 1 " ++ (show m) ++ " to " ++ (show m1)) m1
+        then m1
+        else if sample2 == sample2Target
+            -- then trace ("Peeping 2 " ++ (show m) ++ " to " ++ (show m2)) m2
+            then m2
+            else executeInstruction i m
+    where sample1 = take (length sample1Target) $ drop (pc m) $ instructions m 
+          sample1Target = [ Cpy (Literal 0)    (Register 'a')
+                          , Cpy (Register 'b') (Register 'c')
+                          , Inc (Register 'a')
+                          , Dec (Register 'c')
+                          , Jnz (Register 'c') (Literal (-2))
+                          , Dec (Register 'd')
+                          , Jnz (Register 'd') (Literal (-5)) ]
+          m1 = m {a = b m * d m, c = 0, d = 0, pc = pc m + (length sample1)}
+          sample2 = take (length sample2Target) $ drop (pc m) $ instructions m 
+          sample2Target = [ Dec (Register 'b')
+                          , Cpy (Register 'b') (Register 'c')
+                          , Cpy (Register 'c') (Register 'd')
+                          , Dec (Register 'd')
+                          , Inc (Register 'c')
+                          , Jnz (Register 'd') (Literal (-2)) ]
+          m2 = m {b = b m - 1, c = (b m - 1) * 2, d = 0, pc = pc m + (length sample2)}
+
+
+executeInstruction :: Instruction -> Machine -> Machine
+executeInstruction (Inc r@(Register _)) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m r
+          m' = writeValue m r (v+1)
+executeInstruction (Inc (Literal _)) m = m {pc=pc1}
+    where pc1 = (pc m) + 1
+executeInstruction (Dec r@(Register _)) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m r
+          m' = writeValue m r (v-1)
+executeInstruction (Dec (Literal _)) m = m {pc=pc1}
+    where pc1 = (pc m) + 1
+executeInstruction (Cpy s d@(Register _)) m = m' {pc=pc1}
+    where pc1 = (pc m) + 1
+          v = evaluate m s
+          m' = writeValue m d v
+executeInstruction (Cpy s (Literal _)) m = m {pc=pc1}
+    where pc1 = (pc m) + 1
+executeInstruction (Jnz s d) m 
+    | v == 0 = m {pc=pc1}
+    | otherwise = m {pc=pcj}
+    where pc1 = (pc m) + 1
+          ed = evaluate m d
+          pcj = (pc m) + ed
+          v = evaluate m s
+executeInstruction (Tgl a) m 
+    | v < (length $ instructions m) = m {instructions = (replace (instructions m) i' v),
+                                       pc=pc1}
+    | otherwise = m {pc=pc1}
+    where pc1 = pc m + 1
+          v = evaluate m a + pc m
+          i = (instructions m)!!v
+          i' = case i of
+                  Inc x -> Dec x
+                  Dec x -> Inc x
+                  Tgl x -> Inc x
+                  Cpy x y -> Jnz x y
+                  Jnz x y -> Cpy x y
+          replace xs x i = take i xs ++ [x] ++ drop (i+1) xs
+
+
+evaluate :: Machine -> Location -> Int
+evaluate _ (Literal i) = i
+evaluate m (Register r) = 
+    case r of
+        'a' -> (a m)
+        'b' -> (b m)
+        'c' -> (c m)
+        'd' -> (d m)
+
+writeValue :: Machine -> Location -> Int -> Machine
+writeValue m (Literal i) _ = m
+writeValue m (Register r) v =
+    case r of 
+        'a' -> m {a=v}
+        'b' -> m {b=v}
+        'c' -> m {c=v}
+        'd' -> m {d=v}
+
+
+instructionFile = instructionLine `sepEndBy` newline 
+instructionLine = incL <|> decL <|> cpyL <|> jnzL <|> tglL
+
+incL = Inc <$> (string "inc" *> spaces *> register)
+decL = Dec <$> (string "dec" *> spaces *> register)
+cpyL = Cpy <$> (string "cpy" *> spaces *> location) <*> (spaces *> register)
+jnzL = Jnz <$> (string "jnz" *> spaces *> location) <*> (spaces *> location)
+tglL = Tgl <$> (string "tgl" *> spaces *> location)
+
+location = (Literal <$> int) <|> register
+register = Register <$> (oneOf "abcd")
+
+parseIfile :: String -> Either ParseError [Instruction]
+parseIfile input = parse instructionFile "(unknown)" input
+
+parseIline :: String -> Either ParseError Instruction
+parseIline input = parse instructionLine "(unknown)" input
+
+successfulParse :: Either ParseError [a] -> [a]
+successfulParse (Left _) = []
+successfulParse (Right a) = a
diff --git a/data/advent01.txt b/data/advent01.txt
new file mode 100644 (file)
index 0000000..62fb6e8
--- /dev/null
@@ -0,0 +1 @@
+R2, L3, R2, R4, L2, L1, R2, R4, R1, L4, L5, R5, R5, R2, R2, R1, L2, L3, L2, L1, R3, L5, R187, R1, R4, L1, R5, L3, L4, R50, L4, R2, R70, L3, L2, R4, R3, R194, L3, L4, L4, L3, L4, R4, R5, L1, L5, L4, R1, L2, R4, L5, L3, R4, L5, L5, R5, R3, R5, L2, L4, R4, L1, R3, R1, L1, L2, R2, R2, L3, R3, R2, R5, R2, R5, L3, R2, L5, R1, R2, R2, L4, L5, L1, L4, R4, R3, R1, R2, L1, L2, R4, R5, L2, R3, L4, L5, L5, L4, R4, L2, R1, R1, L2, L3, L2, R2, L4, R3, R2, L1, L3, L2, L4, L4, R2, L3, L3, R2, L4, L3, R4, R3, L2, L1, L4, R4, R2, L4, L4, L5, L1, R2, L5, L2, L3, R2, L2
\ No newline at end of file
diff --git a/data/advent02.txt b/data/advent02.txt
new file mode 100644 (file)
index 0000000..799cb46
--- /dev/null
@@ -0,0 +1,5 @@
+RDRRDLRRUDRUUUULDDRDUULLDUULDURDDUDRULDLUDDRLRDUDDURRRRURDURLLRDRUUULDLLLURDRLLULLUULULLLDLLLRRURRLRDUULRURRUDRRDRLURLRURLLULRUURRUURDDLDRDLDLLUDUULLLUUUUDULLDRRUURLDURDDDDDRLLRRURDLUDRRUUDLRRLLRDURDUDDDLRDDRDLRULLUULRULRLLULDDRURUUDLDDULDRLLURDDUDDUDRDUDLDRRRDURRLDRDRLDLLDUDDDULULRRULRLLURDRRDDUUUUUULRUDLRRDURDLRDLUDLDURUDDUUURUDLUUULDLRDURDLDUUDLDDDURUUDUUDRLRDULLDUULUDRUDRLRRRDLLDRUDULRRUDDURLDRURRLLRRRDRLLDLULULRRUURRURLLUDRRLRULURLDDDDDURUDRRRRULLUUDLDDLUUL
+ULURUDLULDULDLLDDLLLDRRLLUDRRDRDUDURUDLRRRRUDRDDURLRRULLDLURLDULLUDDLUDURDUURRRRLDLRLDDULLRURLULLDDRUDLRRRLDRRRDLDRLLDDRRDDLUUDRUDDLULRURLDURRLLDLRUDLLRRUULUDRLLLRLDULURRRRRDDUURDRRUUDULRUULDDULRLUDLUDDULLRLRDDLRLLURRRULDLRRRUURRLDDRDLRDLRRDRDLDRDUDRDURUUDRLRRULRDLLDLLRRRDRLDRLRLRLLLURURDULUUDDRLLDDDRURRURLRDDULLRURUDRRDRLRRRLDLRLRULDRLUURRUUULRLDLLURLLLDLLLDRRDULRURRRRLUDLLRRUDLRUDRURDRRDLUUURRDLRLRUUUDURDLUDURRUUDURLUDDDULLDRDLLDDDRLDDDRLDLDDDDUDUUDURUUDULRDDLULDRDRLURLUDRDLUULLULRLULRDDRULDUDDURUURULUDLUURLURU
+URLURDDRLLURRRLDLDLUDUURDRUDLLLRRDLUUULRRLURRRLUDUDLRLDDRUDLRRRULUDUDLLLULULLLRUDULDDDLLLRRRLRURDULUDDDULDLULURRRDLURDLRLLDUDRUDURDRRURULDRDUDLLRDDDUDDURLUULLULRDRRLDDLDURLRRRLDRDLDULRULRRRLRLLDULRDLURLRUUDURRUUDLLUDRUDLRLDUUDLURRRDDUUDUDRLDLDDRURDDLLDDRDLRLRDLLLUDLUUDRLRLRDDRDLRDLLUULLLLUULLDLLDLRDLRLRRLUUDLLRLRUDRURULRLRLULUDRLLUDDUDDULRLDDRUUUURULDRRULLLDUURULUDRLLURLRRLDLRRLDDRRRDUDDUDLDDLULUDDUURDLLLRLDLRDRUUUUUDDDLDRDDRRRLRURRRRDURDRURUDLURRURDRLRUUDDLDRRULLDURDRLRRDURURUULRDUDLDRDDLULULRDRRUDDRLLRLULRLLUUDRDUUDDUDLRUUDLLUULLRUULUDDLURRRLLDRLRRLLRULLDUULURLLLLUUULDR
+LDUURULLRLDRRUUDUUUURUUUDDDURRDDLRDLLRDDRULDDUURUDDURLLUDRDUDRDULDRRRLULUDRULLLLDRLLDRDLDLLRURULUDDDDURDDDRLLUDLDRULRDLDUDDDUUDLLRLLLDLRLRLRRUDDULDDDUDLDDLUDDULDLLLLULLLLDDURDDURRRDDRLRLLUDLLUDDDUDURUDRLRDRULULDDRULDLULULLRUULRLDULUURRDRDRRDLDDDRRLUULDLUDRDDUDLRURULLDDURLDDRULUDLDDDRDRLLRDLLUURRRURDRLRURLDDLURDRURDDURLLRLRUDUUDLDUDURRDDURDRDDUDDDUDUURURDDLLRUUDDRRDULDDLLDLRULUULRUUDLLDRLULDULDDUDLULRULDRLLDUULDDDLRLLRLULDDULDDRRRLDRRLURULRDDRDLRRDUDDRDRRRRUDUDLLRRDRRURRUURDRULDDUDURLUDDURDUDRDUULLDRURUURURDRRLDDLDLUURLULRUDURDRUUURRURRDRUDRUURDURLRULULLLULDLLDLRRLDRDLUULUDDDLRDRLRLDRUDUDRLLRL
+LURLUURLURDUUDRUDLDLLURRRDLDRRRULDDRRDRDUUDRUDURDDDURLUDDLULUULRRLLRULUDRDDRRRLDURDUDDURDDDLRLDDLULLDRDDLUUDUURRRLULRUURRRRLLULDUDRDUURRRURRDRDUDUDLUDULLDLDDRLUDRURDULURLURRLLURLLLRLUURLRUDLUDDRLURRUULULRLURRURUDURDLDLDDUDDRDLLRLLRRULDDRUDURUDDDUDLLRDLRUDULLLRRRUURUDUUULLRDUDRURUDULLDLLUUUDRULRLLRRDDDDUDULDRDRLLDDLLDDDURRUDURLDLRDRUURDDURLRDRURLRRLLRLULDRRLRUDURDUURRLUUULUDDDLRLULRDRLLURRRDLURDUUDRRRLUURRLLUDLUDLUULLRRDLLRDDRURRUURLDDLRLRLRUDLDLRLRDRRDLLLRDLRDUDLLDDDRD
\ No newline at end of file
diff --git a/data/advent03.txt b/data/advent03.txt
new file mode 100644 (file)
index 0000000..40c03ca
--- /dev/null
@@ -0,0 +1,1734 @@
+  330  143  338
+  769  547   83
+  930  625  317
+  669  866  147
+   15  881  210
+  662   15   70
+  273  277  707
+   50  592  770
+  280  313  407
+  642  487  372
+   94  619  295
+  734  243  141
+  220  141  515
+  198  824  745
+  210  787  964
+  213  627  601
+  918    4  447
+  805  630  802
+  711  237  987
+  938  552  388
+  643  405  779
+  803  747  525
+  917  832  631
+  899  292  843
+   81  206  445
+  141  874  465
+  177  974   54
+  520  725  814
+  271  958  554
+  779  579  264
+  358   18  257
+  978   77  270
+  984   88  131
+  475  702  940
+  183  756  160
+  383  941  820
+  806  142  646
+  793  275  804
+   53  272  368
+  942  821  785
+  863  830  902
+  219   52  199
+  473  479  351
+  860  522  361
+  890  240  216
+   94  756  407
+  310  189  468
+  234  909  178
+  889  667  756
+  429  485  730
+  825  405   30
+  943  806  253
+   98  455  365
+  998  454  290
+  971  576  223
+   64  429  273
+  945  779   63
+  352  960   59
+  672  948  577
+  782   43  567
+  460  315  719
+  825  604  183
+  453  442  788
+  694  632  334
+  569  619  317
+  337   49   17
+  878  468  660
+  393  598  717
+  550  827  159
+  540  362  346
+   66  713  380
+  491  477   44
+  411  114  320
+  554   96  250
+  306   67  196
+  769  553  333
+  762  436  382
+  278  322  153
+  894  603  334
+  539  441  844
+  486  162  927
+  197    9  218
+   94  221  804
+  250  220  913
+  557  626  486
+  562  705  630
+  968  922  285
+  518   36  468
+   18  608   83
+  512  611  530
+  534   37   65
+  621  136   90
+  239  113  139
+  371  640  956
+  629   54  959
+  531  620  338
+  682  499  810
+  798  170  968
+  187  640  645
+  660  535  332
+  663  530  314
+   64   26   65
+   55  285  488
+  620  288   52
+  642  474  450
+  455    9  962
+   51  760  489
+  426  760  833
+  304  783  772
+  498  765  695
+  635   53  126
+   44  430  774
+  979  943  838
+  962  892   64
+  494  709  614
+    7  695  120
+  503  114  606
+  362  340  689
+  509  367  389
+  673  410  664
+  773  262  558
+  897  958  245
+  140  773  483
+  965  468  584
+  546  209  668
+  856  381  184
+  274  237  762
+  888  677  906
+  871  516  405
+  102  529  912
+  285  724  885
+  352  501   53
+  774  139  245
+  380  309  594
+  813  185  765
+  530  645  965
+  958  618  120
+  851  202  957
+  737  476  131
+  595  546  108
+  716  113   66
+  327  215  318
+  397  343  390
+  351  143  103
+  138   91   31
+  108  224  919
+  230  276  896
+  426  975  177
+  327  975  918
+  238  365  764
+  328  799  775
+  590  906  967
+  578  460  338
+  507  619  647
+  711  617  867
+  933  478  734
+  820  760  721
+  199  711  824
+  983  214  228
+  382  150  648
+  415  782  242
+  615  754  445
+  693  689  590
+  382  784  482
+  997  181  322
+  682  241  172
+  587  302  252
+  184  135  254
+  574  104  549
+   88  738  796
+  486  715  861
+   62  491  815
+  463  434  569
+  519  622  310
+  199  443  782
+  572  657   85
+  763  517  844
+  750  175  835
+  228  269  710
+  611  316  551
+  883  546  296
+  169  693   18
+  992  743  316
+  263  529  529
+  705  570    4
+  918  706  527
+  609  285  971
+  260  533  112
+  711  486  904
+  820   40  472
+  997  301  129
+  257  288  343
+  635  439  375
+  560  381  417
+  773  105  145
+   58  963  267
+  976  742  424
+  994  441  384
+  389  770  514
+  782  463  335
+  919  727  276
+  780  794  372
+  326  180  590
+  918  946  257
+  889  842  181
+  507   61  464
+  762  835  443
+  827  607  982
+  174  875  544
+  934  885  589
+   32  343  757
+  987  826  257
+  981  782  844
+  446  291  397
+  443  800  421
+  165  668  539
+  410  373  487
+  422  803  881
+  546  998  953
+  291  607  160
+  919  894   62
+  842  718  117
+  110  816  582
+  470  836  596
+  575  687   35
+   37  835  374
+   90  954  354
+  101  141  407
+  174  398  499
+  173  737  964
+    4  365  950
+  946  616  634
+  906  904  619
+   40  789   16
+  788  769   76
+  737  867   88
+  565  812   31
+  508  380  201
+   34  935  339
+  500  862  326
+  431  181  475
+  403  346  585
+   88  530  708
+  731  137  781
+  715  563  272
+  817  659  932
+  396  368  360
+  162  683  376
+  278  620   39
+  525  910  371
+  688  524  149
+  488  998  279
+  286  392  523
+  325  144  406
+   79  532  419
+  540  460  465
+  222  832  416
+  517  507   46
+   87  744  183
+  382  819  701
+  306  763  647
+  744   74  913
+   62  813  849
+  691  874  775
+  291  422  314
+  432  630  809
+  611  510  566
+  583  745  289
+  397   19  727
+  188  766  442
+   96  108  329
+  963  719  598
+  963  764  469
+  444  636  731
+  792  636  422
+  993    1  416
+  518  300  532
+  298  312  736
+  316  111  463
+  825  569   35
+  858  591  584
+  809   84  607
+  681  610  740
+  383  279  210
+  851  733  615
+  287  959  160
+  856  851  171
+  606  115  211
+  310  541  845
+  506  119  319
+  665  471  562
+  382  885  798
+  440   29  595
+  113  903  475
+  257  773  846
+  306  741  776
+   97  804   76
+  489  332  423
+  466  632  613
+   86  739  481
+  199  846  712
+   62  282  809
+  155  681  142
+  705  525  270
+  159  800  117
+  612  664  316
+  505  616  837
+  578  839  770
+  942  535  122
+  542  781  512
+  552   22  475
+  760  791   97
+  432  626  837
+   26  616  336
+  412  316  702
+  108  232  242
+  158  311  449
+   60  141  325
+   58    1  714
+  532  977  123
+  531  978  598
+  679  899   57
+  645  523   54
+  167  892   14
+  164  574  492
+  105   37  491
+  132  555  485
+  600  879  508
+  608  843  222
+  270  255  398
+  232  960  281
+  241  995  436
+  113  674  411
+  381  567    5
+  697  450  966
+  726  857  969
+  722  686  965
+  543   20  453
+  955  689  554
+  858  161  923
+  140  979  953
+  786  836  237
+  200  322  875
+  311  623  398
+  510  814  945
+   67  387  825
+  621  620  740
+  630  842  163
+  545   75  373
+  506  531  501
+  301  571  357
+  746  491  253
+   37   29  748
+  769  507  754
+   69  886  861
+  423  629  856
+  380  723   83
+  875  647  657
+  144  696  580
+  896   49  629
+  275  598  374
+  118  636  279
+  277   80  529
+  623  130  493
+  368  712  621
+  833  730  512
+   59  767  829
+  105  933  731
+   54  240  108
+  803  235  992
+  837  726  881
+  426  855  450
+  636  730  731
+  840  561  977
+  996  229  670
+  508  234  186
+  529  108  917
+  373  337  795
+  681   35  565
+  790  251  152
+  301  235  599
+  875  416  653
+  277  338  990
+  800  207  595
+  954  650  896
+  931  667  706
+   84  851  822
+  254  778  816
+  316  141  732
+  233  759  239
+  546  473  315
+   69   15   96
+  513  470  320
+  460  188  729
+  429  950  288
+  709  807  790
+  456  161  570
+  269  718  339
+  213  628  602
+  155  367  686
+  176  418  568
+   66  251  723
+  959  696  536
+  794  279  885
+  315  527  993
+  603  853  868
+  727  747  994
+  411  287  193
+  528  763  559
+  803  149  739
+  542  883  696
+  275  676  183
+  411  317  161
+  349  875   35
+   39  729  221
+  256  831  216
+  247  238  176
+  399   59  306
+  409  445  550
+    9  387  253
+  613  204  474
+   81  868  944
+  589  912  735
+  319  264   83
+  984  704  614
+  778  614  532
+  699  762  556
+  680  250  507
+  504  581  647
+  160  351  295
+  513  739  413
+  651  915  651
+  878  218  499
+  872  990  503
+   38  886   12
+  218  201  415
+  240  250  504
+  265  448  382
+  402  876  126
+  488  950  649
+  189  210  597
+   24  850  758
+   30  451  347
+    5  437  723
+  634  310  546
+  801  179  411
+  679  338  852
+  385   32  933
+  406  531  554
+   88  516  871
+  860  486  834
+  467  535  849
+  419  820  785
+  206  649  526
+  244  499  714
+   80  774  678
+  336  149  612
+  310  175  656
+  150  221  791
+  159  806  701
+  336  465  530
+  376  819  272
+  533  472  421
+   82  124  909
+  523  561  539
+  844  811  576
+  439  612  587
+  782  457  686
+  152   51  837
+  413  573  855
+  403  608   26
+  893  819  910
+  361  499  657
+  677  937  617
+  428    6  343
+  310   38  431
+  474   35  420
+  574  256  221
+  700  907  515
+  149  685  478
+  206  325  720
+  114   51   67
+  320  338  686
+  293   59  527
+  147  756  986
+  250  697  573
+  968  194  545
+  542  480   72
+  454  574  619
+  473   55  592
+  475  339  889
+  884  313  993
+  125  127  742
+  591  514  585
+  543  583  282
+  264  580  390
+  839  487  781
+  902  664  868
+  334  459  819
+  107   20  211
+  368  479  775
+  683  691  273
+  681  336  630
+   22  978  536
+  926  828  708
+  210  319  723
+  787  689  866
+  854  633  856
+  960  494  866
+  122  687  596
+  918  705  539
+   84  564  791
+  876  138  949
+  836    1  500
+  718  308  466
+  228  311  271
+  421  998  433
+  622  772  174
+  875  720  432
+  680  687  509
+  215   95  623
+  674  732  166
+  198  174  645
+  721  839  390
+  617  896  448
+   73  331  155
+  789  134  431
+  853  376  400
+   82  862  411
+  779  362   70
+  750  777  349
+  674  604  224
+  812  731  446
+  280  546  336
+  922  781  619
+  196  892  876
+  941  361  479
+  344  988  873
+  499   92  795
+  287  913  546
+  625  167  604
+  617    1  399
+  154  166  720
+  328  323  111
+  713  619  530
+  606  756  580
+  194  247  935
+  149   65   64
+   55  287  902
+  870  866  127
+  478  679  587
+  900  459  565
+  563  787  743
+  962  798  769
+  669   39  525
+  745  691  317
+  484  123   93
+  500  598  348
+  159  535  681
+  618  176  877
+  723  373  464
+  304  184  131
+  542  209  654
+  716   47  647
+  976  537  771
+  914  606  568
+  241  250  481
+  616  640  660
+  744  187  843
+  303  617  927
+  369  525  773
+  754  697  360
+  595  560  605
+  562  589  610
+  799  497  655
+  823  553  532
+  937  502  449
+  976  941  158
+  194  720  347
+  474  694  822
+  528  184  272
+  922  698  568
+  415  889  638
+  169  822   65
+  547  281  663
+  582  167  110
+  365   56  914
+  431  162  923
+  473  812  578
+  572  890  386
+  164  119  308
+  604  946  496
+  327  142   72
+  641  916  472
+  743  663  228
+  107  446  345
+  823  486  152
+  997   47  968
+  565  155  631
+  438  205  416
+  271  163  875
+  123  393  111
+  169  412  854
+  615  683  659
+  592  362    9
+   99  895  668
+  834  205  172
+  359  355  550
+  499  149  389
+  755  298  916
+  475  706  807
+  829  425  118
+   43  527  479
+  159  473  874
+  151  326  992
+  970  660  509
+  837  930   35
+  164  345  506
+  209  879  487
+   97  157  503
+  289  755  793
+  624  897  293
+  382  134  451
+  257  917  339
+  110  168   85
+  470  583  139
+  486  613  120
+  584  747  795
+  959  699  339
+  866  384  672
+  157  639  464
+  939  485  409
+  947  441  131
+  179  953  581
+  735  587  605
+  834  582   36
+  304  422  707
+  195  348  347
+  163  521  486
+  948  471  675
+  915  453  406
+   40  345  635
+   81  124  115
+  127  105  127
+   50   32   10
+  221  399  397
+  487  676  412
+  574  607  450
+  268  625  323
+  843  858  145
+  706  286  218
+  822  168  254
+  950  708  944
+  572  640  775
+  958  563  909
+  996  154  918
+  378  626  564
+  335  823  339
+  499  810  270
+  294   22   98
+  987  959  591
+  101  899  442
+  931  409  576
+  542  102  655
+  404  980  398
+  759  990  381
+  692  990  750
+  752   93  149
+  278  973  883
+  621  459  232
+  398  261  626
+  221  212  744
+  790  241  352
+  802  218  317
+  443  294  244
+  393  131  941
+  466  378  885
+  516  419  240
+  799  748  407
+  468  502  386
+  829  329  766
+  432  376  408
+  681   88  198
+  553  351  489
+  234  717   59
+  332  525  675
+  437  691  723
+  441  834  433
+  616  144  274
+  966  911  650
+  254  274  782
+  346  714  856
+  330  696  171
+  394  407  298
+  897  553  867
+  755  503  956
+  253  840  382
+  923  195  262
+  918  735  483
+   55  703  227
+  768  759  225
+  825  238   14
+    7  479  978
+  211  603  957
+  216  866   94
+  112  698   60
+  847  631  307
+  940  164  253
+  406  133   14
+  380  816  425
+  147  873  429
+  698  987   98
+  534  823  691
+  197  690  754
+  979   39  468
+  928   73  531
+  119   66  920
+  982  810  569
+  476  534  397
+  931  366  182
+  783  104  732
+  131   32  619
+  784  136  530
+   16  933  484
+  995  987  739
+  985   88  977
+   43  919  914
+  540  399  915
+  566  859  257
+  639  419   73
+  727  118  865
+  477  370  834
+  293  434  155
+  422  557  603
+  203  243  754
+  373   15  748
+  466  574  807
+  282  576   70
+  275  365  608
+  987  644  648
+  711  629  717
+  420  410  696
+  252  417  874
+  642   26  202
+  223   23  531
+  545  580  675
+  565  600  521
+  130  745  142
+  264  377  397
+  300  618  253
+  683  331  279
+  440  826  275
+  835  785  266
+  592  264  590
+  257  255  173
+  532   23  620
+  571  749  434
+  988  552  492
+  566  766  234
+  617  818  776
+   45  113  882
+  579  793  114
+  971  243  608
+  979  241  241
+  130   83  634
+   91  361    5
+  311  107  501
+  377  388  496
+  727  849  317
+  323  702  256
+  804  254  189
+   70   11  246
+  752  425  785
+  799  413  882
+  917  133  695
+  959   49  902
+  420  121  412
+  177  170  158
+  828  734  135
+  880  875   75
+  824  556  960
+  857  689  960
+   74  951    2
+  246  687  756
+  311   93  487
+  209  626  886
+   17  545  566
+  963  252  283
+  947  493  805
+  185  493  462
+  728  365  885
+  808  214  528
+  582  780  100
+   30  254  654
+  596  706  553
+  713  968  803
+  123  270  839
+  792  778  475
+  442   95  682
+  931  212  678
+  781  140  439
+  651  645  978
+  137  829  286
+  593  503  895
+  642  215  144
+  687  122  934
+   84  240  919
+  656  515  774
+   51  799  273
+  636  324  924
+  213  161  309
+  509  157  458
+  582    1  727
+  716  269  819
+  978  343  303
+  828  264  708
+  108  620  190
+   12   12  634
+  103  615  579
+  364  286  660
+  809  714  656
+  729  504   10
+  994  366  341
+  433  796   77
+  663  462  353
+  776  687  758
+  751  495  651
+   33  751  753
+  349  919  228
+  204  799  584
+  335  156  563
+  725  191  535
+  731  676  524
+  455  571   10
+  899  379  689
+  773  641  812
+  324  761  421
+  354  557  897
+  571  740  161
+  407  271  856
+  886  393  428
+  286  870  218
+  950  819  347
+  331  847  858
+  498  471  689
+  357  378  775
+  890  503  514
+  201  863  428
+  721  737  796
+  636  178  974
+   14  387  936
+  622  424  144
+   82  201  727
+  127  164  779
+  173  319  326
+  195  748  641
+  469  512  510
+  626  949  405
+  552  542  251
+  192  204  382
+  655  558  631
+  970  519    3
+  918  701  399
+   56  543  403
+  524  848  641
+  620  431  539
+  604  473  824
+  369  105  464
+  575  957  429
+  859  978  199
+  712  381  199
+  941  305  738
+  892  663  937
+  653  963  365
+   70  331  508
+  620  923  682
+  739  122  350
+  288  418  768
+  733  326  520
+  694  472  793
+  725  415  739
+  895  398  201
+  500  157  168
+  727  814  354
+  807  726  340
+  431  329  212
+  635  374  403
+  677   78  347
+  386  559  505
+  385  361  161
+  262  494  621
+  481  237  767
+  318  966  640
+  723  732  546
+  911  652  823
+  958  502  677
+  718  258  834
+   98  666  506
+  929   41  933
+  869  637  605
+  585  156  335
+  490  316  149
+  436  339  323
+  596  948  224
+  275  433  241
+  545  890  155
+  601  413  676
+  893  401  673
+  694  171  403
+  211  110  482
+  267   61  541
+  206  124  256
+  189  353  308
+  351  880   70
+  237  677  380
+  759  754  388
+  465   99  862
+  852  787  925
+  758  890  804
+  252  817  784
+  773  129  860
+  954  102  872
+  743  396  730
+  500  304  173
+  492  399  527
+  413  465  813
+  670  837  933
+  897  424  430
+  782  404   14
+  151   24  418
+  897  260  306
+  811  287  386
+  440   93  449
+  229  185  582
+  136   63  678
+  211  250  940
+  184  400  209
+  122  383  238
+  143  386  111
+  320  194  415
+  925  790  501
+  924  596  614
+  606  733  277
+  886  116  194
+  278  627  189
+  225  536  981
+  487  538  584
+  539    2  793
+  219  456   57
+  341  424  941
+  199  482  921
+  231  241  588
+  711  740  334
+  596  554  323
+  917  164  629
+   19  138  756
+  939   70  225
+  536  432  401
+  137  614   14
+  593  818  402
+  871  280  515
+  268  259  326
+  900   97  376
+   68  699  461
+  546  810  400
+  540  697  676
+  591  125  751
+  159  719  919
+  605  763  898
+  171  845  459
+  115  289  376
+  265  636  317
+  646  225   84
+  663  755   89
+  192  828   12
+  316  523  822
+  310  933  784
+   44  721  873
+  893  873  461
+  898   15  548
+   96  861  726
+    9  837  398
+  238  404   29
+  227  845  428
+  770  764  472
+  960  747  784
+  990  281  811
+   59  597  111
+  930  799  729
+  930  882  758
+  459  961  116
+  484   83  914
+   83  969  994
+  828  423  132
+  346  541  246
+  783  484  303
+  983    7  921
+  216  208  905
+  802  216   54
+    6  121  306
+  609   36  749
+  608   84  626
+   97  705   89
+  200  688  878
+  242  314  802
+  294   66  338
+  768  417  272
+  785  351  266
+   58  505  668
+  791  291  679
+  783  694   43
+  794  468  355
+  777  796  171
+  378  784  426
+  224  510  840
+  557  606  708
+  513  127  189
+  231  976  517
+  772   37  433
+  684  973  324
+   70  661   83
+  914  136  702
+  917  630  710
+  826  894   84
+  373  416  248
+  551  924  226
+  357  646  374
+  890  491  246
+  938  293  519
+   66   42  704
+  537   60  374
+  508   56  405
+  437  751  653
+  681  718  160
+  683  293  800
+  569  288  878
+  692  206  611
+  173  157  399
+  201  492  645
+   98  132  329
+  234  612  711
+  296   54  975
+  651  219  923
+  527  177  138
+  585  598  302
+  552  653  474
+   54  288  358
+  828  631  279
+  854  642  746
+   80   52  645
+  386  346  181
+  488    7  569
+  168  351  533
+  906  186  681
+  833  404  191
+  863  297  526
+  451  555  808
+  336  544  155
+  253  211  838
+  759  819  238
+  921  343  761
+  264  632  690
+  165  424  159
+  121  481  361
+  181  409  439
+   94  972  995
+  696  904  722
+  613  238  422
+  190  281  334
+  385  127  129
+  300  364  234
+  479  768  937
+  883  654   35
+  979  679  959
+  244   51  788
+  275  613  804
+  143  575  210
+  160  168  608
+  330  471  651
+  407  594  410
+  723  576  943
+  268  912  361
+  692  442  760
+  443  288   20
+  382  610  556
+   62  694  568
+  322  257  214
+  253  458  861
+  260  213  829
+   37  137  420
+  668  220  104
+  673  150  435
+  551  466  897
+  390  729  999
+  423  963  763
+  837   36  295
+  854  726  495
+   16  728  389
+  735  246  510
+  218  136  617
+  604  197  140
+  113  355  499
+  631  902  488
+  689  898  212
+  780  826  901
+  556  205  657
+  855  661  288
+  141   34  480
+   27   23  194
+  115   53  393
+  333  287  700
+   68  300  671
+  394  589   28
+  572  248  771
+  454  118  797
+  526  141  300
+  785  377  504
+  886  723  105
+  541  712  470
+  156  128  932
+  479   85  989
+  381  207  162
+  813  839  544
+  143  783  541
+  916  361   24
+  878  133  886
+  986  750  335
+  122  643  864
+  395  460  591
+  387  896  627
+  117  455  109
+    2   14  569
+  873  364  215
+  875  350  554
+   70  878  940
+  234  846   82
+  256  279  901
+  693  990  473
+  951  866  824
+  923  408  891
+   36    5  531
+  954  654  266
+  921  652  434
+  561  701  427
+  232  764  365
+  330  331   73
+   46  813    6
+  380  698  297
+  396  221  289
+  135  867  633
+  814  649  286
+  797  918  827
+  705   58  338
+    6  305  310
+  701  352   28
+  903   97  825
+  693  126  794
+  438  144  592
+  367  932  400
+  320  820  264
+  687  210  652
+  682   84  566
+  671  604  816
+  529  646  267
+  795  654  114
+  955  426  118
+  249  759  102
+  343  581  267
+  341  619  107
+  479   57  341
+  683   32  870
+  630  609  210
+  361  643  803
+  506  856  406
+  580  562  359
+  312  433  154
+  750  379  920
+  448  520  312
+  733  259  899
+   33  786  319
+  579  669   90
+  595  769  242
+  160  985  236
+  654  903  946
+  635   99  802
+   75  158  437
+  467  382  289
+  406  542  548
+  684  417  794
+  729  105  122
+   44  485  689
+  737   15  713
+  970  391   17
+  373  384  729
+  336    1  118
+  814  807  759
+  965  808  828
+  179  181  834
+  242   94  838
+  188  183   82
+  691  402  618
+  984   43  561
+  330  447  872
+  553  581   30
+  884  393  836
+  431  298  837
+  278  389  690
+  976  587  803
+  722  220  538
+  548  208  107
+  629  414  729
+  543  584  672
+  512  431  954
+  475  367  959
+  226  306    9
+  824  774  668
+  188   22  870
+  722  764  300
+  647  803  256
+  410  972   21
+  436  536  278
+  995  577  453
+  670  439  224
+  434  488  572
+   82  317  498
+  559  823  662
+  499  614  196
+  944   14  432
+  618  866  652
+  467  872  289
+  471  722  189
+  923  756   17
+  790  409  195
+  511  500  545
+  667  283  758
+  271  373  283
+  573  686  490
+  659  706  560
+  770  247  633
+  424  169  895
+   47  349  411
+  380  235  805
+  384  546  148
+  747  870  831
+  754  421  910
+  937   15  433
+  188  760  806
+  872  748  418
+  718  556  510
+  165  590  486
+  798   40  177
+  349  923  530
+  795  690  746
+  550  671  360
+  824  442  775
+  331  686  152
+  570  270  926
+  860   64  383
+  408  464  170
+  758  440  349
+  773  434  699
+  780  563  352
+   18  644  621
+  432  663  188
+  420  887  956
+  237  586  788
+  319  526  586
+  544  647  115
+  628  235  511
+  666  408   33
+  670  459  697
+   48  189  692
+  837  708  428
+  462  652  632
+  426  106  457
+  730  744  195
+  700  816  769
+  383  480  923
+  601  612  910
+  559  953  779
+  533  937  240
+  464  123  344
+  579   82   76
+  179  188  373
+    1  641   56
+  688  698   50
+  688  160    4
+  790  364  767
+  202   70  137
+  914  420  674
+  961  657  851
+  578  708  875
+  503   94  776
+  221  143  356
+   34  126  403
+  234   31   78
+  721  949  330
+  675  191  460
+   80  957  651
+  690  580  824
+  461   73  802
+  725  606   51
+  183  857  521
+  708  800  482
+  644  111   37
+  769  778  869
+  883  693  909
+  549  714   43
+  273  246  599
+  637  309  675
+  451  195  552
+  681  408  126
+  422  465   52
+  743  235  144
+  248  586  312
+   42  398  313
+  222  335   21
+  528  312  738
+  856  312  132
+  915   79  610
+  550  605  186
+  566  815  698
+  127  250  717
+  532  129  775
+  604  132  549
+  134   44  247
+  521  815  470
+  370  853  515
+  795  187  851
+  963  295   50
+  757  228  169
+  706  303  120
+  416  133  309
+  956   63   11
+  751  162  301
+  387  632   29
+  257  383  994
+  215  247  994
+  529  606  963
+  770  305  756
+  721  791  971
+  558  531  675
+  253  477  918
+  470   52  615
+  256  335   24
+  301  523  651
+  316  702  637
+  321  721   32
+  591  730  179
+  341  364  146
+  673  120  501
+   31  183  207
+  641  116  463
+  221   54  775
+  262  458  669
+  139  486  904
+  736  260  139
+  406  359  663
+  434  563  753
+  981    6  215
+  423  320  358
+  719  319  415
+  315  375  320
+    7  637  423
+  314  365  175
+  199  687  754
+  174  546    1
+   29  526  754
+  153  402  251
+  787  565  919
+  820  239  876
+  994  614   47
+  958  816  288
+  244  750  275
+  248  890  694
+  628  194  414
+  774  958  466
+  181   34  442
+  569  371  939
+  500  347  740
+  745  123  467
+  614  662  119
+  201  690  352
+  596  974  215
+  508  921  240
+  405  947  317
+  402  372  733
+  298   41  357
+  135  339  759
+  544  683  690
+  584    1  893
+  215  680  501
+  191  453  649
+  952   84  727
+  815  494  293
+  163  168   46
+  136  119  441
+  185  112  474
+  877  830  354
+  497  242  226
+  484  714  178
+  854  570  402
+  873  120  432
+   30  613   50
+  365  529  624
+  969  332  586
+  636  617  153
+  588  669  314
+   12   52  628
+  584  704  642
+   95  199   69
+  979  486  705
+  953  391  698
+  698  471  333
+  302  466   64
+  678   19  376
+  353  860  905
+  236  113  797
+  400  879  962
+  341  805  493
+  661  506  196
+  736  357  644
+  943  352  365
+  484  756  282
+  491  943  262
+  765  494  729
+  321  208  986
+  621  346  290
+  258  706  386
+  179  452  276
+  433  583  153
+  708    2  212
+  193  151  320
+  647  149  299
+  335  951  831
+  661  787  792
+  818  742  477
+  799  964  157
+  726  780  172
+  740  225   24
+  428   39  263
+  388  901  506
+   97  940  413
+   41  454  826
+  324  453  443
+  346   76  938
+  463  595  751
+  854  948  454
+  451  902  507
+  722  961  130
+  695  529  425
+   59  591  467
+  559  623  222
+  991  194  196
+  749  793  245
+  474  327  247
+  346    2  277
+  643  328  135
+  785  264  751
+   35  537  887
+  811  584  685
+  475  903  748
+  471  115  698
+    7  945  449
+  464  880  227
+  287  868  878
+  564   11  850
+  221  623  475
+  314  325  553
+  209  865  621
+   39  655  236
+   95  296  235
+  124  920   21
+  439  473  902
+  334  375  792
+  315  116  768
+  267  736   95
+  703  606  595
+  505  886  514
+  114  168   52
+  301  584  495
+  200  709  527
+  164  422  554
+  246  546  460
+  377  141  223
+  286  323  354
+  810  240   90
+  920  450  425
+  277    8  570
+   28  649   50
+  295  650  534
+  690  187  665
+  674  184  483
+   68  139  376
+  570  430  500
+  590  422  543
+  304   68   43
+  422  666  163
+  501  375  696
+   81  621  813
+   19  981  945
+  410   83  941
+  427  945   25
+  283  408  825
+  281  648  635
+  294  678  615
+  113  936  500
+  554  772  314
+  502  642  624
+  262  318  699
+   88  526  817
+  242  468  161
+  820  179  253
+  580   62  531
+  343  183  422
+  430  161  485
+   26  127  435
+  442   32  517
+  491  243  544
+  552  680  310
+  131  489  457
+  697  162  526
+  897  838  305
+  695  748  335
+  753  936   24
+   46  681  637
+  745  808  617
+  318  251  171
+   49   39  855
+  359  284  725
+  221  837  145
+  581  821  444
+  573  267  318
+  706  969  583
+  722  912  586
+  680   86  869
+  833  546   97
+  865  507  481
+  938  104  386
+  941  217  265
+  360   53  607
+  634  197  476
+  787  659  444
+  368  163  783
+  493  738  345
+  182  539   52
+  764  827  612
+  699  493  663
+  914  384   17
+  495  546  260
+  739  461  275
+  386   91  394
+  804  506  198
+  780  421  269
+  109  669  193
+  457  298  349
+  560  800  331
+  282  153  637
+  160  254  807
+  434  204  476
+  717  759  737
+  629  785   65
+  347  614  790
+  270  663  647
+  188  271  528
+  277  929  591
+  853  744  589
+  704  881  761
+  573  714  627
+  541  689  287
+  540  301  187
+  670  397  368
+  867    8  698
+  869  146  802
+   10  137  104
+  164  575  450
+  507  233  466
+  548  425   46
+  435  824   78
+  334  951   34
+  646  551   99
+   60  829  569
+  501  866  382
+  440  327  222
+  744  132  333
+  800  983  126
+  887  866  451
+   28  599   39
+  833  129  307
+  804  519  319
+  510  746  821
+  639  209  561
+  197  649  333
+  638  644  361
+  754  474  366
+  193  219  106
+  843  536  331
+  483  634  611
+  367  195  592
+  753   71  115
+  934   42   83
+  337   75   85
+  475  304  169
+  672  143  211
+  360  406   74
+  370  119  111
+  351  955  696
+  543  849  785
+  375  576  836
+  288  316  239
+  512  273  786
+  721  407   82
+  998  634  292
+  449  399  284
+  540  316  693
+  430   68  984
+  146  376  482
+  785  134  643
+  157  509  441
+  808  615  552
+  920  564  452
+  407  341  441
+  990  778  211
+  822  325  925
+  368  206  876
+  491  153  126
+   11  373  546
+  854  752  143
+  843  773  660
+  777  472  964
+  359  708  889
+  575  941  882
+  945   22  152
+  968  237  115
+   30  238  110
+  101  504  412
+  119  646  719
+   28  190  336
+  890  301  712
+   11  657  782
+  885  465  361
+  424  669  645
+  528  654  194
+  894  252  667
+  516  299  998
+  370  837  976
+  305  651  194
+  701  447  175
+  470  234  929
+  752  606  965
+  568  370  322
+  226  592  281
+  553  801  330
+  576  228  623
+  639  477  637
+  252  664  998
+  781  215  994
+  446  698   25
+  562  500  980
+  702  444  299
+  971  550  387
+  754  562  439
+  347  896  716
+  242  861  596
+  588  829  323
+  464  211  949
+  481  192   47
+  598   98  963
+  932  960   32
+  933  482  893
+   15  989  888
+  866  735  629
+  636  513  470
+  280  528  944
+  531   66  867
+  284  735  865
+  778  743    3
+  458  131  262
+  772  273  255
+  942  278   50
+  269  151  917
+  502    4  883
+  538  155   68
+  929  850   21
+  126  759  729
+  869  689  711
+  180  359  855
+  299   68  975
+  210  371  205
+  477  183  827
+  922   50  841
+  665  154  312
+  379  848  486
+  450  835  743
+   69  161  515
+  680  535   83
+  692  779  352
+  818  554  389
+  781   89  538
+  746  218  209
+  292  201  652
+  417  375  393
+  916  962  644
+  518  923  561
+  915  469  386
+  142  460  454
+  947  392   89
+  144  840  866
+  205  465  967
+  209  657  650
+  891  322  207
+  800  522  907
+  516  498  994
+  185  806  804
+  179  393  137
+  316  765  892
+  850  756  123
+  494  783  627
+  832   53  659
+   93  949  602
+  666  954  516
+  592   11  210
+  223    4  389
+  221  280  388
+  100  279   50
+  380  589  345
+  385  238  382
+  205  506  359
+   98  280  652
+  396  371  290
+  314  477  454
+  368  692  564
+   48  263  586
+  356  902  922
\ No newline at end of file
diff --git a/data/advent04.txt b/data/advent04.txt
new file mode 100644 (file)
index 0000000..8f99f7a
--- /dev/null
@@ -0,0 +1,991 @@
+aczupnetwp-dnlgpyrpc-sfye-dstaatyr-561[patyc]
+jsehsyafy-vqw-ljsafafy-866[nymla]
+tyepcyletzylw-ncjzrpytn-prr-opawzjxpye-743[cnrdl]
+foadouwbu-qvcqczohs-obozmgwg-662[lamjh]
+ckgvutofkj-pkrrehkgt-zkinturume-436[krtue]
+pelbtravp-pnaql-ernpdhvfvgvba-481[szram]
+yflexwxoalrp-ciltbo-tlohpelm-887[bmwep]
+ipvohghykvbz-ihzrla-jbzavtly-zlycpjl-253[lzhvy]
+cybyjqho-whqtu-rqiauj-fkhsxqiydw-322[syzwi]
+tipfxvezt-sleep-tljkfdvi-jvimztv-425[tveif]
+ktiaaqnqml-xtiabqk-oziaa-xczkpiaqvo-616[aiqko]
+ckgvutofkj-xghhoz-gtgreyoy-306[nyhpz]
+molgbzqfib-zovldbkfz-zxkav-lmboxqflkp-341[xlomg]
+ikhcxvmbex-vtgwr-vhtmbgz-mxvaghehzr-111[hvgmx]
+dpssptjwf-fhh-tfswjdft-805[fstdh]
+oaddaeuhq-otaoaxmfq-qzsuzqqduzs-534[qadou]
+dzczkrip-xiruv-sleep-drerxvdvek-685[erdvi]
+jvsvymbs-yhiipa-vwlyhapvuz-149[zfyqn]
+nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-853[sjnfy]
+mbiyqoxsm-lsyrkjkbnyec-nio-wkbuodsxq-614[bkosy]
+jchipqat-uadltg-hidgpvt-375[kcnop]
+jqwpihizlwca-lgm-nqvivkqvo-980[ldeay]
+xfbqpojafe-dipdpmbuf-tfswjdft-493[fdpbj]
+kwvacumz-ozilm-kpwkwtibm-lmxtwgumvb-798[mwkbi]
+eqttqukxg-ejqeqncvg-ocpcigogpv-648[sdtzl]
+dsxxw-bwc-bcnjmwkclr-678[cwbxd]
+jvuzbtly-nyhkl-ibuuf-thuhnltlua-175[ulhtb]
+rdadguja-uadltg-bpgztixcv-401[adgtu]
+atyzghrk-kmm-ktmotkkxotm-930[xzfpe]
+uwtojhynqj-ojqqdgjfs-xjwanhjx-151[waqmk]
+hwdtljsnh-uqfxynh-lwfxx-rfsfljrjsy-567[fhjls]
+xst-wigvix-gspsvjyp-gerhc-erepcwmw-724[uplfw]
+kzgwomvqk-jcvvg-zmamizkp-122[kmvzg]
+sbejpbdujwf-dboez-dpbujoh-dvtupnfs-tfswjdf-623[uxrpz]
+bxaxipgn-vgpst-rwdrdapit-prfjxhxixdc-609[xpdir]
+avw-zljyla-zjhclunly-obua-ayhpupun-981[aluyh]
+nuatmlmdpage-qss-fdmuzuzs-404[btopv]
+oaddaeuhq-otaoaxmfq-dqoquhuzs-716[aoqdu]
+myvybpev-cmkfoxqob-rexd-bomosfsxq-432[khwfc]
+oxaflxzqfsb-zelzlixqb-jxohbqfkd-471[hxkwc]
+fnjyxwrinm-snuuhknjw-anbnjalq-875[ztvnr]
+qfmcusbwq-pibbm-fsqswjwbu-922[bqswf]
+wihmogyl-aluxy-jfumncw-alumm-nluchcha-916[lmuac]
+oxaflxzqfsb-avb-bkdfkbbofkd-757[trzjy]
+ksodcbwnsr-qzoggwtwsr-gqojsbusf-vibh-fsgsofqv-818[gsdca]
+rzvkjiduzy-xcjxjgvoz-gvwjmvojmt-161[zufvq]
+nwlddtqtpo-mldvpe-dezclrp-639[zlnki]
+vkppo-rqiauj-huqsgkyiyjyed-530[yijkp]
+dfcxsqhwzs-qobrm-qcohwbu-fsoqeiwgwhwcb-688[wqbch]
+vxupkizork-xghhoz-aykx-zkyzotm-462[kzoxh]
+zotts-jfumncw-alumm-omyl-nymncha-396[bstha]
+yaxsnlcrun-npp-cajrwrwp-355[nprac]
+bkwzkqsxq-pvygob-nozkbdwoxd-822[bkodq]
+frqvxphu-judgh-fdqgb-frdwlqj-hqjlqhhulqj-595[ezyxq]
+hqtyeqsjylu-sqdto-sedjqydcudj-764[dqjsy]
+fab-eqodqf-omzpk-fdmuzuzs-430[yxkbc]
+gpewwmjmih-glsgspexi-xvemrmrk-204[cynzd]
+kwtwznct-jcvvg-wxmzibqwva-694[cdaps]
+guahyncw-wuhxs-zchuhwcha-396[xwnmj]
+pybgmyargtc-zsllw-dglylagle-912[mcrsp]
+kyelcrga-zyqicr-jyzmpyrmpw-782[yrcmp]
+wsvsdkbi-qbkno-zvkcdsm-qbkcc-myxdksxwoxd-432[kdsbc]
+ltpedcxots-rwdrdapit-advxhixrh-271[drtxa]
+elrkdcdugrxv-sodvwlf-judvv-vklsslqj-465[vdlsj]
+htwwtxnaj-hfsid-htfynsl-ywfnsnsl-281[ghfea]
+nij-mywlyn-xsy-xymcah-682[kiasm]
+zovldbkfz-yrkkv-abmilvjbkq-939[chetn]
+esyfwlau-kusnwfywj-zmfl-ghwjslagfk-398[fwlsa]
+lahxpnwrl-yujbcrl-pajbb-mnyuxhvnwc-147[tzcxk]
+rwcnawjcrxwju-lqxlxujcn-lxwcjrwvnwc-381[hxsdl]
+pbybeshy-pynffvsvrq-wryylorna-jbexfubc-143[ybfre]
+lxaaxbren-kdwwh-bqryyrwp-407[sktqh]
+pybgmyargtc-zyqicr-rpyglgle-106[vsdft]
+jfifqxov-doxab-yxphbq-obxznrfpfqflk-939[nyvhm]
+pualyuhapvuhs-jovjvshal-thuhnltlua-383[lrfob]
+gvcskirmg-tpewxmg-kveww-pskmwxmgw-438[ujily]
+lgh-kwujwl-tmffq-esfsywewfl-242[fwles]
+jyddc-fewoix-hitevxqirx-412[ixdec]
+uzfqdzmfuazmx-otaoaxmfq-ogefayqd-eqdhuoq-222[lbfru]
+ryexqpqhteki-sxesebqju-tufbeocudj-348[tjzhb]
+kfg-jvtivk-sleep-wzeretzex-477[ektvz]
+kzgwomvqk-jcvvg-bmkpvwtwog-174[vgkwm]
+odiih-kdwwh-uxprbcrlb-251[bdhir]
+htqtwkzq-xhfajsljw-mzsy-yjhmstqtld-229[thjqs]
+qjopwxha-xwogap-owhao-914[astye]
+wrs-vhfuhw-edvnhw-hqjlqhhulqj-439[vufmz]
+rdggdhxkt-xcitgcpixdcpa-rpcsn-rdpixcv-stktadebtci-609[cdtip]
+eqttqukxg-fag-eqpvckpogpv-544[jmtpx]
+kdijqrbu-sqdto-seqjydw-iuhlysui-946[bioht]
+fydelmwp-awldetn-rcldd-cplnbftdtetzy-951[kpxim]
+ubhatstkwhnl-unggr-nlxk-mxlmbgz-761[geyqm]
+ocipgvke-gii-fgxgnqrogpv-726[giopv]
+fab-eqodqf-otaoaxmfq-iadwetab-430[azmnb]
+fab-eqodqf-otaoaxmfq-pqhqxabyqzf-456[qafob]
+xekdwvwnzkqo-zua-naoawnyd-784[anwdk]
+sbejpbdujwf-fhh-tbmft-285[mbfsn]
+hwbba-eqpuwogt-itcfg-rncuvke-itcuu-ugtxkegu-648[ugtce]
+hqcfqwydw-fbqijys-whqii-cqdqwucudj-452[ztesw]
+dmpuamofuhq-nmewqf-emxqe-742[meqfu]
+iqmbazulqp-pkq-iadwetab-976[kcxmz]
+lahxpnwrl-ljwmh-lxjcrwp-bnaerlnb-927[lnrwa]
+laffe-lruckx-vaxingyotm-306[aflxc]
+forwcoqhwjs-qcffcgwjs-tzcksf-rsdzcmasbh-220[csfwh]
+yflexwxoalrp-gbiivybxk-abpfdk-731[sjtrd]
+foadouwbu-ibghopzs-pogysh-kcfygvcd-506[ogbcd]
+rtqlgevkng-hnqygt-ugtxkegu-232[zdgob]
+yrwxefpi-fyrrc-asvowlst-880[jmzfi]
+tyepcyletzylw-nlyoj-nzletyr-fdpc-epdetyr-795[jfvnq]
+rkpqxyib-yxphbq-lmboxqflkp-627[vzmla]
+xjinphzm-bmvyz-hvbizodx-ytz-gjbdnodxn-967[jmuws]
+ktfitzbgz-vtgwr-inkvatlbgz-813[tgzbi]
+hqtyeqsjylu-sbqiiyvyut-fbqijys-whqii-vydqdsydw-634[yqisd]
+hcd-gsqfsh-dzoghwq-ufogg-qcbhowbasbh-506[hgboq]
+ryexqpqhteki-uww-qdqboiyi-140[qiewy]
+bkzrrhehdc-qzaahs-cdoknxldms-625[czsmn]
+sawlkjevaz-lhwopey-cnwoo-yqopkian-oanreya-966[znhlt]
+xjgjmapg-hdgdovmt-bmvyz-zbb-yzkgjthzio-577[gzbjm]
+myxcewob-qbkno-lexxi-wkbuodsxq-250[xboek]
+nsyjwsfyntsfq-hfsid-htfynsl-wjfhvznxnynts-255[umtns]
+kpvgtpcvkqpcn-ecpfa-ewuvqogt-ugtxkeg-596[ehsca]
+vkrhzxgbv-cxeeruxtg-ftgtzxfxgm-579[ymast]
+pbeebfvir-fpniratre-uhag-genvavat-663[smznt]
+vehmsegxmzi-glsgspexi-hitpscqirx-802[jszht]
+tyepcyletzylw-nlyoj-nzletyr-cpdplcns-223[lycen]
+jxdkbqfz-oxaflxzqfsb-avb-lmboxqflkp-523[mzvny]
+tcfkqcevkxg-tcddkv-uvqtcig-336[cdsln]
+ide-htrgti-hrpktcvtg-wjci-ldgzhwde-947[tdghi]
+ojk-nzxmzo-kgvnodx-bmvnn-ozxcijgjbt-213[nojxz]
+avw-zljyla-msvdly-yljlpcpun-539[lyajp]
+rdchjbtg-vgpst-rpcsn-rdpixcv-htgkxrth-661[rtcgh]
+xlrypetn-dnlgpyrpc-sfye-dezclrp-353[pelry]
+enqvbnpgvir-enoovg-erfrnepu-455[ftlpj]
+xjinphzm-bmvyz-xviyt-xjvodib-pnzm-oznodib-291[mlybz]
+rwcnawjcrxwju-kjbtnc-bqryyrwp-511[tkyns]
+gokzyxsjon-pvygob-nofovyzwoxd-458[ndtfs]
+bjfutsneji-hfsid-htfynsl-rfwpjynsl-489[fsjnh]
+ydjuhdqjyedqb-rqiauj-qdqboiyi-452[qdijy]
+enzcntvat-rtt-genvavat-351[lznyt]
+rdadguja-qjccn-advxhixrh-791[yncim]
+fmsledevhsyw-ikk-irkmriivmrk-646[nlxzm]
+jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-471[oxpbf]
+jqwpihizlwca-zijjqb-aitma-408[gzpmw]
+pyknyegle-afmamjyrc-bcqgel-808[gynip]
+zbytomdsvo-mkxni-bocokbmr-406[obmkc]
+wfummczcyx-luvvcn-fuvilunils-526[bavmt]
+hwdtljsnh-gfxpjy-rfsfljrjsy-541[gpszy]
+lsyrkjkbnyec-oqq-gybucryz-848[ybckq]
+oaddaeuhq-vqxxknqmz-xasuefuoe-378[rzmqe]
+vhglnfxk-zktwx-fbebmtkr-zktwx-wrx-vhgmtbgfxgm-813[xepwt]
+yrwxefpi-gerhc-hitevxqirx-594[eirxh]
+mvydjvxodqz-xviyt-xjvodib-rjmfncjk-265[cqirj]
+kdijqrbu-tou-kiuh-juijydw-140[uijdk]
+ugjjgkanw-usfvq-vwkayf-970[rntsw]
+froruixo-fdqgb-ilqdqflqj-569[cylni]
+gpsxdprixkt-hrpktcvtg-wjci-gtprfjxhxixdc-999[xptcg]
+kwvacumz-ozilm-akidmvomz-pcvb-nqvivkqvo-460[emnrk]
+pejji-zvkcdsm-qbkcc-domrxyvyqi-484[cdijk]
+rdadguja-xcitgcpixdcpa-qphzti-bpgztixcv-791[cipad]
+rkpqxyib-zxkav-zlxqfkd-qoxfkfkd-965[qiftn]
+bkzrrhehdc-bnmrtldq-fqzcd-atmmx-qdrdzqbg-937[dqrbm]
+eqttqukxg-rtqlgevkng-dwppa-fgxgnqrogpv-570[gxetc]
+zbytomdsvo-mkxni-myxdksxwoxd-510[xdmok]
+ymszqfuo-rxaiqd-dqmocgueufuaz-274[umtwy]
+pelbtravp-ovbunmneqbhf-qlr-znantrzrag-663[xlyio]
+rdadguja-ytaanqtpc-gtprfjxhxixdc-141[krcaf]
+etaqigpke-hnqygt-eqpvckpogpv-362[pegqk]
+rtqlgevkng-etaqigpke-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-206[gxszf]
+fubrjhqlf-fkrfrodwh-sxufkdvlqj-777[pozts]
+wfintfhynaj-wfggny-xjwanhjx-957[nfjwa]
+xcitgcpixdcpa-bpvctixr-qphzti-gthtpgrw-479[zjlmc]
+gntmfefwitzx-hfsid-fsfqdxnx-697[oanif]
+xgjougizobk-jek-jkvgxzsktz-384[kgjzo]
+nzydfxpc-rclop-mldvpe-cpdplcns-925[pcdln]
+ltpedcxots-qphzti-gtrtxkxcv-739[txcpd]
+gvaaz-fhh-mphjtujdt-233[hajtd]
+jchipqat-rpcsn-gtprfjxhxixdc-297[cpxhi]
+gsvvswmzi-gerhc-tyvglewmrk-308[zbdcy]
+dmybmsuzs-omzpk-oamfuzs-pqhqxabyqzf-508[mzqsa]
+iruzfrtkzmv-treup-tfrkzex-jkfirxv-295[rfktz]
+pdjqhwlf-mhoobehdq-vwrudjh-127[hdjoq]
+rgndvtcxr-hrpktcvtg-wjci-apqdgpidgn-375[jdrhb]
+sbqiiyvyut-isqludwuh-xkdj-efuhqjyedi-114[qjzpn]
+lahxpnwrl-npp-nwprwnnarwp-459[ontmq]
+zntargvp-onfxrg-fnyrf-871[fnrga]
+molgbzqfib-avb-absbilmjbkq-601[bailm]
+kpvgtpcvkqpcn-tcddkv-wugt-vguvkpi-492[vkpcg]
+jfifqxov-doxab-zxkav-zlkqxfkjbkq-341[kxfqa]
+qfmcusbwq-dzoghwq-ufogg-fsqswjwbu-220[zbjty]
+xjinphzm-bmvyz-mvwwdo-yzkgjthzio-785[zmhij]
+ejpanjwpekjwh-ydkykhwpa-owhao-186[hqlfd]
+nzydfxpc-rclop-prr-cplnbftdtetzy-483[pcrtd]
+kwtwznct-rmttgjmiv-amzdqkma-590[mtakw]
+muqfedyput-fbqijys-whqii-iqbui-790[gjxky]
+egdytrixat-rgndvtcxr-rpcsn-jhtg-ithixcv-115[trcgi]
+fab-eqodqf-rxaiqd-mzmxkeue-404[eqadf]
+zotts-xsy-guleyncha-708[ymnbi]
+mbiyqoxsm-pvygob-gybucryz-536[zbyxv]
+dmybmsuzs-bxmefuo-sdmee-pqhqxabyqzf-716[mbeqs]
+qspkfdujmf-ezf-fohjoffsjoh-519[fjohs]
+nwlddtqtpo-prr-xlcvpetyr-249[owkmz]
+amlqskcp-epybc-aylbw-amyrgle-bctcjmnkclr-808[clabm]
+qspkfdujmf-qmbtujd-hsbtt-eftjho-727[tigys]
+pualyuhapvuhs-thnulapj-msvdly-ylzlhyjo-877[lhuya]
+diozmivodjivg-zbb-nzmqdxzn-629[zdibm]
+yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-qerekiqirx-126[erixk]
+qlm-pbzobq-zxkav-zlxqfkd-zrpqljbo-pbosfzb-575[phqza]
+irgyyolokj-lruckx-aykx-zkyzotm-904[ubkvy]
+cebwrpgvyr-pnaql-pbngvat-bcrengvbaf-793[bagnp]
+wlsiayhcw-wifilzof-wuhxs-mylpcwym-630[wilyc]
+nglmtuex-ktuubm-nlxk-mxlmbgz-215[egtsz]
+sbejpbdujwf-dboez-nbobhfnfou-883[jpkmo]
+qzoggwtwsr-qobrm-gsfjwqsg-480[xkwvm]
+nwzekwypera-oywrajcan-dqjp-wymqeoepekj-472[zeydw]
+sawlkjevaz-ywjzu-yqopkian-oanreya-836[ayejk]
+pybgmyargtc-afmamjyrc-rpyglgle-470[zgmsu]
+nzwzcqfw-qwzhpc-cplnbftdtetzy-977[zctwf]
+lhkhszqx-fqzcd-okzrshb-fqzrr-cdudknoldms-651[defrs]
+ugfkmewj-yjsvw-owshgfarwv-tskcwl-wfyafwwjafy-294[wfajs]
+gpbepvxcv-gpqqxi-stktadebtci-609[npyad]
+pxtihgbsxw-vahvhetmx-hixktmbhgl-397[pvcfe]
+guahyncw-vohhs-fiacmncwm-656[chamn]
+wfruflnsl-uqfxynh-lwfxx-wjfhvznxnynts-463[fnxlw]
+lzfmdshb-cxd-dmfhmddqhmf-703[dmfhb]
+gzefmnxq-eomhqzsqd-tgzf-oazfmuzyqzf-118[zfqme]
+udskkaxawv-usfvq-ugslafy-hmjuzskafy-658[asufk]
+ugjjgkanw-vqw-ksdwk-112[kwgja]
+enqvbnpgvir-cynfgvp-tenff-fuvccvat-975[vfnce]
+fydelmwp-ojp-nfdezxpc-dpcgtnp-353[gziom]
+fmsledevhsyw-gpewwmjmih-glsgspexi-tyvglewmrk-178[egmsw]
+shmml-enoovg-freivprf-585[efmor]
+bnqqnrhud-atmmx-qdrdzqbg-651[qdbmn]
+pxtihgbsxw-vahvhetmx-nlxk-mxlmbgz-943[xhmbg]
+xfbqpojafe-dipdpmbuf-tbmft-441[wuizc]
+zsxyfgqj-uqfxynh-lwfxx-ijxnls-749[futrq]
+oaddaeuhq-nmewqf-dqmocgueufuaz-508[mwlcv]
+buzahisl-zjhclunly-obua-zavyhnl-201[kzylj]
+yhwooebeaz-iwcjapey-oywrajcan-dqjp-zaoecj-524[aejoc]
+bwx-amkzmb-qvbmzvibqwvit-lgm-zmikycqaqbqwv-772[dubva]
+oxmeeuruqp-ngzzk-fqotzaxask-638[zaeko]
+xfbqpojafe-qmbtujd-hsbtt-efwfmpqnfou-363[fbqte]
+iehepwnu-cnwza-xqjju-nayaerejc-472[eajnc]
+ytu-xjhwjy-jll-ijxnls-385[moyjn]
+nvrgfezqvu-treup-tfrkzex-wzeretzex-997[fpvnt]
+kwvacumz-ozilm-moo-camz-bmabqvo-434[sanvt]
+lxaaxbren-ouxfna-bjunb-277[abnxu]
+gpsxdprixkt-uadltg-tcvxcttgxcv-453[txcgd]
+owshgfarwv-jsttal-hmjuzskafy-658[asfhj]
+pbafhzre-tenqr-qlr-ynobengbel-403[ebnrl]
+yaxsnlcrun-mhn-jlzdrbrcrxw-121[wngsc]
+bgmxkgtmbhgte-vtgwr-vhtmbgz-tgterlbl-995[gtbme]
+nvrgfezqvu-avccpsvre-tljkfdvi-jvimztv-269[vcefi]
+apwmeclga-pyzzgr-dglylagle-158[auvsi]
+qczcftiz-pogysh-rsgwub-350[kcdvs]
+qlm-pbzobq-gbiivybxk-abpfdk-211[bikpq]
+crwwv-rkpqxyib-yrkkv-cfkxkzfkd-419[krcfv]
+sbnqbhjoh-cbtlfu-tupsbhf-285[bhfst]
+qlm-pbzobq-avb-bkdfkbbofkd-159[golnc]
+nchhg-jiasmb-lmaqov-902[dpmcw]
+tagzsrsjvgmk-jsttal-umklgewj-kwjnauw-944[fsqml]
+rkpqxyib-yxphbq-jxkxdbjbkq-601[npbtf]
+ujqgywfau-tmffq-hmjuzskafy-736[zmnlk]
+ujqgywfau-hdsklau-yjskk-umklgewj-kwjnauw-190[kujwa]
+uqtqbizg-ozilm-jcvvg-lmxizbumvb-850[mhanw]
+yhtwhnpun-ihzrla-klclsvwtlua-591[lkqzn]
+sbqiiyvyut-sqdto-seqjydw-sedjqydcudj-738[warvn]
+bwx-amkzmb-uqtqbizg-ozilm-moo-kwvbiqvumvb-746[wystg]
+tipfxvezt-vxx-cfxzjkztj-555[xtzfj]
+cjpibabsepvt-cvooz-sftfbsdi-571[myqsb]
+ymszqfuo-fab-eqodqf-pkq-xmnadmfadk-274[tkbds]
+wlqqp-treup-tfrkzex-jkfirxv-581[refkp]
+lnkfaypeha-fahhuxawj-wjwhuoeo-550[ahwef]
+lsyrkjkbnyec-oqq-ckvoc-874[azsyv]
+gvcskirmg-fewoix-wlmttmrk-360[mgikr]
+irdgrxzex-tipfxvezt-treup-tfrkzex-cfxzjkztj-607[txzer]
+avw-zljyla-zjhclunly-obua-yljlpcpun-617[lajuy]
+nwzekwypera-lhwopey-cnwoo-hkceopeyo-134[zulqp]
+vkppo-sqdto-seqjydw-jhqydydw-114[dqyjo]
+zixppfcfba-zxkav-zlkqxfkjbkq-679[txhzn]
+sbnqbhjoh-dboez-sftfbsdi-623[bsdfh]
+qjopwxha-bhksan-zalhkuiajp-316[ahjkp]
+yhtwhnpun-thnulapj-ibuuf-klzpnu-773[unhpl]
+uwtojhynqj-kqtbjw-wjfhvznxnynts-827[ntyqj]
+jef-iushuj-rkddo-ijehqwu-504[biekf]
+gspsvjyp-tpewxmg-kveww-gywxsqiv-wivzmgi-672[sryce]
+rgllk-eomhqzsqd-tgzf-etubbuzs-118[zbegl]
+shmml-pubpbyngr-ynobengbel-403[bnegl]
+gsrwyqiv-kvehi-fewoix-wivzmgiw-256[rimyz]
+iuxxuyobk-yigbktmkx-natz-xkykgxin-852[kxiyb]
+excdklvo-oqq-vklybkdybi-744[utifh]
+ojk-nzxmzo-agjrzm-xpnojhzm-nzmqdxz-915[zmjno]
+qspkfdujmf-sbccju-eftjho-103[byjhc]
+fodvvlilhg-mhoobehdq-whfkqrorjb-699[taskb]
+aflwjfslagfsd-usfvq-ogjckzgh-814[emsnh]
+sebehvkb-uww-tulubefcudj-712[ubewc]
+egdytrixat-gpbepvxcv-hrpktcvtg-wjci-hidgpvt-531[vzdcg]
+nsyjwsfyntsfq-zsxyfgqj-gzssd-wjxjfwhm-749[sgmhv]
+ktfitzbgz-yehpxk-kxvxbobgz-761[ryzea]
+tcrjjzwzvu-irsszk-rthlzjzkzfe-503[ocepg]
+dfcxsqhwzs-pibbm-sbuwbssfwbu-558[tocys]
+nwzekwypera-bhksan-odellejc-758[eakln]
+qfmcusbwq-qobrm-qcohwbu-fsoqeiwgwhwcb-402[cpzsy]
+cvabijtm-zijjqb-uizsmbqvo-434[btzma]
+irdgrxzex-srjbvk-glityrjzex-867[rxegi]
+rdadguja-tvv-gtrtxkxcv-609[tvadg]
+wdjcvuvmyjpn-zbb-mznzvmxc-213[ndmaz]
+vagreangvbany-sybjre-nanylfvf-507[bryme]
+vjpwncrl-mhn-bqryyrwp-979[rnpwy]
+jqwpihizlwca-ntwemz-abwziom-642[iyzsa]
+jchipqat-rwdrdapit-detgpixdch-921[dipta]
+vqr-ugetgv-tcddkv-eqpvckpogpv-440[vgpcd]
+ajyqqgdgcb-aylbw-amyrgle-qyjcq-756[qyagb]
+fbebmtkr-zktwx-utldxm-nlxk-mxlmbgz-553[onbvf]
+hwdtljsnh-kqtbjw-ijajqturjsy-827[jthqs]
+sedikcuh-whqtu-sxesebqju-udwyduuhydw-556[rvudf]
+ipvohghykvbz-tpspahyf-nyhkl-yhiipa-huhsfzpz-123[hpyiz]
+fubrjhqlf-mhoobehdq-oderudwrub-153[bdhor]
+mbggf-zjhclunly-obua-dvyrzovw-695[bglou]
+houngfgxjuay-igtje-aykx-zkyzotm-176[qcita]
+lugjuacha-mwupyhayl-bohn-xyjulngyhn-318[gnftc]
+rdggdhxkt-rpcsn-rdpixcv-itrwcdadvn-505[uancd]
+yaxsnlcrun-ouxfna-jwjuhbrb-199[xnmwj]
+yrwxefpi-tpewxmg-kveww-wlmttmrk-334[rfqkl]
+ktwbhtvmbox-unggr-kxtvjnblbmbhg-215[bgthk]
+amlqskcp-epybc-bwc-pcyaosgqgrgml-600[cgpab]
+ujqgywfau-usfvq-ugslafy-jwuwanafy-606[uafwy]
+nwzekwypera-lhwopey-cnwoo-lqnydwoejc-134[xithv]
+nwzekwypera-acc-naoawnyd-160[itvch]
+luxciuwncpy-ohmnuvfy-yaa-wihnuchgyhn-526[hnuyc]
+ygcrqpkbgf-ejqeqncvg-tgegkxkpi-674[gekqc]
+mtzslklcozfd-qwzhpc-nfdezxpc-dpcgtnp-223[ucwob]
+tinnm-tzcksf-zcuwghwqg-948[nmktj]
+rdchjbtg-vgpst-hrpktcvtg-wjci-itrwcdadvn-453[ngtzh]
+yrwxefpi-nippcfier-hizipstqirx-932[ipref]
+cvabijtm-xtiabqk-oziaa-kcabwumz-amzdqkm-590[mpqzo]
+dpmpsgvm-dipdpmbuf-efqmpznfou-259[pmdfu]
+ynukcajey-nwxxep-zarahkliajp-238[ytaej]
+zbytomdsvo-mkxni-mykdsxq-nocsqx-770[mosxd]
+tagzsrsjvgmk-xdgowj-jwuwanafy-814[efhpk]
+xqvwdeoh-fdqgb-rshudwlrqv-127[jpkat]
+kpvgtpcvkqpcn-fag-qrgtcvkqpu-596[pcgkq]
+zlkprjbo-doxab-gbiivybxk-obpbxoze-393[boxik]
+zbytomdsvo-mrymyvkdo-domrxyvyqi-744[ymodv]
+jvuzbtly-nyhkl-qlssfilhu-klwhyatlua-695[lhuya]
+nzydfxpc-rclop-nsznzwlep-xlylrpxpye-145[plnxy]
+atyzghrk-xghhoz-rghuxgzuxe-748[ghxzr]
+vhglnfxk-zktwx-ietlmbv-zktll-ftkdxmbgz-787[wbspa]
+njmjubsz-hsbef-dipdpmbuf-vtfs-uftujoh-623[fubjs]
+pyknyegle-aylbw-jmegqrgaq-756[egyal]
+bgmxkgtmbhgte-lvtoxgzxk-angm-vhgmtbgfxgm-137[gmtxb]
+ydjuhdqjyedqb-vbemuh-jusxdebewo-946[debju]
+jxdkbqfz-zxkav-zlxqfkd-mrozexpfkd-263[kxzdf]
+nbhofujd-dipdpmbuf-pqfsbujpot-597[pbdfu]
+wrs-vhfuhw-fdqgb-vklsslqj-647[sfhlq]
+vkrhzxgbv-vtgwr-ehzblmbvl-449[knuzb]
+gsrwyqiv-kvehi-fyrrc-pefsvexsvc-750[versc]
+hqcfqwydw-vbemuh-ixyffydw-270[fwydh]
+vetllbybxw-vkrhzxgbv-lvtoxgzxk-angm-ybgtgvbgz-527[jxrwq]
+bkzrrhehdc-eknvdq-cdrhfm-365[dhrce]
+cybyjqho-whqtu-rkddo-qsgkyiyjyed-530[ydqhj]
+ckgvutofkj-hatte-ynovvotm-332[tovka]
+sawlkjevaz-zua-iwngapejc-758[jzwql]
+mvhkvbdib-kgvnodx-bmvnn-gjbdnodxn-551[bmkyo]
+enzcntvat-fpniratre-uhag-grpuabybtl-689[sqkoh]
+bqvvu-acc-oanreyao-108[acovb]
+tyepcyletzylw-nlyoj-nzletyr-nfdezxpc-dpcgtnp-275[yelnp]
+fbebmtkr-zktwx-lvtoxgzxk-angm-kxlxtkva-839[kxtab]
+ojk-nzxmzo-wvnfzo-vivgtndn-707[mlndw]
+tpspahyf-nyhkl-qlssfilhu-klwsvftlua-487[iewds]
+shoewudys-isqludwuh-xkdj-husuylydw-868[tlyhz]
+qzoggwtwsr-qobrm-oqeiwgwhwcb-116[wgoqb]
+zlkprjbo-doxab-yxphbq-pxibp-237[ocanz]
+iruzfrtkzmv-avccpsvre-vexzevvizex-893[nyktl]
+hqtyeqsjylu-hqrryj-tulubefcudj-894[ujqye]
+zlkprjbo-doxab-fkqbokxqflkxi-mixpqfz-doxpp-xznrfpfqflk-523[fxkpo]
+dpmpsgvm-sbccju-dvtupnfs-tfswjdf-129[neysa]
+qcbgiasf-ufors-dzoghwq-ufogg-zopcfohcfm-246[yhmkz]
+esyfwlau-ugjjgkanw-usfvq-kzahhafy-242[wnzhb]
+mbiyqoxsm-lkcuod-nozkbdwoxd-432[odbkm]
+usfvq-ugslafy-vwhdgqewfl-632[fglqs]
+gokzyxsjon-zvkcdsm-qbkcc-oxqsxoobsxq-484[xrkfl]
+hdgdovmt-bmvyz-wvnfzo-gjbdnodxn-395[bwicg]
+sehheiylu-fhezusjybu-rkddo-udwyduuhydw-530[udhye]
+glrcplyrgmlyj-aylbw-amyrgle-nspafyqgle-210[dmuny]
+aflwjfslagfsd-jsttal-xafsfuafy-138[faslj]
+yuxufmdk-sdmpq-iqmbazulqp-otaoaxmfq-pqbxakyqzf-586[qamfp]
+jef-iushuj-sxesebqju-ixyffydw-270[iztnj]
+zvyvgnel-tenqr-enzcntvat-ohaal-ratvarrevat-793[atven]
+yuxufmdk-sdmpq-vqxxknqmz-ogefayqd-eqdhuoq-612[qdmux]
+yhtwhnpun-kfl-ylhjxbpzpapvu-357[phlnu]
+egdytrixat-qjccn-bpcpvtbtci-557[mtpgc]
+wsvsdkbi-qbkno-mkxni-mykdsxq-ecob-docdsxq-120[dksbo]
+xtwtelcj-rclop-ojp-dstaatyr-873[omnal]
+wifilzof-jfumncw-alumm-xypyfijgyhn-318[evfso]
+mvydjvxodqz-agjrzm-hvivbzhzio-655[vzdhi]
+jsehsyafy-usfvq-ugslafy-jwuwanafy-840[afsyu]
+myxcewob-qbkno-nio-bocokbmr-900[obckm]
+ipvohghykvbz-wshzapj-nyhzz-vwlyhapvuz-539[hzvpy]
+tbxmlkfwba-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-185[bkopz]
+rdadguja-eaphixr-vgphh-itrwcdadvn-869[nfpxs]
+lugjuacha-jfumncw-alumm-zchuhwcha-734[uachm]
+jsehsyafy-jsttal-jwsuimakalagf-762[mnvlh]
+zixppfcfba-yrkkv-absbilmjbkq-393[ihgyz]
+bxaxipgn-vgpst-rdchjbtg-vgpst-rpcsn-rdpixcv-hpath-817[pgtch]
+rtqlgevkng-ejqeqncvg-hkpcpekpi-154[xpgty]
+laffe-hgyqkz-xkikobotm-488[kfoab]
+jfifqxov-doxab-zxkav-zlxqfkd-qoxfkfkd-419[ubaro]
+myxcewob-qbkno-cmkfoxqob-rexd-zebmrkcsxq-952[boxce]
+apuut-wvnfzo-rjmfncjk-447[fjnua]
+lejkrscv-tfcfiwlc-avccpsvre-fgvirkzfej-113[cfver]
+nglmtuex-cxeeruxtg-kxvxbobgz-215[xegbt]
+sgmtkzoi-kmm-xkgiwaoyozout-748[qrkst]
+amppmqgtc-djmucp-rcaflmjmew-912[bcvna]
+xst-wigvix-fyrrc-wepiw-438[ygref]
+dzczkrip-xiruv-jtrmvexvi-ylek-fgvirkzfej-295[irvek]
+diozmivodjivg-xviyt-xjvodib-zibdizzmdib-265[zmrey]
+rgndvtcxr-ytaanqtpc-stepgibtci-661[tcagi]
+xgsvgmotm-hgyqkz-jkyomt-358[ajyhb]
+zloolpfsb-yxphbq-ixyloxqlov-393[loxbp]
+zilqwikbqdm-jiasmb-uizsmbqvo-668[ibmqs]
+rtqlgevkng-rncuvke-itcuu-ucngu-206[ucgne]
+dmybmsuzs-yuxufmdk-sdmpq-eomhqzsqd-tgzf-iadwetab-482[nkqyl]
+vetllbybxw-ktuubm-hixktmbhgl-345[ikqop]
+bwx-amkzmb-jcvvg-ikycqaqbqwv-954[symcn]
+ubhatstkwhnl-ynssr-lvtoxgzxk-angm-kxlxtkva-163[ktxal]
+zlilocri-yxphbq-pefmmfkd-471[filmp]
+yflexwxoalrp-zlkprjbo-doxab-zxkav-zlxqfkd-qoxfkfkd-419[xkflo]
+oxaflxzqfsb-zelzlixqb-xznrfpfqflk-393[flxzq]
+ixccb-vfdyhqjhu-kxqw-ghyhorsphqw-101[pzgst]
+pybgmyargtc-qaytclecp-fslr-sqcp-rcqrgle-860[crglp]
+zbytomdsvo-mkxni-kmaescsdsyx-562[smdko]
+hwbba-dwppa-ocpcigogpv-570[pabcg]
+eza-dpncpe-nlyoj-nzletyr-wlmzclezcj-171[elzcn]
+tbxmlkfwba-mixpqfz-doxpp-zlkqxfkjbkq-159[kxbfp]
+vetllbybxw-yehpxk-ehzblmbvl-657[blehv]
+zuv-ykixkz-jek-lotgtiotm-852[ktioz]
+fnjyxwrinm-mhn-mnyjacvnwc-277[zgpnw]
+odiih-ljwmh-lxjcrwp-mnenuxyvnwc-615[nwchi]
+wfummczcyx-wuhxs-qilembij-838[mciuw]
+sno-rdbqds-bgnbnkzsd-bnmszhmldms-859[sbdnm]
+nvrgfezqvu-gcrjkzt-xirjj-ivjvrity-555[ylfxv]
+encuukhkgf-uecxgpigt-jwpv-ujkrrkpi-622[kugpc]
+lnkfaypeha-xqjju-qoan-paopejc-446[ajpen]
+kmjezxodgz-ytz-gvwjmvojmt-109[jmzgo]
+ygcrqpkbgf-hnqygt-octmgvkpi-128[gckpq]
+jxdkbqfz-mixpqfz-doxpp-tlohpelm-107[pxdfl]
+xjgjmapg-xviyt-xjvodib-adivixdib-759[ixdjv]
+laffe-jek-sgtgmksktz-644[vuenb]
+pbafhzre-tenqr-enoovg-ratvarrevat-975[ymshj]
+lqwhuqdwlrqdo-vfdyhqjhu-kxqw-uhvhdufk-959[kzlvy]
+rflsjynh-jll-zxjw-yjxynsl-697[jlyns]
+wrs-vhfuhw-sodvwlf-judvv-ghvljq-361[vhwdf]
+ynssr-unggr-tvjnblbmbhg-163[bgnrs]
+jyfvnlupj-jvsvymbs-yhiipa-zopwwpun-903[nrdma]
+kzeed-hfsid-uzwhmfxnsl-515[uoyvx]
+ide-htrgti-uadltg-gtprfjxhxixdc-375[tdgix]
+sorozgxe-mxgjk-hatte-vaxingyotm-358[fwxei]
+ydjuhdqjyedqb-fbqijys-whqii-jusxdebewo-582[nuzsj]
+yknnkoera-xwogap-paydjkhkcu-498[kanop]
+nzydfxpc-rclop-upwwjmply-opdtry-691[pycdl]
+dlhwvupglk-jhukf-jvhapun-zlycpjlz-409[lhjpu]
+kwvacumz-ozilm-moo-bmkpvwtwog-694[mowkv]
+kmjezxodgz-wpiit-mzxzdqdib-863[anvbu]
+xlrypetn-nsznzwlep-xlylrpxpye-587[znfwt]
+pybgmyargtc-qaytclecp-fslr-umpiqfmn-600[nzvej]
+etyyx-qzaahs-lzqjdshmf-781[ahqsy]
+ovbunmneqbhf-wryylorna-znantrzrag-221[pnazx]
+gzefmnxq-bxmefuo-sdmee-ymzmsqyqzf-352[lgvpu]
+ixeumktoi-jek-jkbkruvsktz-488[mzeun]
+dzczkrip-xiruv-avccpsvre-glityrjzex-321[eflmp]
+wfruflnsl-hfsid-fhvznxnynts-307[fnshl]
+vkppo-rkddo-iqbui-218[dikop]
+muqfedyput-zubboruqd-mehaixef-452[inbaj]
+ftzgxmbv-cxeeruxtg-nlxk-mxlmbgz-683[xgmbe]
+htsxzrjw-lwfij-uqfxynh-lwfxx-hzxytrjw-xjwanhj-827[xjwhf]
+qekrixmg-wgezirkiv-lyrx-tyvglewmrk-282[regik]
+ktiaaqnqml-jiasmb-apqxxqvo-226[asvyf]
+lejkrscv-irdgrxzex-srjbvk-kvtyefcfxp-165[rekvx]
+hvbizodx-nxvqzibzm-cpio-hvmfzodib-291[izbov]
+ltpedcxots-tvv-rjhidbtg-htgkxrt-297[tdghr]
+dlhwvupglk-mbggf-jovjvshal-zlycpjlz-565[lgjvh]
+xfbqpojafe-tdbwfohfs-ivou-sfbdrvjtjujpo-779[fjobd]
+kmjezxodgz-xviyt-gvwjmvojmt-577[flhas]
+jshzzpmplk-jhukf-jvhapun-vwlyhapvuz-669[hpjuv]
+tfejldvi-xiruv-gcrjkzt-xirjj-drerxvdvek-295[dpsef]
+zotts-yaa-lymyulwb-968[skymd]
+rmn-qcapcr-zyqicr-umpiqfmn-704[cmqri]
+xfbqpojafe-cbtlfu-qvsdibtjoh-727[bfjoq]
+ykhknbqh-nwxxep-oanreyao-732[naehk]
+raphhxuxts-hrpktcvtg-wjci-hidgpvt-921[hmzng]
+yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-hizipstqirx-932[mdsza]
+xjgjmapg-xviyt-vivgtndn-603[utnks]
+cxy-bnlanc-mhn-vjwjpnvnwc-745[mtsvn]
+ujoon-gpbepvxcv-eaphixr-vgphh-uxcpcrxcv-687[pcvxh]
+ykjoqian-cnwza-iwcjapey-lhwopey-cnwoo-opknwca-264[owacn]
+lnkfaypeha-oywrajcan-dqjp-zalwnpiajp-108[apjnl]
+ktwbhtvmbox-yehpxk-mktbgbgz-293[cndif]
+hqcfqwydw-cqwdujys-rqiauj-qsgkyiyjyed-738[qydjw]
+amlqskcp-epybc-zyqicr-kylyeckclr-600[sdrzj]
+bnmrtldq-fqzcd-rbzudmfdq-gtms-zbpthrhshnm-443[dmbhq]
+nwlddtqtpo-nlyoj-nzletyr-epnsyzwzrj-379[tyrzv]
+cvabijtm-kpwkwtibm-lmxtwgumvb-980[mbtwi]
+amlqskcp-epybc-afmamjyrc-jyzmpyrmpw-574[mpyac]
+aflwjfslagfsd-vqw-dstgjslgjq-424[sfgjl]
+willimcpy-zfiqyl-xymcah-110[ilycm]
+kpvgtpcvkqpcn-lgnnadgcp-ujkrrkpi-128[knmqz]
+wyvqljapsl-buzahisl-ibuuf-lunpullypun-409[wyhza]
+amlqskcp-epybc-pyzzgr-pcacgtgle-210[cpgae]
+xtwtelcj-rclop-mldvpe-dstaatyr-821[nkabu]
+pdjqhwlf-gbh-sxufkdvlqj-751[cdmbz]
+wkqxodsm-zvkcdsm-qbkcc-ecob-docdsxq-432[cdkoq]
+xjmmjndqz-wpiit-gjbdnodxn-811[djnim]
+zlkprjbo-doxab-zelzlixqb-absbilmjbkq-939[blzai]
+htqtwkzq-xhfajsljw-mzsy-ywfnsnsl-619[lfsnu]
+zhdsrqlchg-mhoobehdq-xvhu-whvwlqj-361[hqdlo]
+tcfkqcevkxg-tcorcikpi-ejqeqncvg-uvqtcig-544[lsyzm]
+kwtwznct-kivlg-zmamizkp-824[ixjen]
+bkzrrhehdc-qzaahs-rghoohmf-287[hraoz]
+lxuxaodu-mhn-cajrwrwp-303[aruwx]
+tcorcikpi-dcumgv-octmgvkpi-700[vygzd]
+crwwv-zlkprjbo-doxab-yxphbq-bkdfkbbofkd-809[bkdof]
+xgvnndadzy-xcjxjgvoz-ncdkkdib-447[dnxcg]
+elrkdcdugrxv-fkrfrodwh-xvhu-whvwlqj-179[eubfs]
+odkasqzuo-rxaiqd-eqdhuoqe-430[nlyts]
+vhglnfxk-zktwx-xzz-xgzbgxxkbgz-917[xzgkb]
+jyfvnlupj-wyvqljapsl-jovjvshal-zlycpjlz-357[jlvpy]
+gpbepvxcv-eaphixr-vgphh-gtrtxkxcv-687[pvxgh]
+jrncbavmrq-zntargvp-qlr-qrirybczrag-741[dnzpg]
+hqfxxnknji-hfsid-knsfshnsl-307[wtfhe]
+aietsrmdih-nippcfier-stivexmsrw-750[iersm]
+glrcplyrgmlyj-pyzzgr-pcqcypaf-912[nkoyv]
+ugfkmewj-yjsvw-hdsklau-yjskk-sfsdqkak-216[ksjad]
+mhi-lxvkxm-vtgwr-kxtvjnblbmbhg-917[bmvxg]
+tipfxvezt-irsszk-kvtyefcfxp-451[fteik]
+jxdkbqfz-mixpqfz-doxpp-qoxfkfkd-939[fxdkp]
+dsxxw-pyzzgr-qrmpyec-288[prxyz]
+ejpanjwpekjwh-fahhuxawj-ajcejaanejc-394[jaehw]
+pinovwgz-xgvnndadzy-xviyt-vxlpdndodji-109[dnvix]
+szfyrqriuflj-upv-rercpjzj-243[jprqg]
+dmbttjgjfe-gmpxfs-efqbsunfou-701[fbegj]
+sgmtkzoi-inuiurgzk-ykxboiky-436[qlcfs]
+slqryzjc-djmucp-ylyjwqgq-158[jqycl]
+aflwjfslagfsd-vqw-hmjuzskafy-398[fasjl]
+slqryzjc-djmucp-pcacgtgle-886[cgjlp]
+qjopwxha-ywjzu-ajcejaanejc-420[zoehr]
+amjmpdsj-njyqrga-epyqq-kylyeckclr-756[yksln]
+zlkprjbo-doxab-zxkav-zlxqfkd-abpfdk-445[kabdx]
+lhkhszqx-fqzcd-bgnbnkzsd-nodqzshnmr-989[nzdhq]
+dlhwvupglk-ibuuf-klwhyatlua-591[dzktb]
+dpotvnfs-hsbef-cbtlfu-ufdiopmphz-623[homsd]
+ajvyjprwp-npp-mnbrpw-875[pjnrw]
+lxwbdvna-pajmn-snuuhknjw-mnyuxhvnwc-251[nuwah]
+vetllbybxw-lvtoxgzxk-angm-xgzbgxxkbgz-865[mknli]
+aflwjfslagfsd-jsehsyafy-usfvq-vwkayf-268[fsayj]
+xjgjmapg-agjrzm-gvwjmvojmt-291[jgmav]
+plolwdub-judgh-iorzhu-dqdobvlv-465[dloub]
+htqtwkzq-wfggny-fsfqdxnx-645[wsznf]
+fkqbokxqflkxi-zxkav-zlxqfkd-jxohbqfkd-341[kxfqb]
+oxjmxdfkd-avb-tlohpelm-653[dlmox]
+xtwtelcj-rclop-nsznzwlep-epnsyzwzrj-873[zelnp]
+rtqlgevkng-gii-ceswkukvkqp-466[kgeiq]
+molgbzqfib-yrkkv-ixyloxqlov-237[lobik]
+zbytomdsvo-mrymyvkdo-nocsqx-848[pahef]
+szfyrqriuflj-treup-tfrkzex-ivtvzmzex-867[xejut]
+upq-tfdsfu-kfmmzcfbo-mphjtujdt-909[fmtud]
+ykhknbqh-lhwopey-cnwoo-bejwjyejc-342[hwxgn]
+qfkkj-nsznzwlep-nzyeltyxpye-327[vkmwy]
+excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[cvoiz]
+dszphfojd-dboez-dpbujoh-xpsltipq-623[zbxem]
+udpsdjlqj-iorzhu-ghsorbphqw-517[hdjop]
+xcitgcpixdcpa-ide-htrgti-gpqqxi-gthtpgrw-609[gitpc]
+cybyjqho-whqtu-uww-tuiywd-348[styfx]
+yuxufmdk-sdmpq-nmewqf-oazfmuzyqzf-924[hfsly]
+tfejldvi-xiruv-avccpsvre-crsfirkfip-997[rxygp]
+wsvsdkbi-qbkno-oqq-wkxkqowoxd-822[koqwb]
+qcbgiasf-ufors-tzcksf-sbuwbssfwbu-610[ivjsc]
+vkrhzxgbv-wrx-lmhktzx-839[xhkrv]
+xmrrq-bwddqtwsf-vwnwdghewfl-242[fpmoq]
+kmjezxodgz-nxvqzibzm-cpio-gjbdnodxn-577[isocd]
+iutyaskx-mxgjk-kmm-jkyomt-436[kmjtx]
+ide-htrgti-snt-rjhidbtg-htgkxrt-531[tghir]
+vkppo-uww-bqrehqjeho-764[xmntl]
+bdavqofuxq-pkq-ymzmsqyqzf-196[qfmyz]
+diozmivodjivg-hvbizodx-zbb-ozxcijgjbt-915[zueag]
+cybyjqho-whqtu-hqrryj-bqrehqjeho-374[hqjry]
+vcibutulxiom-vohhs-lywycpcha-630[owyks]
+chnylhuncihuf-wuhxs-fiacmncwm-786[chnuf]
+xekdwvwnzkqo-ywjzu-ykwpejc-wymqeoepekj-264[dmbln]
+etyyx-cxd-vnqjrgno-391[hntfq]
+pwcvonofrcig-dfcxsqhwzs-qobrm-qighcasf-gsfjwqs-194[scfqg]
+xgvnndadzy-ezggtwzvi-nojmvbz-837[vnsth]
+dszphfojd-qmbtujd-hsbtt-usbjojoh-467[rskch]
+npmhcargjc-aylbw-amyrgle-yaosgqgrgml-886[galmr]
+qczcftiz-gqojsbusf-vibh-twbobqwbu-350[bnsiu]
+kwvacumz-ozilm-kzgwomvqk-xtiabqk-oziaa-twoqabqka-980[akoqz]
+dsxxw-zyqicr-cleglccpgle-418[clegx]
+jrncbavmrq-cynfgvp-tenff-ynobengbel-611[nbefc]
+hqtyeqsjylu-fbqijys-whqii-tuiywd-322[mitks]
+rnqnyfwd-lwfij-wfggny-xmnuunsl-697[tseia]
+fhezusjybu-rqiauj-udwyduuhydw-868[ngyzs]
+pkl-oaynap-ywjzu-ykwpejc-opknwca-628[pakwy]
+nuatmlmdpage-vqxxknqmz-geqd-fqefuzs-508[romxa]
+awzwhofm-ufors-qobrm-qcohwbu-hsqvbczcum-948[obchm]
+dfcxsqhwzs-rms-fsgsofqv-766[sfqcd]
+wlqqp-tyftfcrkv-rercpjzj-711[rcfjp]
+clotzlnetgp-awldetn-rcldd-nzyeltyxpye-743[letdn]
+lgh-kwujwl-hdsklau-yjskk-vwhsjlewfl-788[lkwhj]
+uqtqbizg-ozilm-kivlg-kwibqvo-uizsmbqvo-512[iqbov]
+vetllbybxw-lvtoxgzxk-angm-kxlxtkva-683[xlktv]
+qyujihctyx-mwupyhayl-bohn-uwkocmcncih-760[chyui]
+crwwv-zxkav-obzbfsfkd-237[bfkvw]
+qczcftiz-pogysh-igsf-hsghwbu-610[tnjwm]
+udpsdjlqj-gbh-hqjlqhhulqj-725[hjqld]
+yuxufmdk-sdmpq-nmewqf-emxqe-326[meqdf]
+molgbzqfib-ciltbo-ildfpqfzp-653[bfilo]
+uwtojhynqj-gfxpjy-ywfnsnsl-151[jnyfs]
+qvbmzvibqwvit-jiasmb-camz-bmabqvo-330[bmvai]
+xmtjbzidx-xviyt-xjvodib-xpnojhzm-nzmqdxz-603[torgb]
+ykjoqian-cnwza-fahhuxawj-qoan-paopejc-628[ajnoc]
+gvcskirmg-veffmx-irkmriivmrk-906[imrkv]
+njmjubsz-hsbef-dboez-dpbujoh-bdrvjtjujpo-649[astyb]
+ovbunmneqbhf-pnaql-pbngvat-jbexfubc-845[yzqwm]
+joufsobujpobm-kfmmzcfbo-usbjojoh-571[mkpnw]
+lzfmdshb-cxd-lzmzfdldms-287[dlmzf]
+froruixo-mhoobehdq-pdunhwlqj-439[ohdqr]
+xcitgcpixdcpa-rpcsn-rdpixcv-bpcpvtbtci-193[cpitx]
+dfcxsqhwzs-ksodcbwnsr-xszzmpsob-rsgwub-168[sbwzc]
+iuruxlar-lruckx-sgtgmksktz-436[krugl]
+nbhofujd-dboez-fohjoffsjoh-467[ofhjb]
+pejji-tovvilokx-nozvyiwoxd-276[bzkve]
+bxaxipgn-vgpst-rpcsn-rdpixcv-rjhidbtg-htgkxrt-583[upjyv]
+bkzrrhehdc-bzmcx-bnzshmf-lzqjdshmf-443[hzbmc]
+dpssptjwf-gmpxfs-mphjtujdt-571[pjstd]
+pdjqhwlf-sodvwlf-judvv-orjlvwlfv-829[tuszv]
+mfklstdw-tmffq-wfyafwwjafy-918[wmvan]
+joufsobujpobm-ezf-gjobodjoh-779[xwadm]
+hafgnoyr-gbc-frperg-rtt-grpuabybtl-481[jcgnd]
+joufsobujpobm-fhh-tijqqjoh-233[johbf]
+zuv-ykixkz-vrgyzoi-mxgyy-yzuxgmk-150[yzgkx]
+ibghopzs-qvcqczohs-qighcasf-gsfjwqs-948[ubrmn]
+qfmcusbwq-pwcvonofrcig-foppwh-fsgsofqv-584[focpq]
+aczupnetwp-awldetn-rcldd-qtylyntyr-119[tdlny]
+dpssptjwf-ezf-sfdfjwjoh-909[znfwy]
+qxdwpopgsdjh-ytaanqtpc-pcpanhxh-297[pahcd]
+ucynmlgxcb-aylbw-rpyglgle-626[lgybc]
+oqnidbshkd-okzrshb-fqzrr-rdquhbdr-573[rdbhq]
+frqvxphu-judgh-fdqgb-vhuylfhv-647[hfuvd]
+vhehkyne-cxeeruxtg-hixktmbhgl-319[ehxgk]
+gsrwyqiv-kvehi-gerhc-gsexmrk-vigimzmrk-412[girek]
+ajmrxjlcren-yujbcrl-pajbb-bnaerlnb-719[lvzpq]
+zixppfcfba-bdd-bkdfkbbofkd-393[hnmcz]
+aflwjfslagfsd-hdsklau-yjskk-ugflsafewfl-918[flsak]
+xtwtelcj-rclop-upwwjmply-nzyeltyxpye-847[lpyet]
+oaddaeuhq-qss-dqmocgueufuaz-924[qzwti]
+tvsnigxmpi-wgezirkiv-lyrx-hitpscqirx-568[irxgp]
+ksodcbwnsr-qczcftiz-gqojsbusf-vibh-igsf-hsghwbu-272[sbcfg]
+sgmtkzoi-jek-gtgreyoy-410[tqkns]
+rzvkjiduzy-kgvnodx-bmvnn-omvdidib-109[fpsxk]
+diozmivodjivg-rzvkjiduzy-zbb-adivixdib-447[nayqm]
+froruixo-vfdyhqjhu-kxqw-rshudwlrqv-517[rhqud]
+dmpuamofuhq-dmnnuf-ymzmsqyqzf-222[mwnak]
+mybbycsfo-zvkcdsm-qbkcc-wkbuodsxq-380[bcksd]
+tcrjjzwzvu-wcfnvi-vexzevvizex-633[vzeci]
+qzoggwtwsr-gqojsbusf-vibh-hsqvbczcum-870[sbgqc]
+enzcntvat-cynfgvp-tenff-phfgbzre-freivpr-845[xnfot]
+gsvvswmzi-gerhc-gsexmrk-stivexmsrw-984[segmr]
+fhezusjybu-vbemuh-iqbui-244[iektm]
+oqnidbshkd-idkkxadzm-qdzbpthrhshnm-469[gekyh]
+pybgmyargtc-cee-nspafyqgle-574[egyac]
+jyddc-gerhc-gsexmrk-vigimzmrk-672[gmrcd]
+tipfxvezt-gcrjkzt-xirjj-rercpjzj-399[ldquc]
+bdavqofuxq-bxmefuo-sdmee-dqeqmdot-768[hwmck]
+fbebmtkr-zktwx-vtgwr-hixktmbhgl-475[tbkgh]
+irgyyolokj-igtje-iugzotm-rumoyzoiy-202[mpijw]
+fbebmtkr-zktwx-xzz-kxlxtkva-865[yicwo]
+tyepcyletzylw-dnlgpyrpc-sfye-nfdezxpc-dpcgtnp-145[badwi]
+vrurcjah-pajmn-ljwmh-anbnjalq-849[ajnhl]
+rtqlgevkng-ecpfa-fgukip-700[gefkp]
+pdjqhwlf-froruixo-udeelw-wudlqlqj-907[kymab]
+tinnm-xszzmpsob-qcbhowbasbh-688[nhcdm]
+nij-mywlyn-wuhxs-lywycpcha-318[ywchl]
+fnjyxwrinm-ouxfna-ldbcxvna-bnaerln-979[naxbf]
+ajvyjprwp-bljenwpna-qdwc-anjlzdrbrcrxw-823[jrwan]
+diozmivodjivg-wpiit-mzxzdqdib-551[kmhon]
+nij-mywlyn-dyffsvyuh-xyjfisgyhn-656[yfnhi]
+fhezusjybu-zubboruqd-vydqdsydw-504[dubyq]
+ubhatstkwhnl-lvtoxgzxk-angm-kxvxbobgz-579[xbgkt]
+xcitgcpixdcpa-rwdrdapit-htgkxrth-557[zastp]
+wfintfhynaj-jll-hzxytrjw-xjwanhj-281[jhnwa]
+irgyyolokj-vrgyzoi-mxgyy-rumoyzoiy-800[sptbo]
+jvyyvzpcl-yhkpvhjapcl-ibuuf-aljouvsvnf-227[vjlpu]
+iruzfrtkzmv-treup-kirzezex-841[rzeik]
+cxy-bnlanc-ljwmh-ujkxajcxah-979[waqkz]
+qzoggwtwsr-foppwh-difqvogwbu-948[wgofp]
+qyujihctyx-dyffsvyuh-zchuhwcha-552[hycuf]
+yknnkoera-lhwopey-cnwoo-pnwejejc-992[enowc]
+zovldbkfz-zxkav-zlxqfkd-xkxivpfp-289[vtcos]
+mrxivrexmsrep-glsgspexi-erepcwmw-750[btrnl]
+udskkaxawv-kusnwfywj-zmfl-dgyaklauk-866[xeozd]
+esyfwlau-tmffq-vwnwdghewfl-632[czoml]
+hjgbwuladw-kusnwfywj-zmfl-esfsywewfl-294[xwfie]
+hwbba-rncuvke-itcuu-ocpcigogpv-232[cubgi]
+vhkkhlbox-vtgwr-xgzbgxxkbgz-631[typnq]
+nvrgfezqvu-szfyrqriuflj-vxx-jkfirxv-139[krijl]
+iuruxlar-zuv-ykixkz-lruckx-xkykgxin-826[kxuir]
+yhwooebeaz-ywjzu-yqopkian-oanreya-966[ynwkb]
+iuxxuyobk-pkrrehkgt-xkgiwaoyozout-176[sjwtp]
+glrcplyrgmlyj-djmucp-qrmpyec-236[clmpr]
+pejji-tovvilokx-bocokbmr-588[obijk]
+hplazytkpo-upwwjmply-dpcgtnpd-119[pdltw]
+nij-mywlyn-xsy-jolwbumcha-136[yjlmn]
+pynffvsvrq-ohaal-fgbentr-923[fanrv]
+lgh-kwujwl-kusnwfywj-zmfl-kwjnauwk-736[wkjlu]
+dszphfojd-sbccju-mbcpsbupsz-727[sbcpd]
+ixeumktoi-lruckx-zkinturume-800[ktsyl]
+fmsledevhsyw-tvsnigxmpi-veffmx-viwievgl-412[veifm]
+mrxivrexmsrep-fyrrc-qevoixmrk-880[wtmdx]
+qmpmxevc-kvehi-wgezirkiv-lyrx-wlmttmrk-620[zyxjd]
+zixppfcfba-oxyyfq-qbzeklildv-289[fbilp]
+nwlddtqtpo-dnlgpyrpc-sfye-wlmzclezcj-431[jefsy]
+tinnm-foppwh-oqeiwgwhwcb-688[fzyjx]
+plolwdub-judgh-fdqgb-ghyhorsphqw-413[hystk]
+bwx-amkzmb-zijjqb-bmkpvwtwog-460[bmwjk]
+qcbgiasf-ufors-pibbm-ghcfous-896[bfscg]
+ktwbhtvmbox-vetllbybxw-cxeeruxtg-tgterlbl-215[tmybs]
+lqwhuqdwlrqdo-mhoobehdq-vwrudjh-387[dhqow]
+lgh-kwujwl-tskcwl-vwhdgqewfl-684[afnbs]
+yuxufmdk-sdmpq-rxaiqd-efadmsq-976[mczye]
+ftzgxmbv-unggr-kxlxtkva-917[ezfmx]
+rmn-qcapcr-aylbw-amyrgle-ylyjwqgq-158[prcqj]
+fhezusjybu-rqiauj-husuylydw-582[uyhjs]
+apuut-xviyt-xjvodib-yzkvmohzio-525[yomvc]
+mybbycsfo-dyz-combod-zvkcdsm-qbkcc-oxqsxoobsxq-848[obcsd]
+yhwooebeaz-lhwopey-cnwoo-zalhkuiajp-706[oaehw]
+bqxnfdmhb-bzmcx-trdq-sdrshmf-469[zdyht]
+dmpuamofuhq-vqxxknqmz-pqbmdfyqzf-924[qmfdp]
+kmjezxodgz-ytz-mzvxlpdndodji-889[gefcn]
+apuut-xviyt-xjvodib-mznzvmxc-369[vximt]
+fodvvlilhg-surmhfwloh-hjj-hqjlqhhulqj-647[hljqf]
+tipfxvezt-srjbvk-tljkfdvi-jvimztv-269[vtijf]
+ikhcxvmbex-xzz-labiibgz-423[qnzsg]
+qzchnzbshud-azrjds-lzmzfdldms-885[xubgy]
+eadalsjq-yjsvw-vqw-esjcwlafy-398[ajswe]
+oxmeeuruqp-bxmefuo-sdmee-etubbuzs-898[stupo]
+frqvxphu-judgh-xqvwdeoh-fdqgb-frdwlqj-zrunvkrs-257[dqrfh]
+ltpedcxots-gpbepvxcv-qphzti-igpxcxcv-349[jzdyi]
+vhkkhlbox-vtgwr-phkdlahi-969[tmszy]
+cvabijtm-jcvvg-lmdmtwxumvb-226[nvfca]
+sedikcuh-whqtu-sqdto-qsgkyiyjyed-790[dqsye]
+gzefmnxq-bdavqofuxq-rxaiqd-ymzmsqyqzf-690[zklij]
+zntargvp-cynfgvp-tenff-qrcyblzrag-351[sqzyh]
+xfbqpojafe-dboez-xpsltipq-857[ehgum]
+uqtqbizg-ozilm-jcvvg-lmaqov-980[xzwsi]
+xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-161[zgjmx]
+muqfedyput-vbemuh-fkhsxqiydw-920[udefh]
+kzeed-gfxpjy-ywfnsnsl-489[xeoyn]
+pynffvsvrq-onfxrg-ynobengbel-741[nfbeg]
+froruixo-iorzhu-rshudwlrqv-647[rouhi]
+amjmpdsj-qaytclecp-fslr-qyjcq-938[cjqal]
+otzkxtgzoutgr-jek-iayzuskx-ykxboik-826[kotxz]
+tpspahyf-nyhkl-jhukf-zavyhnl-279[hyafk]
+pualyuhapvuhs-ihzrla-ylhjxbpzpapvu-929[lbncu]
+odiih-ajkkrc-mnbrpw-355[ikrab]
+votubcmf-gmpxfs-bdrvjtjujpo-363[jbfmo]
+zgmfyxypbmsq-rmn-qcapcr-bwc-pcacgtgle-704[ztspm]
+uqtqbizg-ozilm-nchhg-jiasmb-ivitgaqa-382[snpaf]
+willimcpy-jfumncw-alumm-lyuwkocmcncih-734[cmliu]
+ibghopzs-qvcqczohs-hsqvbczcum-506[chqsz]
+ugjjgkanw-tmffq-vwkayf-216[lfrby]
+pynffvsvrq-pnaql-erprvivat-507[vpraf]
+aczupnetwp-nlyoj-nzletyr-pyrtyppctyr-197[pytnr]
+vkppo-sqdto-seqjydw-bewyijysi-686[sydei]
+dpotvnfs-hsbef-ezf-qvsdibtjoh-337[fsbde]
+wlqqp-avccpsvre-ivtvzmzex-425[vcepq]
+jfifqxov-doxab-gbiivybxk-jxohbqfkd-549[skgzo]
+rgndvtcxr-jchipqat-rpcsn-igpxcxcv-713[cprxg]
+ykhknbqh-xqjju-wymqeoepekj-576[ejkqh]
+pejji-mrymyvkdo-domrxyvyqi-536[ymdij]
+wihmogyl-aluxy-xsy-womnigyl-mylpcwy-786[ylmwg]
+jlidywncfy-zfiqyl-mbcjjcha-162[cjyfi]
+pynffvsvrq-sybjre-grpuabybtl-455[byavk]
+uqtqbizg-ozilm-uiovmbqk-akidmvomz-pcvb-bziqvqvo-694[xywnk]
+lxaaxbren-ouxfna-ydalqjbrwp-225[mibtg]
+joufsobujpobm-kfmmzcfbo-dvtupnfs-tfswjdf-675[ijokq]
+crwwv-gbiivybxk-pqloxdb-913[rtmzn]
+pkl-oaynap-nwxxep-bejwjyejc-576[jfmel]
+wfummczcyx-gcfcnuls-aluxy-wuhxs-wihnuchgyhn-786[giqsn]
+htsxzrjw-lwfij-ojqqdgjfs-ijajqturjsy-229[tjxbs]
+qczcftiz-foppwh-rsgwub-246[exnyt]
+lnkfaypeha-xwogap-naoawnyd-342[zynls]
+thnulapj-zjhclunly-obua-thuhnltlua-201[luhan]
+vkppo-fbqijys-whqii-bqrehqjeho-504[lkosn]
+eqpuwogt-itcfg-ecpfa-qrgtcvkqpu-622[cgpqt]
+odkasqzuo-oazegyqd-sdmpq-otaoaxmfq-efadmsq-222[aoqdm]
+ide-htrgti-bxaxipgn-vgpst-qjccn-pcpanhxh-453[pcghi]
+luxciuwncpy-jfumncw-alumm-xyjulngyhn-552[unclm]
+plolwdub-judgh-hjj-zrunvkrs-777[yfulq]
+pejji-lexxi-oxqsxoobsxq-458[xoeij]
+uzfqdzmfuazmx-pkq-fdmuzuzs-170[npsqv]
+bknsykmdsfo-zvkcdsm-qbkcc-cdybkqo-614[fastx]
+qfkkj-upwwjmply-qtylyntyr-873[yjklp]
+hqcfqwydw-zubboruqd-ijehqwu-218[djvhz]
+kmjezxodgz-pinovwgz-zbb-ncdkkdib-473[vimty]
+bknsykmdsfo-myvybpev-mkxni-mykdsxq-bocokbmr-562[sdwfr]
+eqttqukxg-gii-hkpcpekpi-960[yljdr]
+drxevkzt-wcfnvi-cfxzjkztj-607[twoxz]
+vkppo-rkddo-ijehqwu-504[dkope]
+rgllk-rxaiqd-dqmocgueufuaz-456[mxkzr]
+ktiaaqnqml-moo-xczkpiaqvo-122[aoqik]
+amjmpdsj-njyqrga-epyqq-pcqcypaf-600[pqajy]
+rwcnawjcrxwju-npp-ujkxajcxah-199[jacwx]
+fmsledevhsyw-gspsvjyp-gerhc-gsexmrk-ywiv-xiwxmrk-412[segmr]
+ajmrxjlcren-kdwwh-anbnjalq-745[myzet]
+aoubshwq-tinnm-suu-fsoqeiwgwhwcb-480[wsubh]
+rdggdhxkt-rpcsn-hpath-531[tsamh]
+pbafhzre-tenqr-pnaql-pbngvat-nanylfvf-715[upmid]
+zbytomdsvo-cmkfoxqob-rexd-gybucryz-562[obycd]
+bkwzkqsxq-mkxni-ecob-docdsxq-978[ksmtq]
+oknkvcta-itcfg-ecpfa-ncdqtcvqta-414[lcwjp]
+fydelmwp-clmmte-cpnptgtyr-405[jlgak]
+tcorcikpi-ecpfa-gpikpggtkpi-804[picgk]
+xtwtelcj-rclop-upwwjmply-hzcvdsza-327[clpwj]
+tcfkqcevkxg-ecpfa-eqcvkpi-ncdqtcvqta-752[cqekt]
+etaqigpke-tcddkv-uvqtcig-440[tcdeg]
+raphhxuxts-qxdwpopgsdjh-rpcsn-rdpixcv-sthxvc-843[tvexn]
+atyzghrk-xghhoz-ktmotkkxotm-748[kthog]
+fmsledevhsyw-nippcfier-asvowlst-412[zksal]
+oaxadrgx-eomhqzsqd-tgzf-eqdhuoqe-846[zfylm]
+qcbgiasf-ufors-dzoghwq-ufogg-qcbhowbasbh-194[bgofh]
+qvbmzvibqwvit-bwx-amkzmb-jiasmb-xczkpiaqvo-122[bimva]
+qfkkj-prr-hzcvdsza-639[dqmts]
+jvyyvzpcl-ibuuf-bzly-alzapun-981[mnakf]
+dsxxw-cee-pcacgtgle-626[odsgr]
+buzahisl-zjhclunly-obua-zlycpjlz-617[rsglh]
+gpewwmjmih-tpewxmg-kveww-jmrergmrk-594[mwegr]
+aietsrmdih-hci-stivexmsrw-516[hsvof]
+ujoon-ytaanqtpc-stepgibtci-219[tacin]
+kpvgtpcvkqpcn-fag-ceswkukvkqp-830[cijob]
+etaqigpke-uecxgpigt-jwpv-ocpcigogpv-154[gpcei]
+eqnqthwn-tcddkv-rwtejcukpi-674[tcdek]
+mhi-lxvkxm-ktuubm-nlxk-mxlmbgz-241[mxklb]
+avw-zljyla-wshzapj-nyhzz-ylzlhyjo-149[plqkx]
+xekdwvwnzkqo-nwxxep-odellejc-862[xyzwn]
+pkl-oaynap-bhksan-qoan-paopejc-498[ojduv]
+xjinphzm-bmvyz-xjgjmapg-ezggtwzvi-zibdizzmdib-499[zigmb]
+bdavqofuxq-rxaiqd-bgdotmeuzs-508[clbmv]
+xzwrmkbqtm-jcvvg-ewzsapwx-902[wmvxz]
+dmybmsuzs-rxaiqd-xmnadmfadk-846[dmasx]
+surmhfwloh-exqqb-vwrudjh-127[hqruw]
+gntmfefwitzx-ojqqdgjfs-xytwflj-827[xgtuv]
+tbxmlkfwba-zxkav-zlxqfkd-ildfpqfzp-965[jncig]
+sbnqbhjoh-tdbwfohfs-ivou-qvsdibtjoh-597[rftxz]
+hqcfqwydw-fbqijys-whqii-iqbui-322[iqwbf]
+forwcoqhwjs-xszzmpsob-gvwddwbu-324[ftyzu]
+zlilocri-oxjmxdfkd-ciltbo-pbosfzbp-991[gjars]
+kwzzwaqdm-rmttgjmiv-uizsmbqvo-434[mziqt]
+willimcpy-gcfcnuls-aluxy-mwupyhayl-bohn-yhachyylcha-162[kcimx]
+uqtqbizg-ozilm-kivlg-uizsmbqvo-954[pifvj]
+ugdgjxmd-tskcwl-wfyafwwjafy-762[wfadg]
+ajyqqgdgcb-bwc-qyjcq-262[qcbgj]
+yknnkoera-oywrajcan-dqjp-wjwhuoeo-602[oajnw]
+bqxnfdmhb-qzaahs-rzkdr-963[abdhq]
+dwbcjkun-mhn-jwjuhbrb-693[niusd]
+wlqqp-wcfnvi-crsfirkfip-373[nrtqs]
+guahyncw-wbiwifuny-xymcah-240[wyach]
+qfkkj-prr-opgpwzaxpye-613[pkrae]
+cqwdujys-tou-tufbeocudj-322[ucdjo]
+wfruflnsl-wfggny-ijuqtdrjsy-931[wjznm]
+bnqqnrhud-okzrshb-fqzrr-cdrhfm-105[rhqbd]
+yhtwhnpun-tpspahyf-nyhkl-jovjvshal-zlycpjlz-487[hlpyj]
+iutyaskx-mxgjk-hatte-lotgtiotm-176[shzku]
+gntmfefwitzx-kqtbjw-xfqjx-645[nmfsa]
+jvsvymbs-jhukf-jbzavtly-zlycpjl-695[frnkz]
+dlhwvupglk-zjhclunly-obua-jvuahputlua-825[ulahj]
+wyvqljapsl-jhukf-jvhapun-ylzlhyjo-487[jlhya]
+ghkmaihex-hucxvm-lmhktzx-267[hmxka]
+irgyyolokj-vrgyzoi-mxgyy-xkikobotm-670[ryfvl]
+kwzzwaqdm-zijjqb-amzdqkma-564[qzdtv]
+rflsjynh-idj-xytwflj-541[jflyd]
+emixwvqhml-ntwemz-zmkmqdqvo-200[zmbdq]
+kzgwomvqk-rmttgjmiv-abwziom-330[mtnsk]
+xjgjmapg-wpiit-vivgtndn-499[weiza]
+cebwrpgvyr-pnaql-grpuabybtl-117[xqmjc]
+egdytrixat-uadltg-uxcpcrxcv-297[ctxad]
+gvaaz-ezf-tfswjdft-623[fatzd]
+excdklvo-mkxni-mykdsxq-mecdywob-cobfsmo-692[mocdk]
+ovbunmneqbhf-pnaql-bcrengvbaf-351[mtgcw]
+nwlddtqtpo-clmmte-nzyeltyxpye-509[ydnsh]
+froruixo-udeelw-vwrudjh-309[sxgvu]
+hqcfqwydw-sxesebqju-cqhaujydw-660[fghtp]
+bpvctixr-rwdrdapit-ldgzhwde-895[sfioq]
+ajmrxjlcren-yaxsnlcrun-bljenwpna-qdwc-fxatbqxy-797[fnjis]
+lugjuacha-zfiqyl-uhufsmcm-370[uacfh]
+houngfgxjuay-pkrrehkgt-iayzuskx-ykxboik-852[kguxy]
+gcfcnuls-aluxy-luxciuwncpy-jfumncw-alumm-uhufsmcm-214[zftvs]
+oxmeeuruqp-otaoaxmfq-emxqe-794[drzyv]
+nvrgfezqvu-upv-tfekrzedvek-867[evfkr]
+uwtojhynqj-xhfajsljw-mzsy-zxjw-yjxynsl-801[jyswx]
+zixppfcfba-yxphbq-jxohbqfkd-887[zgoyn]
+qczcftiz-qvcqczohs-aobousasbh-402[coqsz]
+lejkrscv-upv-tfekrzedvek-919[ekvrc]
+chnylhuncihuf-zfiqyl-zchuhwcha-604[magtu]
+vetllbybxw-lvtoxgzxk-angm-ybgtgvbgz-605[gbltv]
+dmpuamofuhq-omzpk-qzsuzqqduzs-820[quzmd]
+rdggdhxkt-gpqqxi-rdcipxcbtci-219[yrlha]
+tfejldvi-xiruv-wcfnvi-jvimztvj-243[fqclr]
+foadouwbu-dzoghwq-ufogg-gvwddwbu-324[dgouw]
+tbxmlkfwba-pzxsbkdbo-erkq-bkdfkbbofkd-913[hgans]
+gpbepvxcv-rpcsn-itrwcdadvn-453[sbuap]
+szfyrqriuflj-srjbvk-ivrthlzjzkzfe-633[sqwil]
+jqwpihizlwca-jiasmb-ivitgaqa-122[amzud]
+bqvvu-ywjzu-qoan-paopejc-264[ajopq]
+mvydjvxodqz-wpiit-gvwjmvojmt-525[oabkn]
+ktiaaqnqml-moo-zmikycqaqbqwv-252[qamik]
+dpmpsgvm-cbtlfu-sfdfjwjoh-909[pntzm]
+nzcczdtgp-nsznzwlep-qtylyntyr-171[nztyc]
+htqtwkzq-idj-rfwpjynsl-723[ndmel]
+gzefmnxq-nmewqf-eqdhuoqe-300[eqfmn]
+qzlozfhmf-cxd-lzqjdshmf-469[fzdhl]
+pinovwgz-mvydjvxodqz-xviyt-xjvodib-yzndbi-447[pztyh]
+gspsvjyp-gerhc-gsexmrk-vieguymwmxmsr-256[gmser]
+ygcrqpkbgf-tcfkqcevkxg-hnqygt-vtckpkpi-102[puovq]
+jsehsyafy-tmffq-vwhdgqewfl-112[rnach]
+qmpmxevc-kvehi-hci-eguymwmxmsr-204[mechi]
+tcfkqcevkxg-tcorcikpi-gii-gpikpggtkpi-544[wytzs]
+pbafhzre-tenqr-enzcntvat-onfxrg-ratvarrevat-845[raten]
+shoewudys-rqiauj-bqrehqjeho-270[ehqjo]
+xjinphzm-bmvyz-ojk-nzxmzo-ezggtwzvi-zibdizzmdib-577[zimbd]
+rkpqxyib-bdd-pbosfzbp-939[bpdfi]
+vcibutulxiom-vumeyn-omyl-nymncha-786[ziwys]
+nvrgfezqvu-upv-ivrthlzjzkzfe-321[vzefr]
+krxqjijamxdb-yujbcrl-pajbb-dbna-cnbcrwp-303[bjacr]
+zixppfcfba-mixpqfz-doxpp-qbzeklildv-653[zdxgu]
+lsyrkjkbnyec-mkxni-gybucryz-640[ykbcn]
+qspkfdujmf-kfmmzcfbo-dpoubjonfou-155[fomub]
+sno-rdbqds-rbzudmfdq-gtms-cdozqsldms-755[yaubo]
+houngfgxjuay-vrgyzoi-mxgyy-ygrky-462[ygoru]
+gcfcnuls-aluxy-wifilzof-yaa-omyl-nymncha-266[alycf]
+hwdtljsnh-gzssd-xfqjx-463[fajso]
+htwwtxnaj-idj-hzxytrjw-xjwanhj-281[hzrnq]
+sorozgxe-mxgjk-lruckx-xkgiwaoyozout-176[oxgkr]
+ynssr-vtgwr-vhtmbgz-ftgtzxfxgm-475[gtfmr]
+rtqlgevkng-lgnnadgcp-yqtmujqr-648[nelzc]
+kwtwznct-rmttgjmiv-camz-bmabqvo-460[nmbls]
+surmhfwloh-fdqgb-wudlqlqj-959[lqdfh]
+iutyaskx-mxgjk-hgyqkz-rumoyzoiy-644[ykgim]
+jqwpihizlwca-kivlg-kwibqvo-wxmzibqwva-434[iwqva]
+amppmqgtc-djmucp-asqrmkcp-qcptgac-496[cpmaq]
+apuut-xjmmjndqz-wpiit-vivgtndn-187[intdj]
+ftzgxmbv-vtgwr-wxlbzg-267[gbtvw]
+eza-dpncpe-mldvpe-wlmzclezcj-171[eclpz]
+rnqnyfwd-lwfij-wfggny-ijuqtdrjsy-827[fjnwy]
+aflwjfslagfsd-xdgowj-ghwjslagfk-684[fgajl]
+lzfmdshb-eknvdq-rsnqzfd-859[ybjfz]
+hqtyeqsjylu-uww-tufbeocudj-582[uejqt]
+qfkkj-nsznzwlep-dstaatyr-223[aknst]
+ubhatstkwhnl-xzz-kxvxbobgz-267[umogq]
+xekdwvwnzkqo-oywrajcan-dqjp-ykjpwejiajp-238[mtbvo]
+cebwrpgvyr-sybjre-qrfvta-195[rbevy]
+hjgbwuladw-usfvq-esfsywewfl-710[mpiho]
+lujbbrornm-kjbtnc-fxatbqxy-823[ywamx]
+ugjjgkanw-uzgugdslw-hmjuzskafy-476[stfoh]
+fmsledevhsyw-fewoix-pefsvexsvc-724[scznt]
+zlkprjbo-doxab-bdd-obzbfsfkd-419[bdofk]
+vcibutulxiom-wuhxs-nluchcha-864[uchil]
+yhkpvhjapcl-ihzrla-dvyrzovw-305[qyhmr]
+hmsdqmzshnmzk-qzlozfhmf-qzaahs-zmzkxrhr-287[zhmqs]
+gzefmnxq-dmnnuf-etubbuzs-482[nubef]
+ejpanjwpekjwh-ywjzu-ykwpejc-nayaerejc-550[jewap]
+cxy-bnlanc-npp-mnyuxhvnwc-433[nvmyt]
+jfifqxov-doxab-gbiivybxk-obzbfsfkd-601[epyzn]
+pkl-oaynap-xqjju-wjwhuoeo-680[joapu]
+jef-iushuj-hqtyeqsjylu-rqiauj-bewyijysi-842[hyzgu]
+dfcxsqhwzs-tzcksf-aobousasbh-896[wkqxh]
+lahxpnwrl-ljwmh-bjunb-693[jtoyp]
+rnqnyfwd-lwfij-gfxpjy-wjhjnansl-931[jnfwl]
+buzahisl-jvyyvzpcl-jhukf-jvhapun-klwhyatlua-617[ahluj]
+jchipqat-eaphixr-vgphh-bpgztixcv-271[hpiac]
+zlkprjbo-doxab-avb-absbilmjbkq-107[wbymr]
+eqpuwogt-itcfg-dcumgv-fgxgnqrogpv-362[gcfop]
+rdadguja-qjccn-gtrtxkxcv-791[cadgj]
+etaqigpke-oknkvcta-itcfg-hnqygt-hkpcpekpi-674[mcoya]
+gspsvjyp-hci-wxsveki-386[myuqs]
+jef-iushuj-vbemuh-mehaixef-920[ehufi]
+encuukhkgf-fag-tgceswkukvkqp-752[kguce]
+npmhcargjc-njyqrga-epyqq-kypicrgle-444[cgpqr]
+xtwtelcj-rclop-mldvpe-dpcgtnpd-379[pcdlt]
+nchhg-kpwkwtibm-mvoqvmmzqvo-252[mvhko]
+uqtqbizg-ozilm-jiasmb-uizsmbqvo-122[ktxvs]
+nwlddtqtpo-mldvpe-fdpc-epdetyr-509[dpetl]
+wfintfhynaj-idj-qfgtwfytwd-229[efudw]
+yhwooebeaz-nwilwcejc-ydkykhwpa-owhao-160[skuyi]
\ No newline at end of file
diff --git a/data/advent06.txt b/data/advent06.txt
new file mode 100644 (file)
index 0000000..4a1a2a6
--- /dev/null
@@ -0,0 +1,624 @@
+focdealm
+ggsipflx
+rvibwxbm
+vqrfyyrh
+hsjtzpgs
+ozymxpoy
+jiecwags
+lztseufl
+dfwibwsn
+skiuhnwl
+kamgzqog
+axeqncwa
+gobivxto
+nwgoryhd
+tzrlitrq
+uzoldxbv
+zsteobha
+pfcgdqkg
+prcqlunp
+iwivemkh
+vpkilupm
+ewuznabz
+veaptost
+cyvirffe
+ejhhqfng
+ibsqztgg
+xzczkboh
+bckhbodf
+vbycgonv
+esmoyyku
+unccgdgj
+cqwnqlzs
+edoqmykb
+bkvzlhyq
+yzrspisn
+zlzibhca
+povnweaf
+muyfegxe
+oaojqfrl
+gwesjxws
+rjknfyeh
+dkquvctc
+cfuzhxoj
+tdzzzfqc
+lzjzsyni
+wjfxckkf
+xmhyjhop
+kmtllzxs
+yohearbj
+ilmvyxgn
+erczytzw
+kuetjsba
+vwkpollq
+tujwluzc
+jlvedjcp
+acmoaoji
+gqoliyen
+agckavhf
+ottamfdm
+jxwlyotw
+tdpsrapj
+carwwmqc
+ykaipjdj
+zdfrbduu
+vwiiosud
+uoixglbw
+yegbwxjb
+wbpqqqfv
+wpynmyqi
+aqdkscgd
+oghnbnnf
+duftexbb
+ttvbofay
+jferymwy
+hqzimpiq
+sifyogml
+nymxqbws
+dhdlhhqp
+urtuhcrj
+giwcunfq
+fxgretsl
+maihqkpk
+pdxfkcru
+xixtthag
+vuzxqzzi
+wxxeleug
+xpopxkzo
+hgcsyuad
+xcbydxnx
+kxocfakp
+erxdajeq
+tliakzhh
+iygbbuxs
+qlgqthpp
+duzzptwk
+gfnqdotc
+kjayxeqf
+fehitfar
+yemshppn
+igtczmmw
+gfajhxch
+bslzmgwo
+xpmhmirx
+yhlwlupt
+nymajupw
+tlhgdefw
+bqkudizc
+lucrhmnm
+svkoaqzz
+luggfivf
+ckawtiwy
+eeivawhj
+qdmmmvdl
+quezzzqa
+oimsfsuo
+jdvcknqu
+aupohqbk
+llwsasnz
+zlpljtjl
+xfylqxlv
+zqppxkul
+varoizrq
+yxryqwso
+gsscetca
+gcbdgqyo
+hsdnvteo
+pxtoreoc
+rwjdkwzs
+zdgofynf
+polyntkx
+jhulgrnf
+ycbzpdpw
+bzvdbwsy
+vydjbucs
+rxadwwuo
+ccnvzjak
+nombazjc
+lbxwdasr
+cbdlkiha
+sdomdvow
+phjnkkkp
+nmtmrnyz
+nxsvmcwk
+hqimjvir
+vmjhhuuv
+zilhgqlb
+gfgbibgg
+imxxugfe
+wtaffkbj
+lyguqvjs
+pejslhls
+qjnefwii
+oanqnnnc
+kcjyfwxm
+zoxjwxmw
+ihmokcrm
+uebsbhfr
+fxvjiorr
+ebjiucyt
+ofutlokv
+mdfnsuyr
+dzviwqdk
+umwyaijz
+hdqwfalt
+qtyrouwh
+lkzcrtwa
+dtqvwzke
+buplmmca
+xxepjuvj
+omyotlar
+ytndbwhi
+sbntigym
+mphrnsme
+xiymeoxr
+kcujxcih
+bydnchgk
+snwdjlip
+yljsymtv
+tyhbpoab
+zlqhvzxl
+akbtnzop
+xnpjmysj
+znhednen
+vbcsocrm
+ywjajour
+ejngbqev
+rstykfhc
+cbcnoexq
+mzlxvxwj
+vfdqaalp
+nbszzozr
+dqpyojid
+hfuqilbl
+uoackeup
+shqkcsmr
+jbdasroe
+fmlkvsnt
+cnomxkvk
+unbsfncq
+bnzxltxe
+bbadfyin
+skmhtmhn
+xkypwglb
+flbfiioo
+fzywneyg
+srngxbut
+qtodeuxg
+xvawfqli
+nyfmrdsn
+rdjysbxj
+spmezvvj
+ofoivcuc
+touzgqzx
+mfqyzagc
+dmaurbdv
+gqnrlyuw
+wuppusoh
+qgstihuy
+uldnlrpi
+xaskgwim
+djjrphid
+qjhmctyu
+osfenjdn
+zvoahhkk
+xiuyatyn
+fepobmjh
+kmugpjpw
+aikpozqs
+kmgmazif
+gbzlodzb
+hrocqadn
+noekklwb
+vzwhnkvx
+osrspxsc
+iekmqgua
+xeehndee
+quttqjav
+htoptweo
+cyicmwba
+jltlwlyy
+qvccdkig
+bibggekq
+kwfwvrfg
+eycwlcup
+murgcddl
+lyukeubx
+twbpzoyg
+dkcvzele
+fozhtmcz
+frugeivm
+qjbhpdpr
+tgkkeroo
+ryuvgqgc
+jhixykqn
+wsebmcrn
+wohtjpgu
+isflpxxt
+xggwmamk
+tfwdsrfe
+cpjvcghr
+fekhexdb
+zcwzqofh
+awnfiqzu
+ihekvqby
+rqaqajij
+cumouwzx
+ccyrflxd
+rredygrk
+patcpktn
+mjnwuefa
+tuhgyfsw
+mjpxrgkx
+hupfjqxo
+mgkclcrf
+jkmkhkci
+nkcrwgqd
+apmfiqpg
+pxiawshv
+ledhpfaz
+btikmkwj
+jwosopir
+mgxftcte
+phkbcdex
+uakftnbh
+fnkmdecn
+swrvbjwj
+hphskevf
+trnpfdmy
+odvmmqss
+akvqgemq
+zyqlkwdm
+nbnaqjsa
+mbnogzyt
+mchaxjxu
+tcqqerqz
+ayylasgq
+zqbrjfli
+ccjjnfat
+lvlpdjqu
+luiabalt
+qsvkepvz
+dtyobsiy
+jkulvrnc
+thwjbzkh
+vvhrwbkx
+fhxejrff
+bacuriaz
+grmtyude
+feynnckb
+hfdepyjn
+lvsfflyc
+xfrgfgeh
+vqqybtba
+ntlfjqjt
+zadauvmg
+itukkpqf
+mrnnfgmf
+hpjqvppo
+dshgwmgb
+pzxeoymv
+nlokvrio
+cgcaxffl
+dvimsnxu
+iczcvwho
+lkxumswj
+satmovog
+ujwknitl
+halkgpaa
+pnttnodc
+adsvsumi
+jwerfpko
+yhsjqytk
+vpevemez
+yvjmltwj
+vdoeippw
+siouxait
+ftrspdpx
+hptwqlmz
+haewgrft
+watbdvqz
+eiptzrvr
+msvbioso
+dnjeoucg
+qixvmlem
+mqquklfq
+sszagakl
+khfbexqb
+uysydrlc
+inawynse
+whuonlhq
+eshukapj
+vtrepdxm
+pgjjcisd
+puiunlts
+replddlv
+emjyyhmd
+aahwhond
+laneyzsj
+jnlkdpyb
+sqxrctuo
+wmmyybvl
+ldyvqldz
+bzbrsdjr
+ekxwhzte
+gnpqywzz
+afsfbtte
+ggkbrgds
+dlawfrbp
+opypolpc
+cqpxcfgh
+ynmtlgvl
+slfmicyv
+ooguwxjc
+tewmtlty
+wcdwansw
+ktercyvw
+qrgxrzne
+wvbhflls
+dpfjwbmm
+uigmcaow
+ejzhkxic
+fbewvcoh
+jxbtcmwn
+ywiktjqn
+rftnjqpp
+yalixnnw
+srdsiwgy
+pdpdrynx
+ioroheqp
+vpvvnmad
+tqksxfsp
+snzxciua
+nrhtoskm
+crfvapzk
+wndbcxvf
+syffkzmv
+nneibkaf
+unuvhnli
+ujhdjkvs
+gmyqgvdr
+jedfxwje
+bcshopnu
+xgiprhyv
+onibkkoq
+riguljez
+yodzrfeu
+ogbwakaa
+ymrltbxa
+ourmuhrx
+yxwixtuv
+ptnxdvdm
+oskvgexz
+fbigwiaw
+xctckzmy
+khwiyvmw
+qbqbtxpr
+kavzlngz
+bbklqvzt
+rwlzppbq
+upirhhca
+ezlaqdgo
+ieuynchi
+qmjtojzq
+qrricseq
+hxkrsfmw
+nssfpnws
+tiaziudb
+rvskpahe
+pplmppvi
+jxpyidio
+teudseap
+aclyhavi
+yqafhkyd
+drjhcqgu
+zvfcfbjc
+sqfuuezn
+gwtsupqk
+czakgbiy
+wknfzbyj
+ooxwycji
+wxymanlx
+ewbtpqtl
+jmwnxydh
+ceqdllqb
+jhdbejmt
+mazzsanu
+uypyqlvh
+itnrzbie
+miuegdjz
+tqxeipin
+kbareizb
+jgjxrycy
+epshhech
+oicruxsz
+ptxgidha
+bmgnvjtr
+qvwzlmgq
+cvwtdffi
+ibzasmru
+jfenrbjd
+nrkgwvcz
+hlmghdgd
+emhdaicl
+wdwrzocv
+spwjcrud
+dsgilvqn
+phvmafqk
+iiihsfff
+uvcqgtyc
+doxkrzzw
+hktdpsbv
+evqojani
+kzapomdx
+ewtbrdtb
+rgshzyxq
+ltinzxld
+cazrrlcu
+irfxunbt
+rmqcsbvm
+gddexbsb
+qladhkpd
+xlvzpmab
+wirftlbu
+fxfqjubx
+sgogtrcb
+zlqxxwfy
+djgtbihr
+gslssgsu
+wytydgje
+vmovsmdh
+ogyiuirh
+mtfxzrrx
+kcpfbemc
+blreqhel
+zjsjqqyh
+ciqwtpvk
+yjcinpaa
+wxbxagui
+aqbjqmig
+ybaeuhew
+mjzpnttv
+mevjcrqp
+fpmgzgco
+gklesvof
+jzfssvvx
+aynfmwhl
+euosbnhf
+lcebcalt
+kvsuuyyt
+ltranzur
+nlledtpz
+vqdrgckr
+yodxnjpt
+uyznwnni
+ckczwqkp
+uxtjgoee
+otdoyaxg
+lbccbfgi
+mhzjujrp
+cekkthvf
+fbvpuhog
+nzfannep
+rnnqusey
+aiocsiyy
+uvcbtfwr
+bzqirxrg
+qnmfgshq
+inyevvbn
+wswvhglx
+huxqxwwb
+fdutjnfq
+adajhsjk
+ahllesij
+tcfawzgu
+zfdgmtry
+byznvpfp
+duunxdad
+kgadxmdf
+ptfaovzv
+uhuvlivs
+xcoqrmeu
+nnnlvmga
+zwrbykek
+lvpumidd
+hieivrnt
+vrwqsvci
+npbplsvm
+ougzcgty
+rzvgzooo
+iehafkto
+rzspzjne
+dzvvhvld
+fgkmmfda
+xjsnnlmd
+igvjrsuk
+narcempo
+xrhoiugu
+ghxbpomr
+waxtcbcg
+tmqgsejx
+dobaxhel
+mpzgjyww
+ehyfvnaz
+zxrdlajd
+hfquyvok
+aqxxdcqv
+vjbukram
+rjvttibk
+pryxgzrd
+hcqpxgee
+qjgqvoal
+wmbuvcty
+zpgxmdiu
+foequjps
+lmdjwyfj
+mhqudwzv
+lrzkttsw
+owyatnru
+gwppbbfb
+fvlkdsjk
+pwhlvjtb
+zgldiibp
+sokjzgvq
+kfourwqm
+nfqoyvsz
+hdiwmrhk
+nnapsbht
+blqjjtwy
+aknoauti
+uhgowkyx
+uypyjorh
+blfeioot
+kzbukpxk
+kfmbxgle
+zmegahum
+upjouzrg
+tkedvzfy
+bxwxuutn
+rrwxobjp
+jdujkhox
+jkycewdx
+ivlbibns
+qjshodxf
+bektjeou
+wotjfgfl
+rjrcfiug
+aklhubjf
+kwpnaezt
+lsqvzdom
+pxzvorct
+vcxazyzs
+xsszjsjq
+ydgfsukl
+gqxpcrla
+rvsoxkhy
+rschupcm
+ivlpikxi
+etrnyvkh
+byzymjms
+qagdcqww
+sxnausxs
+giuitchj
+qgolehtg
+keeskeyb
\ No newline at end of file
diff --git a/data/advent07.txt b/data/advent07.txt
new file mode 100644 (file)
index 0000000..fb0a641
--- /dev/null
@@ -0,0 +1,2000 @@
+dnwtsgywerfamfv[gwrhdujbiowtcirq]bjbhmuxdcasenlctwgh
+rnqfzoisbqxbdlkgfh[lwlybvcsiupwnsyiljz]kmbgyaptjcsvwcltrdx[ntrpwgkrfeljpye]jxjdlgtntpljxaojufe
+jgltdnjfjsbrffzwbv[nclpjchuobdjfrpavcq]sbzanvbimpahadkk[yyoasqmddrzunoyyk]knfdltzlirrbypa
+vvrchszuidkhtwx[ebqaetowcthddea]cxgxbffcoudllbtxsa
+olgvwasskryjoqpfyvr[hawojecuuzobgyinfi]iywikscwfnlhsgqon
+jlzynnkpwqyjvqcmcbz[fdjxnwkoqiquvbvo]bgkxfhztgjyyrcquoiv[xetgnqvwtdiuyiyv]zyfprefpmvxzauur
+vjqhodfzrrqjshbhx[lezezbbswydnjnz]ejcflwytgzvyigz[hjdilpgdyzfkloa]mxtkrysovvotkuyekba
+xjmkkppyuxybkmzya[jbmofazcbdwzameos]skmpycixjqsagnzwmy
+zeebynirxqrjbdqzjav[cawghcfvfeefkmx]xqcdkvawumyayfnq[qhhwzlwjvjpvyavtm]sbnvwssglfpyacfbua[wpbknuubmsjjbekkfy]icimffaoqghdpvsbx
+enupgggxsmwvfdljoaj[qlfmrciiyljngimjh]qkjawvmtnvkidcclfay[bllphejvluylyfzyvli]heboydfsgafkqoi
+ottpscfbgoiyfri[iwzhojzrpzuinumuwd]orfroqlcemumqbqqrea
+zhrhvyfxxcsdpris[xdqecoqujrnqbgla]bpwibmrkcfbzigf[rlqtqykdltcpusvc]ybtsglkxrhucxwv
+msaebhhuxyaevahov[skkhuecthcqtrvtunw]bzlvljpsapsezchptjs[lbcxoczqbyysmha]zdqlfydjdctfnuetghr[owwhfhnjmpekukafw]qqitepzwooogqifl
+jhdfwesnofrkpse[mkruficpgplktbmoo]mnrjpuvsauanolvzhym
+ucibfxxivatgxlupp[rxlbgrqostcioowo]faiimhdhgpockadenua[teomupxzwrernokhyud]ohsfljkyjvkfzwus
+gzxcgjqdbyvfndfpw[ypfsapvecfqihnpuszq]mvwxgfkniekgqzqid
+fipkggpfwvgrqiwosi[itadifxotejgzkt]szwurlcbvffhgse
+ketltdpowbxcusrcua[oonjssgqvcgwvlz]otjxgpizqfpcriuco[mgtgmwcjecomtdkxdev]dnrecyeyhqcpausqzsw
+lcototgbpkkoxhsg[erticxnxcjwypnunco]notoouvtmgqcfdupe[hubcmesmprktstzyae]unuquevgbpxqnrib[egalxegqwowylkdjkdg]spqmkzfjnzwcwgutl
+nesmourutitzqtolwd[rurfefjvljejcufm]jagkqdwpkefkjdz[cctohikipqxxbdjxsg]badmffkslhmgsxqscf
+vvbwenaczgfagvrv[dqjzprtikukbikojlgm]bkfrnbigwaitptbdcha[llnwgonsrsppphnnp]sqozspzzfbeigmw
+jzkzjzzghblqqme[fsqzyykcotbavruyp]vjzohzsunrevhmpi
+jlngucjirfgdgorbgb[nvvkvebcjahujrwjmy]cfnlrssuthgusytkqt
+kegsdcxndhtlskseb[zbtcngduxclffzlw]wrdqbtrqbcpbeaiqvx[svsyqhkrryycnkceq]ztrawvffepndijceeih
+imtafeyfivrcegpagsl[tjzsewuwboushjl]mtnyptormlwiijlds
+sblhlpnuutqgtuvlc[jlkivbtbkivklrnr]zkzcykzkyjxarepzvrr
+ojuqmcidxmsyjkhuh[gsegkxlimzuyceo]dlhjiensaurluhul
+sxkxluastorxmnd[gwkeczwgmamhjquth]yvpdadteadabxgsplmr
+cndxxzfcmwwtcibgktm[ntsvmiwosuvniztv]onnfaenxutizlbxdk
+eqiwaqxxstamxgzc[vnomzylvfpmcscjar]rwdqevxpeqvrmvliu
+tvzbzkhvpzedqtp[whzeqaisikjjbezzcow]hqbizwaaffwbtfglq
+ajwpjiqawievazmipkw[mgfhwrppaxagfdgfsa]iaqcnovhgearcutadns[anaukyaljeflxdnucbn]bhqcwrkeolrhwdih
+neakzsrjrhvixwp[ydbbvlckobfkgbandud]xdynfcpsooblftf[wzyquuvtwnjjrjbuhj]yxlpiloirianyrkzfqe
+jugqswdvlbaorwk[dfqvlubdcigzpcz]aqhybhnoukoyxuiw
+kkkfysfugyvqnfvj[ahhqkrufcvhfvapblc]jfincvlxbjivelqrs[mpoymhslpyekjmy]eicbqlzecwuugez[tsqmqvjiokqofbp]senbbdxrdigwcjwik
+ogiiiqaxakiaucwa[ltdchlxwnzefocrw]koxethzfvlsewbqdt[qdfqgtzftqpaxuzcruo]fvkgjcglmmxqnifv
+epmnxkubnsnyeeyubv[ydzhcoytayiqmxlv]edmbahbircojbkmrg[dlxyprugefqzkum]svdaxiwnnwlkrkukfg[eacekyzjchfpzghltn]ofwgevhoivrevueaj
+vvwvubpdeogvuklsjy[psnqcfnqhxaibnij]fwzpkbdgmpocoqp
+pjdxcbutwijvtoftvw[zkqtzecoenkibees]llfxdbldntlydpvvn[uaweaigkebxceixszbh]xxlipjtlogbnxse
+zmnirrxetiwyese[cedxmaoadgjjvsesk]nuisspyclmncqlasmuy[zxwlwmbzbjmvubgcf]hfqniztoirmsdwz[zlffqhttbpehxoabzhx]upmydjqzzwefvgdpqu
+lwvsssgvvylrvqh[duxjrrqkzchbpvnmm]pckmefvejytvzavgzgc[dcekfwnrzooigwio]pmutxfiwfowlfnnggl[lzytuzirtzgwhkz]yzgxtksuqrgvvgfefon
+tpmyecqhqjjpertn[qomuwmxstmgzexds]ftvqqwsvsrnmvpg[vtpebuufpyieqbhuu]dorortnekxkwnploro[pzajzflqvbkhautupl]eowpcyzmyvnntvzmvx
+foguzgeasrkncbny[tlyweucylxkswwxb]jtzjubgewwhlddar[dkddqrpwaqvlhdp]skkegnatbjubqglwu[pkwscrmgvjzarzb]ibaagrqwnxblvtkg
+ejgpdxesfyoyaggmymi[axfkdoyoqkpkhusfwe]pnczsmszqevkqiwlfc[dqhzcqjzpgnoknmv]ldrjdhopfyctlqtn
+gqhyasteoryuofc[bhblyxlbiqtzzyzvzqg]dtvxrlkyuwxttyw[qvvzvuzhkemwglh]bopvfttkwtaeckq[vvhkkgrddaoxnzctwar]gsscsjuictekguq
+sviwnvbtrgyydtadhz[ipjrrywkoxwuzmlrzd]kcxruwyisqvokporkub[tvarlltnhjmcuvvcck]raafszljrhconjqsqi[snbxmvzrkojpjybkgpi]ekoeuottccqbxrvpkb
+vtouviqjarqwnoexuy[lzxhegzxptktueqo]azfsikzbwiajcrhnas[hvqxgtffjyyfgsjowxy]ddbmpksrtghvvypev[eoepwehfavxzwgt]igsulpdhrevkghzh
+fucimprxzsubuuzmk[umzezmmnkfzvjlela]qxzdlcryifsinmkgeha
+kauzjbailyzpvtji[hgeslalzqgpdkpuvomw]utsywinellykvmuawwr
+oacbdgfaszolybf[hsytrkjoylrkkduzfz]bmoelqhppaxshmfjl[cusgbbuydfqtbbmsju]mcftwalxlvfvvpeu
+ybylybngqxxrmplf[mybpfztzwnisfpfgqmb]fsllclehoezgthek[ldxhvhwniqfpqbl]ebybalwrmrqldukb[okenxoqxjgrenrcjd]kluumgtqybryflqi
+mufsafgfxiegfgf[ydibrbrmiaulexjek]ouwchrlvilmygbuppjl[imyaxsiodgjteppdyy]ugondbuqnhjrzzzn
+idihouejjocbahe[mclnirhxghanatge]ubwhxskdzgkmyrp[vksyktucsyumvxoc]bregaefrdlrgmtwt
+qnsqwkqttdevlnzg[noyxiueharjajsalnhu]heaxmujxhpgjddqur[xnqwujjeasceovnroiv]hnrnwuogebatnfsa
+evruuxfhpivnmknolsj[itpsnnhbtrrbllsbo]gefodpceljlvwuahz
+ebddlswrvbjohtnkyip[qkssdudizhcoaazvyow]xvnqicorrkjrnxixp
+bbmmzbebuexzmtbr[tpzfxmwgamhaikfpaeu]kraaocehdtalyjrf[zzqqtjplepyidohpvx]kzehgejueimxlqglfj[zgysopfdgxtokkdxwk]gwcfaflybmhdgoxjq
+xztpwfipuczrtoyt[uwnlokmtopkhdtemm]sdfmvgvctgwbdjpmvhh[ozjpkdigpjqzqgy]yrkwokmkrevauzroaqm[vctyupmildfnnjomue]cvagxsievhrukgyqzg
+jpmvqhuabqsvroxgmyk[toieqxrazxhhsbrm]wdwhoqdddwdacuo
+mlaqnefjmwbxeetyxz[sziklwesunikpiqjark]iltkcgfzmhvusdnlr[bmfprkswemctykvio]hhsmvppnztgipxij[kvlbovfklljaumwmy]mdpaiazrlputabj
+czdgmoqwzhvfnulxo[mlbkytxjhscsxrgchri]veugcvavrzihzencp
+rbjtyudgcswzezr[inlznakcutfnnequc]uhisbxotgqqtzionoq[hzlgqtkpeubvudi]qqsryagiowmcijbejhr
+wkvwdohwocizssun[kimsjrwwfpilzpkf]ruqhrplgugwhmnn[iouhwbjnqzlqyewxof]exjuguxwmphfypvsivl
+bcnuloxdfhnyesgtdky[hvmgfzcjhhiiqino]sfipughwbebgstwrua[behnamammdxrnnok]ttpbmbflilacfvwiwd[sosjbmmjygpbfetziv]qcosdgrbfdsgqqrlhym
+fbmthzppxydfxiipo[zsyfzbueqoaoxeueado]santekllapuywlmwjkl[yfsonktbvuyilcxf]xjerezinsamruvn[cceqpogyrsztadfap]fiivtuyynltqoypypou
+lfjigofbbnyrdlhxv[gfblbnmkfnpxbio]zeqevpmpjowrxtw[mofuoyllwekzcjtxjhp]lnzewigzwruzlbjh
+xjgdfbtgqmgazgvtif[farekeencwufapef]dxjltmtfxuiydactuko
+njaolcljynwvrwy[qplxbpadtyndosjcch]fscxierutuanappsqiy[jftravlojauqkmgludp]pkfwxpdfcrjrmbucf
+iyotvokljqynxnpjsfs[lfwwocnwcwstidfpb]mutsdjbqfruxxprzrnk
+kpvxcagazjsxgagg[sabugyxucglnvcjb]uvrdglycowrjddy
+zclgitkurpfdspcbk[yedvkzgbawpthoyn]dhvnmtxbrpttrdrio[drdahsrphffqsigrlmk]ykghbvcdosmtcgxdeb
+rkmajkdvlbqwtnuanue[brdlutivdnfekggixum]pbsgstnxgghrygqwpf[rlqzaflmkbvvefdoc]jhbtzkodsfglsaow[onlllmfziapizsd]usvejrxmziulunvjux
+jqlketojwcgvuce[ftcxdqqebijrnfzjriq]ucwgiavuxrxokmvxgad[zmyusreluasvwgzngmx]semjnvafnqvwtvkimy[owvczdccmvfohtbijfu]dmhbiikbzcualbbs
+roewzhbnwyvondnn[ejikyjgtzpmepihnnl]yurjuztavzqkxqlrle[mbjcyqrzfuhhsnipzx]fcrtuzhrqorxrdmrcn
+ycznijylnnqwmqzdd[ycnztjgxgyapvafhwaa]pzdtesugxpchhdb[sdruhgxaqpitoxlncc]exnhjwmnvqmquvclhu
+iufdjzqflteyvhrem[eqiluhtbfuegasby]ikqccaxrpnjjrevdsev[wfluwngzffaxhaflbf]wnlyrgvaxzsmqvc[smkdicgtwwwxmdizdi]joaqneodtgvioxzg
+pddsupswtnzture[pehcqhpltqocptr]ymzrvibfbeasccxh[jwwhastouxzmyhh]xsllfxcuzbtciegzcd
+rnnvfdyavlqnvwze[aistrderxrrojbsspnu]hfkzgodowrlajmmeq
+qnebfycqdylighjpgo[ablnwbutiwhdcrmwbg]hnqeseogqdsdhith[nmrgaeenxhizhoqper]tjxbhutvqtjzpyzh
+batsftctktgebkvzv[rovosiyqqpafttgdmoc]ynnztvhekfnexdcuq[lnevylboilqebnkf]udftgymwddomqmy
+ybrcyivzafzoubcj[crhigqvjszwqflocc]aesdfdfgzcnyxsmzg
+oskvnzcbuyaytyixp[ypctohskpfoxhpydwpf]kgkbxhyfncznsar[vulxrgolpxlqzkknzva]ightbuekpmjodxzfky[nyjpxhpycxjrqdno]jhvrgxgfjwarwzkmfj
+relqdjmixussrbijgqj[mfsyrfbtjbojcesuyw]wsckbuhopguszeh[unyhvpqjxxgfbgyf]dddjalolfjwliasyezn
+xahbldxnvsviywko[ucmjsyoejvcggbtx]prfpnzzlexpolsgsmsf[bgocwabottcqekxs]ijvpreqlfejnqhfbi
+qtcopopjmmcjlyfrtot[dmnfjowrhqtqhevs]pfczfmefcnnfbxiovzj[exoentzecnbfjsy]comgdcvnlyaemmya
+plhhfkjlotvzupi[ilbcfjbrxuildya]uuvdzteoijumhavq[tcuesohvzusidbgpw]hdsgdngmjtlybnas
+yoifccopobbguvkytps[xhkzrdcfsyhpmuujbt]ocidhllwycinggwu[kouoyzxtwiwknduclv]wkokzcbbqvjxtubqg[plgujclgyfmafflyurt]rpjrpxriaxyinneajvy
+jbmiqrqkpbjasqhvwcv[zlyzpnhzdtqiorod]dkigqgjtzmpleja[ijenfaygzeceopbmxks]iwzcpoekmitcckbxbzr
+zixveaipmutzulr[awdlukrjbyxtssfksb]hreqwpgrawaqwtqpt[bykxrwwuypetebhs]xhtujigporvkxqot
+cldscqwnyjkrzvyegsf[zwsvoudppoalxeja]dbqrfscekpmhmpoellj[xxxpuyedbyuihdzdf]bmtfdebklpxvuacq
+ohdqlkppqasvyrkkjm[hevshusrmyhuyyo]qbmrotalialbvje
+nvwdnytzqwrugam[pflhibktydncffbnlva]lguqdlkusqqwovr[bgufsrqjnngbwxnhuco]uanvcpxragayfoj
+zkvrrzmgitfjnit[gezdzgcdvxdkxytcq]avznjhxyjldbqpfoua
+mmyxbuoieontkaxvnk[lijzkcghkhiryhceqc]zuouxoicowwkhklyp[baqxxkavhepnpepnj]jcdekzxrpfucavdq[nxrhabcrumlshoitzba]httcbsbgoyhjpkv
+hpzoxihsevceefdjv[nxgkyykcfpjwtlz]lkszzbxqdrwyktr
+djqunzvzcyxmjqhy[qapfiyujulhgqipfm]htqbtlhlsqxnjyply
+lilhndsdretyqjojrn[oxrhvlpgqiotmvruvh]hgdlazecfzdrmegmnw[alxxixmnnjkyhrqjgh]mpbjuwwcyhdfxynyk
+fcrwgutcgcqizev[nwszwhfvqtdhrymgqf]iiahiososrpdafnt[gbkrardsossgcvu]fmudukrxbiqyrpi
+xpcgsvaeydonptb[ewpsimxlttaeoth]gersjqmmdamhikqtv[sxyvukeegkkbbarjknr]sohijvshdnoawujw
+vnjkhbmpsmvxkdt[yrpltayaihgspvnjxb]ivhwkahhjjlwzxfpz
+ofoancxlupttxku[hkedaqsibrvtvqu]zkssllvuecmgtqvs[eklsqwgwuhucbxykl]ioompempaewmnco
+nwviejwlkyokiqhuvo[csddbtlbfdwtakxlmss]fxdoqlbdjhoslraj[shasfhtvpcsajdsmxfp]errsdzqcqzbrfnkeux
+gvmytvlyluvnmemhgjr[bvqbhytqwpyemefwo]sygljhpvyjnuxzjqy
+zootaoveazcrmtbda[qlxlwntntbkjtkqve]vffdsbekufzemgwomh[vzllvqlmloffyyldfh]alltnttrzqrchacoiqm
+ksbuxsjkmtzsfsy[shracmzkycsuqrei]qrmgsndwzkqhtojsn[innhjjhyfsffgsboglx]zhwuwgyrwmucjfii
+dagldnrnugbavjwiiq[vrsiyprmsvuapxvn]piirprosbofdwzuuhn[epdsrdcpgzkkzdjle]jylrtjltlmvazfpmh[rqqteknolbyzykdysvr]ieejzvgtumekqapi
+mtamroysxwglblwmjn[gmebbprtzaogucvyzv]tjzuzqyyfuihjubuzu
+pcfbudkakpzlyou[zznswrvmytntytfkt]kvudoarqnyybzeddvn
+moelqaykzlstyntby[qmpxihbeysykajdo]omqcjgdbuqvvydd
+ddyczdjdwnoacci[wpgjlohduqnlrifih]dfwcghvsdezgdixnpxe[ohhccenoirazgekq]lqtssqpzgusrlvyrd
+ewirhlfcfhkqbvmvi[ixrorekrimzzkckpel]ihyukzubvqdpnmqpgu[mbtybrusfomfdhlg]ucrcmbvpnjbghnxdo[lyajfieycgiubui]llelwgnuopqhjax
+jpltuunwbrijwnudg[ejxyrxniclwnqxxnh]krckhlysnmqahsz
+hkdpdpshmftvxob[fsdhonsqalgpydpub]dirxpfxsxhpxliqg[tvbhlcqkymtbnytjp]xuvawokttfililgwgue
+mdnmunbnueofzddapl[wxfahokzfixiapig]wekvqzgvufgztlgldh[zwglgerouhvhtbrdib]xeogmvaqszvkdvxv
+mbqnuqonmkxmczjo[ueqnkvfdskaqwesufs]zmoqtlzfcwqaxdnddkk
+qoaqjkdsftjstyjyqd[fyvizziweplccjt]ryvpqznfcdvjxuu[syspurpgsonxbbdrcc]vvedpafqmoeugwuize
+ctdgzypcrjqxirm[ouyjhaohcueqwdez]kroowbthpspnnzgzuau[pqijczlztofszvdzhx]iccbpchemtflqnhdrnw[esvbnyvlckqirev]psrquqfxaotuzsojbt
+rgukaurlmsyzovie[noclopxqrusykxpix]zbbopbxzogbeppp[anouobvemneuuztti]rpnbuugshsxxbbkhauq[zpqywyyxjfabzyppw]ecdrhvipvzregbgl
+vmbtrbtoajfkswgy[kailajjwltvmwasynoq]goxmpryedtsrgkx[hljqifnoadoljqtub]xucplzmspnbxvliaap[tfqpmrhbakiidoxwa]iceqprkydjgouemqsmf
+cvpnedbnibipftign[cigxthfejgyjzvspaam]esifvgljjjbexwm[uspsplcqhomoszleq]qnogejwqjdiznyfellc[sszzsifsfavntyghfs]btswodsrhcrrbodmtz
+lvxwpuujqxypkhqfymh[wtizujakvxzrqwpols]jffeswrfpnhhakyhwlz[lzyloeveicgwixnvdx]uvwhpnjlszclssbf
+noblqdnmgtyjbxjq[chxjibegmcbmljibes]edtgpajthcmqgpz[qafbzkjfqbjzilzh]aorhwssnugyflolh
+hunicsoijinxshpfskq[lniiseazhvpjiyg]wirqusdwvaiyatimhx[jntjijtppuekuvvzz]mxebkmgiqyfaglow
+wvzgoeqwcuudhjlc[nsjqegpxfiwvbtyuo]hehqjsarzkbbidy
+ncjcjhyagdubxcibe[qpddbjyualjarnnpkf]cizleaqaaewqysxwys
+jqslpqaqntewoglud[xtzdawarqxbigpuf]qnxdyobxvfsrwoaz[snegbwbzchqcbavh]kipasixtzznhgkjskv
+hptaschabsnqdgmuzoj[satvzxkqetnonungbjb]gqhigqimupvihhwy[nejqgulbxtzfjbjlya]jywahuqdzrufxenshjj
+sjgpoxxqtfsltzk[jqwzhblplilweukbso]tgorxisfymrcgyr[tfbebfnnljlpcfeps]ahpjfbonoajtohthzri[tdgaokthtdhxpsg]ajcykosmkhftnrjqphg
+tnwtnvvrpilvadiy[taucexvsohfmaxd]cfhrctuhgqwjgtll
+xzzmvrhyhwvprzczwz[lnshilvbyfjqgff]qfkoodzijhqkpuob[iyyvvfibosnuwlov]fhbcvpuqvpxmlolhry[osdmjplktygtobvt]msazwlubhinqvyfh
+wanhwievduqinfwlcou[uyalesnoaqmajcc]zbdddgzmqprwiia
+dfovljmseevxcfarf[enpclythxgepfzqcw]wechankwzxxkkutq[mvzawbhttzrauulkxvd]emcdawwiunjraebra
+sylgfxqcfrqgeeuh[dljwdydnbuddmtdgp]fhenkxvmwvdyaukaxa[xcdbxlqqfgqtjyhoi]tbnpjbnpoxxaxef[rlnmcnmntjlitsmn]vkculrpgrmqsrayre
+xexefhsfpwtpxuygp[omxfywhnlcapmpalz]foblbhtxieggkgpcru[lscwcbkqvexwzzbri]ipjoiumgoyugfzq
+hbeghglpgqnwpxqio[pcujpvhzhghnyjkmppe]jwcnwmqwctqgoxpj
+apqmhkpxrtrfwulqbq[trthojavkcrlcgc]oikizlfqpukeudv[afgmhbusoqjubra]ajbuhxzuhecopcxm[lowqlmwiyvmdojjla]jrrhjmopywkqrhlgicl
+dxrqnbrkijtvmkwq[dvtqzljjbreayipqgp]erhjjvypeyramuaab[cjedbzbceteuydrps]kolgelhdemrbeviu
+gwjakwyuaxixflozol[omjuyjzbtditgoznip]nqybdawthoydext
+lcdwaahhbhajoai[cszvgduipwduhgmo]vpsgnhmtypusbgmhwnb[qitqpalswmqvjiu]iyjenmmobfasnzqefci
+tkxizzrgmsxvmrdawsx[edbhkciwrqmoflyang]nbuwbbspldrfhic[guhvpvocfyjpwwclv]olxhqqgrylvzzqxxd[cnhwdegsxurungopo]rdenofdlpgilpiuvmr
+wkadrydzokfmuiah[mihkmnzzjladulkvb]weqzktdsbwalcdijda[rejzrqqdtbvrwgbgojt]ggruyvfdesfdwenyx[jjyyleykqeskpfmzl]ssqauxmvzygppvncz
+djzzsqykcfbhgfoq[frykddayaohlxmkem]kawloxhrgcpronph[xxkgjvdfespwmnja]jddmrdznkctmsmaxih[uxotxlcobxfemckshh]irmewesnknuknipl
+hzojrovrbmfobhsau[itboujfkrmpgjpsvsr]qgczawmbunmisxs[dtrvnzrayqlvdpyzbuy]wrcsquxgcxpvbwwzlqo[kqbfajfleopglhfui]bsoomwrdifoekal
+cntxerwyrvbludhaa[fclfiyjfekdtavmgy]lnvvlflygrewrgswx[juijxzrpwfrmshbttg]yjeuhzyjbmbdslbdhf
+gclzrtvgfbqqqcl[fdkwmnpoansxtklyusn]ywwzqahbabjbcbzd[kuiejkftwfuzmjbiify]tabpjhaiwzcdnzvof
+hmshguykeqstxgzs[fsnsxtrvkdyrlek]rkzkooteryozbwmda[jyjzddadewtuaqulp]gtprcoocgdsfbtduekc[llfoixzevsmexhuitz]ppiutxxuvaxhzgiib
+ouvpvcchazfdcljaux[kxqnkynylosbuekz]arsuffkkpzlwuibqd[lmmxhndkoldfbtyfpw]nvcrjoborzogjhgwn
+ojesaevpprrzqaksixa[ykxbgapdjiulhmxgihm]nrxxnhdwodfgqoeproy
+vzbltcugyxvtlxqnkxu[fcflcasuyaljgewcynf]azqaltkfsglwgkeh
+urcslegrolaaalf[grobiijzrtgpntne]uhpzjqkslgahpkehix[prmevyrajmgfhsjpag]kwfhbrhzkojqazxjocg
+zwfeopovkggasxxb[fadbebqmbxwktwfdeui]ftomtaogfvgkkdrkc[rdkdznntsigigjiv]warlzbzbnfbjjsh[etjzyzfdjztsfsyi]dulnqfxjoewssxgkfb
+nvrsqzcyguparczn[ewfmgkjaibzjoiex]kpooaykofbtkpawayfh[ssuzuankcdhqvold]qaeuwxgakqvcugn
+rnlhwrnjgxwleghohuz[nktpaaaciwyfagkpqw]yeyzojziajnryse[bmpxxtaljjigfiv]ojzukghfhfhykqrcdyy
+doqbqcwjoldvwtws[qaxghysnphejfacrnkn]iqyhfkjogmrkjpk[hfjqxqeuzwywwmnzj]uzhpypjadzqcpeibcgc
+kmcmhdptzlhgqui[cpluzrcwihnwxrsdoj]czbxutspkzdwesrc[fccnqmeaqfmxtqqng]fitsnmdmyzwsifevbat[fxhgcmqhxrudtnleoww]yhxgwphkxlzhxzjnvcp
+tmjpplcwhmsaxav[epfnxqdzfpxmaztdqn]vwdoatnafiotogpsxk[lydghxujguhqcjqtbbk]mtvqsesoxvybfrxyoi
+fslvgbiibdkhchajyb[zpbhqrokrbfuqrowop]gqqzoqvfsdfcjcdurrs[xhqfcfytbbekivnvod]jxjwuxivnyhppvfhaol[evfnrmrjnnhychtpv]emiyjcjsnojxexs
+gqaygymjihevbsps[iepworrljuepufyvne]fzfjulzebpsphczby[kxaohggiqnjpdbf]bsjfluhncewudkumaxj
+mvjlhovwivdanexv[iaphahshtwtnhoeoqsk]syolycabjeiwtwtec
+ikhcujftlekmcnmcy[ubsoslmlaitakaqb]ruyiqnoobymxiim[ppxtpuphuisxnqumd]qxjhzfwvixjjmfgaqej[bdjpilcwzhqphfumpny]itvjttbjsbfmxppif
+xhemwtnqvfankrccdtk[bbjzsytqxhxcgtedp]ksfozdggjvyvpoyw[tberajbwhcirnenwv]juojuogrifenjsbldn
+bczvqdwkurvezjxgrg[yjvuwvfypobetomm]vtfujjaergrizoots[snwcbtqylvuhnxyvb]turadiqlfjvclpvbweg[mekdlejerxpllbf]bgkveafnrceyxufsqj
+duqeascyrgxyhlspebo[kzimyrleaopbbwmbi]xsxqyleqvoscazopte[debdbibiuaosfdyioum]vjaptdzpitqctukwhf[jffyamdmvkrggbe]qrnqpwcdoditjixsc
+cuxdugzthpcubgw[qjvtzbgagyebkobkhf]tsbcghahxswropcgj[yenmfdvoxlqekjsk]kjdmhdgepvdoovzvg[mafjriyxqtotmhxgvty]mdyayljihzqxhiga
+ehkhfoqcdkpyxeum[xvjaglxwocodctbzj]osufidsaijsczhtfg[rvmapxxierwnjkc]pgshnzbphxdoaitou
+wagqtjalswmbehwmuwm[oarjxyzwyhxzhpgilh]qapupwvuflcoryf[hmqhnrjiahzdfbaz]kuprvbaykjhqagnl[wfxatijeapdinkt]hadtvdjbkdduycdut
+emfkovpbnkaxykrmwjg[otoxyqlkgczzivgdt]nsvpzdvcbsvrbpo[vdfxwihznfpxlbsju]xbcniikjhgzelav[opidnljejcjawbikt]gedgtkiksnpijteviu
+fxbpujpvuboflfip[dogcwovzlakonhdyww]tkzftiqvyzumadasjtu
+rqtkvmbmqtdrqsahsdy[dhaassflbjfdslopp]zetcyybbahysvheand[uncbkqyoidhvxjf]mxqjozeotsollwolhs
+pxfqsysywqfsmername[yfcktnozutkhniqyp]tjzzakrnlxrtscena[bitenzjdqfopqevroqo]zujogbgemdxiaven[dtxlpfkysfcivyrxqt]fsgjjgzltbnlvdojqvk
+guclyozvgpvbuhktwbh[qmueutcpmdebodbilp]vglsdvkxogzhzewjpl[guoovyobczavohc]jdguogegerfiwrxthui[hdcvpajqgpsoxuoawmz]ztwnqkdjnnwazrdzpc
+llcocydhktglycn[aqvpbqqcyyjlfspio]bfwtqbvqbywnhvn[bdkrsfpiokzttiazuaw]kchhszhegdhxega[mgfuozyxaqcxmillwlx]mzcerkylhvawvyujx
+jceiyppxbreywlqlc[fizmzubzyefdntbmd]bmholmqrninpjuux[wkbshvxwlfhlrpkbk]bnqhoqtiqqpsibgykwd[ajvhuevpxmsrjrdwt]ejcwhcsechltmxlycwv
+lhzgbwzjykgdqwj[ksxhpuzyromwycwqtmi]fqkgkgvjfshsltg[ypmdudbfamagwadtia]nxqvzfdgxlwbbkrssc[zqmfrjzhsztnqbdgo]dvzoywqsqizywigsqsm
+vvnbnhvgcpquhzbarub[ufazesxvliazvkcanib]agtuglmgoxupumcispr
+mtpdvvydctgradgywc[mtpimzrgtmnlcge]vxbxcxjkpticzboc[ffiyihkovkviqjifrnt]yhxctiahahicybqti[latcrvinlucwkxhmc]ajivvpmxwiypcjtevwh
+dpnjvkzcoyyzmgvvs[gtjdsruwdhyukkx]qndpbpmhkdngjmab
+raugsxxkqxpsglitbj[ncskiewbnqnhxvojfx]qnqtemgvotsgnlgxyb[exshfmlaagkpxueykd]vgcwastyxsoddgu
+vtmkqugezjlfpad[ljdytmxdmcfjvqus]zwkxtirtowwwoqybn[wwbggxlelxpmctsyio]ojizduyxsklhvogj[wkjkwbzdmusrmnwuq]dnvercuduocxwzzqvc
+kcuaibmbtowdpkk[behnytmljmvkfzjzx]vwmeazoaavjnyopedp
+jzmgdckgiwbhbits[qapkyzlxkcinhakr]zymyymfbxgiypcn
+kbcfgsoqgqvurokxs[ygvbgzijbgfeylxvl]xsjucuevvfddgod
+unfolwpdrbsrzgoo[xcskhiayzcpeegqfoe]sqhinsvvbcdboctc
+yclpzeggejjnvkssg[jaxstjrzmutqmaqq]buvqcwkayhypitxnmp[hpxwubjyepaqhyhud]qhqlpdiqdhhgffsgtqw[ijhwhbvlbixaeywd]fwpyiwyrgoquoeuicxp
+jwgenomewntwyxiawpa[eqcukoqwwwaruuaeoaz]przxcbqvsrozygtcyl[krwnmcxmgcgfbvkj]pcifuzymidokmsecl[wetuprgdinttljgam]wiiixvydbevhtscp
+vzuukbqyqsivwpeeygi[bsfyvyrjgidexcfzq]wyfowikcidviqqnzcw
+nsvfdglsbfbwlxfpfs[hdfyjgnwdgeropdfian]gznlvhnfjawhokhugz[klxeguqtsnydunmtj]gaauhesdugovoftjb[agqwktizuxyqgbvt]zhbzbgfwnkahvueja
+xcnkdghtgpxbfefay[iekwzcvfquaynjpflf]rfmwtjyxputzpsgr[rxbiyhzboydmvufaz]vbibxkxeazvkbzpnrqv
+efxnnxokdpeqbimle[sygsnwvurqpxovmfv]bfkvfubmjyasmvc
+pvyunauqgvtigep[ypayrmkixxbagcbawlh]gsvqfsxbquttcaayobo[cwanbliqbdzlcur]ckdwzoeeeldqnmpnzta
+uaxiegivsmmvixygiih[bwxhotmjiqmiffwt]ifggldhrjitovzh[wtrrvwjwudasapqdal]zegculmtzsyaxytuhih
+hvikzocatynjoxxzjrr[yowwrajfokqlojraj]gvquwhdppqvtcvd[sqcangyggkdiljktl]fpjugbjlanzohbvfylb[fxdhqobssfucfmeaz]mzrtcejhidkqkpqc
+lcgelocktqpqhjgon[vmfhipgnrbypfellki]bqgdqxjnlynzdjogpbk[ppgoudyairolaaomp]utxjqpmjzchqdhz
+mtfryyrtmzzlooy[qltyhniowpskiqmolx]nuxblfnfrcqtjqfbzi[bdslgcpqyowecpp]vlxwrojvicfzzzfb
+widpcxggzgbkofmmtkl[bhvmncpisdisugtk]azxcnslcqsbtyufnt[lqwxnibqiwuwzwkf]iqnupikuhmhvvhf
+amceoqorrqtczywlb[znieihkpkxkvvqxk]rmoexicvufbvzrcxisb[nrrbalocuvporahypgm]sapytlndnufcmsmnl
+ldbwysbqqkcizwlkqk[kxbcvzlolkrtyzou]zsqlgwgtcvtkmrc
+bejhbhwlnmysyqgzk[gombhcspwwomoqoprog]zgwpzkhgbgaveqpe[kldisefosjggfqzo]eiyzwmdoqqsrpekrs[yoblfghskpxbimnq]ewghiykdpitzdsydl
+uxdgjfelalnofqouoee[obhlfmbrcdwvtgs]hgtqhblpsfyxxdmruq[amhlljtgsqandpxg]uftttypexliymsri
+xwcoczwpeprblqvdsze[fcqzupldpqdpibi]peaetflnafpkrqz[aibobqkhvfzpwaajxj]mzlrkrfslubibbu
+fpofuivhqvybvczq[zbhaursvrqknspvj]zlovzphchihqwko[bxcpnqiijtjpypqk]hmdzgwlnervibxuz[hxskzadaiwuhkjrvia]fqtcewytffzarnbdid
+kqzfapnhrgdwnrxtwcw[keiqggcxbtzwrcvrvl]itnkudvtbvfwlcvguev
+folpqmauykgkbtb[sajzutpltmpwuvzu]qgkgeonxzucthfluwfz
+qiniyhvlxrpcbscgf[mmjtkliysclrogfxsx]snxccrqkeuqchwfi[wbbptxydvrbgemquc]uyqttlcltqvqmhu[sawrjbeubszmuwsjuj]rowkyiykcizmcgha
+xafcvdeuuhyxixxn[abpngbyvpnkmojksc]anahdcroysddmoxf[tasztimgjqwkkic]fiycikeddfoyafacbfl
+fzmscbkkolwovgnjeb[qzholetigkxxmnmkoc]ffztdtemtdnustwuu[zjrqslegqkywtcaqod]qdtqbyfhwehdezedf[qqvslpytqtjuzrkc]knqvowafliildhqxgex
+hicsgtpdpugetplbufu[lzlwcptzokxrsxtrl]smxnwfvtzttcsesdu[wmucgluptdavbca]xggqqcfaxxcagagkx
+hwnfzlhdbchsmjwaytr[xfggqnxtnpdjzuyqm]efiweqzxmsxetmyjnhc[mgjnkbfmmvyrwyocr]jhviqqnrgzjsdmidsjs
+nvouetegmutetgw[keqvyocxdetebkcgl]qfhnyfdnjqnklpad[swuvsfhrnzsnatb]zjwqmrmphlgwdnms[hdlfprihcbcemfn]lrraefojxvtpxljil
+fowkqklueytawgdxklx[pmrpenfrmskqjttdqiw]ttqjijvoxxfxrrdve
+nsyzzlnqjssmirvejh[gpqbubkrsqphkdjwg]gvzcxqgbvhopkgy[nzlfaemkjnuwvhul]vxdiuaimpogvtkx
+pofmqefryoxboubl[neoxktodwrswfsxwruj]frlrumshrtcllqqf[erlodpkifgfpjlbl]bbfocfbyqjagesavoc[ajasttvajmlfwec]enqqcyveejcayzw
+rqtdsfpdgwrlmfj[nmeovqshevzueyvd]ibiplfpvkyxvacl
+wtvwzmpwviqbzol[oqlqunyszsyebxbm]ywqypuyvaiegekaok
+ijcorxkdzocwisjb[qvcjrwytrzftjicua]buuniicmziszwzikph
+pplaiaulcciebujjsx[hlyeskfzscwmeqss]tuuolvvbnyymfmo[trsqblvfyagxmgtwfk]kcigogbmkzsjlsrj
+dbsqyxlovoghbra[lwqmeeclsvfsrezsed]odqamvyyhsmctpqegav[xxoamahurojgqse]tngvfzhoprhrxsccgnu[zwwglwyqrieusmlfmrv]tzfresqfmfspigfeo
+tmnutczqpsydibk[skiokxeqdgilzjq]rfkxwumjpjulbkiz[folgircuujlcjhjqxa]snhsgynrkjecrsu[vukuvrankaiilqegzup]clzyhjlcbrfdbjrzlu
+opgifufncugjrflllk[epkqgmpkzdijtdedk]xmvotyghoniyalmmg
+ovtwjnqubjphsgapb[cnrcpnxrfclncasoeka]duqduyvmbzwdopyxp
+imtmstorxxvbvmz[muklxeyazsgitgb]sjuudyrlbxgtlph
+zbnvlmvzeitlrvclu[rwlyxjkxlvgeyfzdl]uzlfzyvmybjonpqay
+cdxryezdoiyoopuzgl[rnmncixgvbxromitr]jgqlptcrlpzdrqh[sstvgpzcldcmoslnycc]cyrecvckpuyjqifsuil
+acjvnpfqosyvnvzbjyv[tmnczokfkjaxcvwjo]cszegpeuzanwadl
+knqqmdktrcvcikcfvcg[lnsoisfwtfpizbpo]xfxuxthdxsekjpi[qsroiaojvihodgq]jaamntgiaqvdasnz
+mqefdyhtbqynychpbh[rrjozrtcexpbrpvfs]dotleanpfblcxfltod
+coayqpuuvtnwmxzhgnu[fyjdjtselprfevq]elfqjzpryzqsyqykkb[utrizxtivhakgjoeryu]ozeuxjmcorkcejprcr
+ybbgylmtmhxlhqizp[uvknavcimbacgtcaq]bcmdwwkdvfnmnunyp
+xfdywwnnhzqqvuywq[drtdcfuoxvlflptlca]oimttatgiboynmu[sdgkeffjrteokyiby]tdiaadhkqdginrtqpq
+fbpfhfecwfprygkwu[hvqikgwyrdwtieahmt]dvtcvnchfsienpasxw[ybkvqrxztwzpsnz]aecndxpzpamjkanchaa[gbjwjnipsmepfxpee]wqjnfjiezpzacmgf
+adwjbyiantljqwsixso[wpjjoobofoumdxgrxv]rkvrcmmrlditmjtsh[vthldqtnlpjrqbobzs]efwiuqkqzfdxyhvgim
+hbbvxnhhxsvghuh[fcrgvyndxojknfr]twczivatsbiynqjxeby[ckqrjoolqrxxjgejzua]omspfwphybvgiqpsc[hmnpdaumzrmqrti]sdysxoudxhpllkknvq
+gfussckpoykcibjnoi[fqnfbkgojenspavpz]xqwvoktikoqyzpofg[xhdumbvmqllllthhsrv]vattqhipurbfvlk[hbebbjewrlmxdblgq]dmdhdbknmkouvie
+tupwpbmrvffvqbfiw[rqpefvswlzjnphduk]mvafdoftaeiojrirv
+bawbqabxqwpswzezv[cjmoppcjgifyfignuf]uawfxptpbgjnqbv
+sekswalpvwmmczwdxbf[wmcngumevhrbffuzwp]tqwvmkfngyrhgknowv
+dovrepylcvtomveqe[vzzskfllpjbvrvrkryl]byjsouhntlopqffti[lqxrgcqywryeexyao]qsukbxhzoifswmycw[rktzizqtdvetwyrchc]vtsdazzrpipfcrnxbk
+ydnkchnxezkalny[wlfhmxcboamfrry]rmzprrgselhmfbeamf[dssnudvuvyhvzyacu]jyzdefurrnaqrfzq[rnndewpbutqgejcy]qxuganmeckxcpdtd
+xhwdvxmfxmktgaz[qfzqjtuqokjeznwalq]ddgmotioparmkkudqef[pkgzogoaxvcwsao]cyebyhigpzgyclscf[qehxqzuztsluyweopsq]tikkkgtpkewkzzkdu
+cygqebguktathghp[qlkscioiowgqftpd]ytftmijxsnhgacfmmf
+ccuocdvpjktkdceebi[pshiishnrprqohwpt]bubrhtrzuabpzzvbwrv[msdeugbygsvewfxco]nzavazcgkniyxva
+coscymyrfqgisrge[oggmfoqevlabvhm]xfyhzwpfzhhyhimqkhz[cybjjylavqoqjyyoy]igzwdivoxazgajmiy[kkxkhfunkpsgyvwp]isgotyzlmyzfqrij
+vaezncmuzyyjpeomif[lyvwvohtlkcdyuxze]wzdkddeqkxmqbqet
+yxcqysoxpbwjlqjdp[jinwxwcdeflygawd]hgdgruqilmuzuzhsg[ivpimcyrtifudwjgso]ostoopidgdzcrzzyzts[vvaiuzzuzywesuzk]ccmdnuyihasnldexf
+jhpygjolrfstkxwt[krdivayaqwfuktykopv]dmposdxasvjkzjesg
+lcprcppxkrnwuytdt[wysluivwtmytfgqpks]orlmxnkipofpsdteaa[vroskwwxeeylirbkna]zkeahngpukldeszwuk[harebfdcelqdbfemgo]usisvvczvasjomnjrip
+eybojdjnfockfbsdjd[xjxxevnxuwjdamien]frogttytivtegcy
+rezxczwcihbkywyq[sdzzflizzygfiovwyw]jhtiwvelkbaqhvnylca[xpnwnmqbaawlyqz]kftcwdejxaznztqsbhy
+zitlyztihmeogushh[wpsygveulmddxdzvwvt]auvwghiyvkvfxyzf[ccnkvkboczqbgcmekt]hkqnuaoeffocspxkck
+ucliphnwkaxtwgnma[wxkbcziemdvopzeq]nwxnkykbefamsdo[lveynsoldnjkcdn]kluaaaoiqsepyqfz[bgjuhrlfjgiyngwkwgj]ofjimzheftgbbyrugn
+hshzrytllakuifsbuap[znsqxjzxbeewshkb]tdiohjkqimfsaijvmvf[wxvmhzzkjopfxhshsol]qgjutmxlputvudf[thwwxcavnensivbscm]dounftyvyaoguqzy
+hktpfbzotlbrgddcff[adqmcoiraqbphjpag]fxxdcjqhwkftprk[lfeudfsbvnqjvywynfl]whirlnojvbkpyndhyv[xpypetlsykaucaibapl]gcpogvgqrgensxdeyh
+afbiuqpasfjkniuw[bqclbergutdzfdqhdpm]gcgpimwjmvopfjhk[geztaacbsloyevwikqp]jjmlssrsuxmhbtnq
+ojotaeydgumtjrfdtam[gpkjanckhqjvfjewt]zonzrwxnucpwtrmqyhv
+llkryzvclmpozerpao[gfrhlpemunmdackfmp]fbntrvdilgbposhu[koksbsqnmtfdsyifpp]eswrneaxvurkzfs[ixjekbpjqsrhnpgw]pppbdmxsdflptotr
+vbmibdiednxxbammtn[gqvlmbobpzpiuoda]agjiighkbopkxvwakva
+fnlgxejzkpocaonnloc[ojrecrvcmirtehjfcvi]mrafnbifqfcqxpmqdrb[obuqfqpyrkeinweynd]qceebfqvcmnowjanh[ejpkcpwkjfbvyjmyzoo]hhjyeulunsuagwq
+nubgjzyeuxvtwcc[vlpjhggsyeiulml]evysofvjmwxxazzr[tapuneqjkzgtblgy]gvbvijhcgtrdsybt[sdufwiyfojmptfruns]zqzvbotgmrcynfyq
+ibcblmwnlhhftwfd[ajuhvgkyaqeikjgju]rvuwgrbnjxvbcgdpy
+hizeoqbkkesksvtjotj[wkvmcgctdzwhzlubt]aegcgfmdneprdbw
+lqyvebgqsrsfbcdccps[hygatrvziszspyihy]ratonoqinqfwcmm[pfieelpgzrfzhdffhx]zwaytmidpntpolajcg
+admawesoilkvcfx[rqurmchqtkuifxm]tliyyitqauzegwst[zwpbngnlemkipcku]hpxfncvznjgfglvugk[ruinbrosnwmxdzav]adbvgjbxedbmxbkpxa
+gpqgezsbrdmqmeihdr[etboranxahpniwzr]woeyirnlebizohoa[rufjzeicrsxgitspt]gltoxcqgcsnvlys[dcvxqvoivyuxxayd]zkxlasittnitmoisr
+acoxthwyfwbhszfoz[wphyzlksmfenksfs]hpzmfaofkobjpcdxzs[sncrftlydahuqmuvoqq]ojvuhabayhrsynq
+nxtmkatkddomlbnxs[qdqxrwoaamrztvkzq]ycyqxxaijhrpzamcbh[japizeqvlqsmdqygr]xhxvgqmbzgomhsm[kizldaqvytagvviondv]tidqihojfrzvyxy
+lllcbzykxbdewnyff[iomemkjmyaqllvcx]vjvnigrbpnhdrbi[ukmffsdgnyqxafwstg]ralpevvmfxtqbzyii
+vphviazdmmvtcyc[dcomcirqycymvqkm]meeikjmqliqraeqd
+jcgueeliyoclqera[verzkovhghnquyndr]lptflbxptsugmbhvf
+rcdghcuautflhme[zngtjffrvagsmdrxurj]mwsuxjbytlzyhinxyr[cibaxfqjdkmdwxr]yikrelnmbneqrsg
+jyvaeqjealrbvbvekn[yharteswtwefyedz]wosalojtbxzaujpiba
+cdfzjfycznejinx[uhnuxxhxgipoujnarw]bkwbisknvmurfnhp[jwbnvuvlvegrddzf]bkeykrhmjuphuvoza
+aalmyxywwvbwwttad[daxeeneiiiupzvqz]cqcjxzindssjrqb[komptxyxwgtnuedefro]xfbjflfujclbqflke[fpatdmophhvpcmwfj]cqbuduaifbuhwiy
+kogkhuakigjclxbjoi[yuidmmdeopwzvatxc]qdsbzscrwpmnloga[xsnwctwrdpgqvggoian]yayspjjhhpdsyzkkzx[qbttlvpkbplhagtb]ndnljzkxhgdvclz
+rojijwgcylsaspmmrdy[jzptmasniljjjusl]fslcazgojebnrrrz[ybcsqnloovizrxiwal]ghjlkcnvkjjlqodusp
+egzqbmomtlqvjfo[cdarustihbcqwpfpcv]fzxqpzavyniyjbfvc[wkmiofpbdcsnbtj]kmtvlxnlvdjflivtuge[jvlzovzdpwxwbcak]hwbtpuolbupvwfcbh
+drzhzwluzurvcjogd[haakukjmwslumvgq]cmwkhsuahrqxfae[kugdxfrtkjmyyfheze]dyxxyffqsfctugyca
+mlalvviidgseekfkqtk[rmltlzesxldtmsnyn]xdqfkftanryqfqrqkhc
+vkajuyjjhekfhmwwek[uuanfibpmdbwxesfmsk]dxpsqnnmrnspifpcyts[ezmjkdjacskqhhbaupr]wkzxoqszqigbajudnq
+wmpzatzujoibyjdle[awbuzjartnsdxfqtlh]votzdrynubyfrdip
+tstuekiwimhtizzlky[trscvkeiiriseqj]glbwxwiwdqhndmnku
+kjgjcnoipwnlqnk[hpukxdqokakrgjgjpk]nvinvznddzuhupepemb
+vuawkeimjefqtywj[mgdvjppiouqnnyhzz]eeemepklcxhhfot[ktiuxquqhzrojqo]zcwlowvczfjucqeo
+zatolywcfoplujidaz[avcmpullpablbdhusiu]bkwehsbzcysrauzz[tbgkmrwkzqfysfdh]anakunhzskapvmq[cqzomvulpzbizfuqug]untygoozordiywrnkm
+ozynyagffvaeava[lvsgzdvrtdifdoxgvwy]pdkwomqrhfolkmj[fhemhaolmihgxlehn]huscypjzuujagfaqk[deqkgecbrdfhskujqg]grknbktwdyznqgrwm
+mywakayudrxzofpri[qlywfoydoqmsmaoygp]xpwmtcqqfqsmsys
+sdwltsgbumfnbqq[irstsqsogmppmlmkont]lrwnbdnpkxgfhjeo[eqstbbwumfepxoqaszs]fdrrfpfiotaugunbdrr
+bappxujhicaqxhwiaoo[bjvhcmhrnldlwyrf]jdxfokaxlkbifuwyv
+jlziyvwcuubpsziikv[mvkolefxtgoarsk]tpixifdoybzfwnwle[lpbkitwthyxdbvwflp]eyuzdxvhuukuiaqfp[xcwvlmoqpjnehwudh]sqxbifjmrgwknsno
+rblicwlpfezecfhati[aqqhagfhathupym]vspyjiyytesirim[rqjyqiviftryoyychs]voksponpgjfuwsp[tmsccufpnvjdtgs]llptwgpugyjizqfch
+admwljcwmrudrrph[rcxxxswmdlllfdwrk]etyjbtmryjxeajzccmq[nivhwmfzjwaspuon]tslmnzikhnbtqwkf[xnwykihihgkletgdy]mrtryzmlleorzwpi
+ibgqtdglmjgcdfsycxt[ruddaxuheyvamwyi]neoneshgxmsbpydg[ytpshrjgditzqmjdlz]nlvhgtzsbzoskiva[asuilfpsgtgyftgtsho]xgoevzdtjemapbnady
+appgubyezsrmwec[wbqyvobthbuperojt]gqxsjlchxpwvdfvdf[xlndklktmbpjkzuo]molwavhkvungdkvwywm
+jusgjqhnjemncvbvy[voitjezdotclvwaggg]ffunuypbjmopbbvoh[lhufstqbkhqxqiworpi]gnhhneydiasvmbvbga
+hvboappbxdqyjvxqyd[yukgymhpumetulsznf]hgiqjmlrezzsfndrx
+jkovbtabgnbztjmzsoa[flxcmdoflhlgvaio]qjxscacvdykhkxclej[taocvcbcyfrjgcxlkm]aovpiymrcdmebktxwfa[coviwkpdmukcsixdob]trjjdhlgwwkwtegkqmp
+ibnaxwwqjgtgxnlax[zozdkkwbccwdbvbpf]dwuzbcgeqfepczlvwo[pmlmuysuwyudzjam]pvhpqtcigtknoqxlib[kvwfykhxumzltcxidt]hybnroedkguawhgl
+xqwhbiiflggraco[uwhisdtpaprjfji]dexzbtghefojvtt[nlhtexyhufqeneytdtu]fpskbqhfhavnbkjxwn[gtxmsoydrotriljoov]labmxjlalzgybpdjm
+ibxakiwqconeyudxj[mwzjwhmnlaobsdy]gvxbmnzqbrzuorla[dvbreuhggwgdtbjet]hjrvpdrakncsfejis[tstdqmetsguihzdws]ukllrzriimevvsekrkv
+ztiyqybtvliidsq[mvhqxpqunpsqouvgrbx]qmhkzbqhemycwxeq[cdadaodqyhjhelanr]rtrnroumhiwdadrbe
+nswbgqjuxdygjrihvn[mkznbbryojdlhwee]kccwymwlzrsilyn
+sebujequsxstufe[romzdeirdhctzkmemwt]vqcobpsqzelktljh[twewiabushguyyp]mktiojirfewuoacey[tgnliawsrpkhyko]kaytwdodmxqandynomu
+qvfoyofzmhctntofr[xcokguepiaisrpwewng]lwwzyewekuamxxlepz[vybjmfsierveheb]bzvvxsdlcohnpmgir
+txjecoixmxyskgactb[tvgiyxcbgzkdmgb]yvjfganhyoguuygau[vztmvqrrheqkzasss]mngxndysymgybqw
+ptprazbzxzrjpnrcbko[qtdvwjwftefqzaw]ajavbdsfdjghhismds[vvouytxwsxpkttqr]kobwalobjsrwmxz
+ucvupuxupiasbzxsuo[hnocitmtlqgttgdr]qghjdvyrttaklumszdi[oyeqkgycqizvaok]xpnaaapzbfqdzvcqhr
+vvjibkoyadzluivaen[cesqlbhxmigdxphcr]ztmuzxnzeprichmdsc[daemwvspbbljrfc]jmqbyfpmjcddlepf
+ztncnhqvomvfnkhca[ohbigcgrevrnpvuwgpv]lnjucgcpghvtzlrgkh
+nsdamwafqwcjnslx[upwtncktpxkvkyhd]smtcegxuoakvjrl[dhvmeqrfgnbwqtd]zwlvwesmxdcnywjdb[whrrgcaujehwqcf]ayjiiktvzvxxquszmh
+vnqareestxydfvuvj[psgzifyszldodtw]zkrympmklegtsstov[gblinnqlnfqargqx]hfcchypjbzvbleabbo[xvlxasumenqxcdgzqo]zyhgaickhrgscmo
+jqaahcqcjjtinevp[kkntdvvdghnkloliin]zmrsdzabbeotokuz
+vnrmthshyygudsrbu[yjvauysxhjhnmqenmkd]jbjlrunbjbzvilmyqf[gnoejrqddyzsdixecs]qipibwxkrnbmdgtevfx
+uoqovspbksjvndhjz[gntlvpnmkbjcbsesyk]thzecqozlhmhrpm[ebvhbuhvuyfudyeyeey]zdlhgafvupyipekqoqt
+hwilsmnzpcjvpyor[pmphksrtsuqgkdqfyx]psibvhgullieqqwyd[uqesmzorfwbvwgkiu]hlxqjuuflhxlgrub
+dzxxmdpesgrpwhw[ohdfatbpppptmdyia]pqxvivkjxrisnmzbrl[iilqjrtayjrvxccs]gwfohsvsvsldpwaelep
+vaenounqqmpnzww[duovdncntfceyoqojlv]qttmppevxurnlzde[jhwuqoqwdxjwilrgxil]ehuvfpawjlrzmssbzkm
+wwxcidipvnqzxsvhaxw[oivkplzzdeoyqlemho]qthsqnpnbraqqkeyvk[pdkqargzfikxoxwsimn]biqpfsweppknwjvuwx
+yefdguujlfuicqqiq[hqlabsggdampkda]tccxpvlmetflxhnd[oqnlgkzvzbhvnzzwz]rfugmbtihisgdklb
+cmapvofvmxpioycw[wsmfasgncvdkvjnodyr]dkxkldjxlpdineg[omntdlldszepbdcynah]swcjxnbotrewahi
+awbucpjznymkfhjaa[avrrlftouhjbnle]atvuoxpckhvplxm
+wfrfilbmvnfdjycnlsf[thxhuqnznohekfern]ndjiygqshnkfehr[jpdgoiqcdevzyrywcp]iuqxgoskimjzasbvsct
+crckwgzymgpzhckbgct[euhwrvuqcknwnfwokiu]muiqtteekeqzajvnuc
+tljyrckyrcnheftu[xshakjmkjvzulic]mrloxmdpqnxcjhnwh[yyqdzldmfgsnmph]lwlpnskgxbkivqku[bwyxcdoyizqjmfvmc]reyetuasijwucrgylh
+zkisfuqufwbhfklf[nicopfmlcpsvwfq]nmwkhlxmquqelszgbe
+cqnuuhyddzalcxc[fjmqzkljrqjbexcxxf]pbjsvyixepnkthndhb[xztvuzlknucygyvegxp]nwxzswdvaspdufotcxs[bivsecxgawosnflmfd]bvdtxxionieorvecr
+txqpvnrfxykothvao[uikgxsmnyxwlobod]tddprkiwjtdcwbobzrn
+qjgftnxktteviik[hsnjrychdzepxamtfop]golzdtnptijzmpo[gfgevfrczlektwaohmu]vauncttcwnozkrwc[ljvbawzsqbknkuktnn]inwckpvsipmunmpo
+kqxvmryochlslekzhl[ivuyfsoefnqqtwspxtu]bytaafalzlqvjumuleu[apezlzoaspstxvknv]mnkfbppakmectmiafs
+vungsqgzakhfjlbuwig[cgydynonrrgfswomgev]lkyqpvlplfsmznc[kttzkoqpeplpfaoheek]ssijcynyhenhnwvd[hleabsbwqkqqnvdd]xbbxdphvgzmnauj
+rxweekbgidxrpbcxk[zvguddibzffxqcmvq]edhnueezmvxinaxyo[mqhjuhujxklirvkm]eaozfcadmhsyfpoj
+rcdwnquofraczluzh[gvtnjtocgohcsiswush]gnajmbxnrzppwobfjta[dckvvzvigupevbt]veqtchjayfclaltohjl[mkwsfnvdltripnzdkwr]jhdwksbflywaaul
+iltlipfzwdrsmefm[brcprzzhfwsrzbk]dlegyxlpizwtlts[fcqadgpocjjnahyqm]htwrqtzfxoeamiqgeq[utrgqiasppoxrbhhv]hwkrxhaxxtltgbuvj
+ljimkpaohzhoifdaiko[dkjxnandaghzxflymm]szzkmlubraphtnokpcj[irrxpfhtabogipufkev]bjucnqsbphjhekfvco[vejyxqrtfxuxeuelvmv]muygwodxspxrrijc
+inovovgduyohxdw[tbzvjivtssmlxyc]pimyxafhdeyomgeu
+ivahljnswgwewyhhn[jvfdvgftpukjcny]rtisgwgamadavuw[lmwlmlrkckbundmzjvo]eqjgikocnpbjpdh[mdpfdbxenzwycoou]uelglssvxdcxlwucz
+zolsnrosfihzzhu[ravlcysbjoagcvaacmk]czfdqdbrlvweyyvbq
+vktqafvmirobwwhtr[iqvczcryidfihypuz]adgkyomqrwfucufmm[ecbtnwriqiiaurzkn]vtyotrwlidvraksywke
+oagqrhpfnkdvvsqemp[qsjyvadkirmihtfezev]vuuantqauwqrbyzxpev[mpaqvjcfntbdcpdi]ghgstpggptgbvwnmyiz[hghmuvsvhqxvxmmnx]owoulisjbqpndzgt
+yyyrtktdrrprfdtbyli[tqbcxefwdtzllez]uaixdyuensmvobo
+rginebxdxtfoudqwqx[bvnzfxfxsztzqyyq]dfvdsghoihksjcoccbe
+avmokgrhvdnoptv[ngynfydflwspxifoi]lcdqccyarzcasxrbue[navvkjotgujkewhrx]ogzqcdvefknpghfjssj
+sshuolwwobwchug[cwcurmfcxqblopvho]ghvtsqgltvvlsahwqpt[skxuphjregpzpqm]epmegfynfypbewftism[mwtakvgutsuppqz]tvapecuvnpedscjkfs
+vsqfdssjnhoineb[tmcwmioejrnbdyrq]hlclokouzhvmmywskkk
+zuxeupjvtrzzlwezm[gsptwvqfzpvkevapsvq]pvjuezgybonsblmmxdv
+dsyuvmvaisuqxff[vmguqxuvvtbjrrva]ivytyfdovrfmzudyzcw[kwgjymkeadjgvdvxarz]rpizkvgpobjriqutyt
+rpetcixepthhnydtsx[dvivlhhlgbxftlw]ensdqrwytpwniviwh[uierkmawdkijrbrbb]ywvqqtldiulgtft
+iruarpzjrxupbdovqlk[cipcsklubepettbee]jfnvwjcgypepsbnauh[ncvfofkqfotujbat]moqzftmyjreztaugkij
+uqqijwordoicegmn[ihceutxbgzatiwhtd]hxqgbplciimactv
+kthovdomnavxzkrtg[utmtbhgqydotlxos]rtwopdppoocytum[ptdpdrndjiboffigipy]fwxyvpdnlhjofwjtwx
+vitzjdhxjjossygyje[vzysmvvgddhvkufqb]fhwstpatifhmyespsay[mrpnqgygncsiwial]cwbbaisjnqrpuzca[taqkhmlvfdelcrzbryp]kwsdxlkmoplziobgct
+iwybfvkucobqwagtdf[nafgfydrpzzdujp]nzdzwcpazorvzncb[niuturhwvakdywurves]txickuysfxeaamhlv[kpiwhdphpimfnmjinua]crunehowomfdmznrc
+qololsmsdenfcxmtqxo[orjyxjutzakvhok]wgcgzavspuxtiyhdds
+fvzbruyrecjzobgjfnv[tfnighcrmbgeklgaq]eanwrgtehcxvxow[hrmkbicsuekiicxw]pmyfavysbfzttzncxbm
+frjvccazhabvndxri[wrmbltymeeoqpqtx]hbyuxmlxfrjrzifpj
+nkasezsbfuldeolo[wshypstyfliqxplkh]nsoplkbnmiagngvusr[mwpwshlkyfrxlgcofiy]ycplnfgorpssaitngop[rtplyrqezwrwqhc]houlrclmoatskoufgti
+cmsmitcywtmhtimj[pevbzyuhvaqftnugc]rjaxtggjpjvayzmhx[pvfplwswzpusjzhom]jmaurmlkkbusduxd
+tshzomvzzouayvevgb[esegiphlwqwlkgt]letvbhxdhuzidevee[zngibooquknjqqxnxz]dtnugmifjztkwjpqd
+uuzovqhxwovqeki[ddwwgejprtbquodnj]nafunjrpotozufcf[lqyfeicklrejcwwrvxu]kfxgdnpvqdmvvitzt
+syawdtcaspkeubwty[vyxykmhcofzktwfex]fmevgmpetmzurpou[bgqqdkgrojeesxj]lhnvraueoksvtjz
+hkyhsguxgsejarhub[kuluosrzpmogndwe]wzqvcpdculcwgqldxm[uybwzbsgzjqfspayk]nysymudwyxdocossgu[usnahkjspekuwvgtje]gtjxtcjsdvtzwmf
+jiuygraiggbzoxz[wopmhgtzdwlkyzvfhs]kquojxccygvgujcopbq
+rmdqmtbvzoocsjddyj[mmwewpzkjayrxkortj]cznmpvsiqtjdpbgbbf[dfgdncqhajjrohr]kjsivnolfcccyijyd[smuudgbnrfqkxzec]zukmasqygzxrjqoz
+zvhafubtbxcnggnnec[khfuhiaikrpowmg]udtuciwamjspaojuks[wlzjqwtmrfrfxmxcfd]plaqjdorfrbkkppep[exrlzahsxksdqsllkn]fooqtqpmnglrwokq
+rilxjscompommcmc[qpdxzxqycqutfyj]xvoufpojhanaloymvez
+crvrlgjjpprknkurjq[tuvlylfiibnpkzmi]ghncayxzzrrhwfe[atnpozkssbyznplv]elzhtwbiernezqns
+yvdbhamisqligavziqh[jcfjonwpgcszajk]xdszcpfvefvmlduoo[vqszbxqazfwgrfazh]geltrpsnlfyzzxjsg[usmmfawdtvkvkcm]wqimqpbsojuimmf
+fsgjpguxmrmwxeymhjr[gsunymylqpnrbmiqyi]bwqcxjzweyndcslvxx[rhtvuzqaxazgzhhwp]lqiceppxpscreytystv
+zdzsidcfertfbeifye[vdttvawxhnsjirsifn]abpddikgqtsqalilwl[mgqwvkdulrgdgni]bqjuliwrgnvycgnvcr
+jrrmfvdpwdborgjxw[uqsuxsointqfsbunl]qosvmfqnyadjfhrc
+huekbtocejhhjud[hzglqavqagcxaaksxp]afqncrfalluiiqzfo[mdgrvbtzxdzaztpeg]lsthchkkrvofbaa
+lsehhfmwrfuqzewvxkv[rjrryjrjwhgtdifux]nnhqgwmoxdcixsna[wgburhmplkpkrgmpco]hrakazqqsstcrxupvv[mhacbkzqgskhorwf]fbobhetgehykvsbmb
+cjmaltrbirusgyoirp[eipxzkuhukkdcdh]iqyymukrkwitywb[dcvtitgqvetxqip]sldydwlrcdcrljhzu
+oqpgfzdkcrsrazei[geqerlvxxatddmn]igakhcntksmsttyqsv
+tjhfyftjaclsdwzby[oiinbkqwzmhzxeic]ehyliwwisegufbhh[sqmpgxuqhsxnzdi]whwxlqgetakchwht
+ukgmtuvowisscvp[nhzgobykdniheamz]ekflzosxwmggiuuudz
+sqbsxlbyunhhepfx[okuhhqbyojpkahiz]hhywggdmcojawfpvkhx
+xlqohzjcztxennv[cnbtlwijpkczgrk]pwxkxivbtxzovdn[bekntreckjtfkrsihm]ouowyjrzyjbgsygj[cbirdomndbelavpb]ujdrausbmqhnretkhtw
+jaowfyulkleymkdpl[yxwftdgbtfzugqnnzwr]ztmzcodybfzmfrv[sttkedpckbjaxmqvhds]fidvanwfqvpywervo[jtludguqxuwucvzcjmv]mfnoqzvgatqhvteacyp
+txyjtniwndqckudby[jbemysikizywlxbv]bezhcvssxmbmzgpo
+gcxfeqprbvpwtdnrxcx[kvhziidtwrxlhejxm]kxzumooacujxvuwsiui
+vvzhcfuecgfvrxrnquo[oqgutuxthxlcxhpke]liqjotlxzbmsassyxrf[colshvmiwbfjansdg]vggdkkyqrjvthtvp[dmozaqtceghrabasafj]lnsoewepnlbqvibyk
+keehyqsqydfzlqrqqu[obaslijmtiakxkc]wmrxgysajmjymaqpas[tqwlwdqldidsapjtzct]mjeqlhemnwupulj[xdnkrxbbtlkzeapnat]btxcxfncwhdqlhmh
+qwdiosimjitfulva[dhnypfmjunifrhopd]plrzlaakgfirzcccif[strfuwthjgfazeoq]lvhimnjpbpagrozczhn
+adqktintsuslnns[mtlbicyrgqgnxuhqcd]mdadfpkvbkvkaimvghc[cvqgxjplvvqbato]lbskgsbvqnvndequq
+brftuxdhebezivqio[yukrabpvgetpxpylxj]ldgifnehggvkdtq[pobhasghdmctwcgl]ccevtzwnziffjhqu
+ibeocesspzaammu[twfeunwtyqohdtz]kiknftbdbkwrzhrdj[ywsjzyncsuyykqgu]yqbjeqoftsblixeozlz[mmcmncavhecsxbxi]aumsmhzrbxpjqrxllit
+hieqiicvqswviniteuv[ubxwceioqqhagxybrl]kikxmdnftjiqazj[oyvdrxwqbljzkjbh]mejsqgnksglqmsfrlf
+zjeouhblfsglaxzz[efenlnptrfbopulk]tbdiezqxnkiwmifiyy[pylvblxazwozkdv]guaxwfuktjlovasatlc[blnlcbxxlcgddfquwgx]jkemembgzzxssliiywp
+juscmzarbykdkbcf[naosptvhazhfydzz]yflhbtlxgowuvmf[bdmledxprwnfcaflpf]fvjeubkojokjcfnzoo[bmmclnpuykellsdywvh]vibjnjgmtpoyvdw
+kqmrdsifaonqprpach[chzxtugxvhbjujlzgq]ffbjsynmytyajcbsyn[jsondannallzwhz]gjrnybnhyxjismip[nocashryyqnbsszebpp]pbugutcxooiznkwwim
+vfziparbxeibtccl[efwcwvbtlutmoltmrr]fjwkgsaambdhwvefs[nsrvprujruqdlxrls]ivmnrtvdbkumpiio
+bjweouryhlzxnkfj[uuqptwyhasahjmkirh]rrxwiqmpcbwkhzr
+bgdivzqqpztnswtd[xwfurbswsweduce]osimciokvwbydgqojkk[yyjvptlwdknyxnzpr]cqiztxdhugywyclvz
+ftcvabkblehqjyqtl[txwnhqhrsrnengcl]skhszkrtpljsgiylab
+ackokzybncuxpku[xzpocuamnohjypcdq]dwroulahreyhkraojf
+hqlijbwudkycvijqs[buaclznmftiadyidde]jxhkyqsoqbpxcjgsus[atcehpnpgwuchfzekk]rvyzujpclugrfyksmk
+hnrkcioqaeeqjrpg[cowbmmovdcsubwiltd]myuwiosvtmymgfyav[yvyjgtogmgxxnawpda]saqmtvyakacfwsvtxvd
+tyanupyqajrxmuk[bkxkehodeqxpclfebq]kiupgpdlxfvzydgs[rvbbrqbdsolzrgse]srmrovuaxvxvzmrmev
+pjbnyjsxcwyhjzpvqkl[qtgofokbciwsszwa]bwvnbcneuvipqaaiyjv
+ecxbamdgtlfpmqhi[khvmvwiorzygnitsbb]znripfwspcqgsdzosv[nfhgdavrprmveeexppv]uhzugtmfmipmaznbby
+jdoggfnexvkxovwiatd[xzxovisxynejpyxhfz]ciehyiyumbbwwxrc[nozxzgzvotunvgnhhjk]umzgdkvcwauvkzr
+qhdaymaijahfkqzw[mbjhxuvbksqtvxwveau]rkvgvfqsehbynbom[keygsbhockgurps]nzmhlxxwjlpjhzbhw[ujitcxihwbjrmrep]cbfpxvdzbljvbfpzsw
+wiuprpjfojcowmy[vmrpruwhtzbwyciid]ntbkrodejcrwavjfqfa
+ctqdkuxwiricymu[wexourbkgedaqbybfj]revrxjgaoalievfbj[qtvcolrhwgqtjesuvkw]ozphhuwwzzguldf
+bqpwrkyhlysqvwxga[ghyqnatqnccegjnkgw]pdgglsmagwkwemidd[fcddsukcrksifkv]cyutddgeoqcyopmm
+mxmpasrqdexjpqfapbh[rqeoslcvcwqteki]zpervmncbpfbhwaxmd[rnljbhhtgiyluaaetx]aycxgjfqyxhgeraelo[fukyvtlgjzupjjrxvt]peumsiryqvhwcsutrj
+nbdnniplhgrqkrcd[thcyuekybfqraxspek]rlwhyqiavfrfglg[luswlglyiuklvbuqe]mdgjepgjbhuyqkcs
+lwueejoqpguiciw[kpbyblloubmxdhk]omjurxlkfpsdwdmbl[qnifmaxwapfvglrt]vssmqdzlxyyrdgkwh[ljslsxolkkivoakh]upwkosogsrzzuej
+rfqbvdzxrnrbuhvw[wzurtnrnslhoqkdoaja]vuxsxofemkrjzqkk
+pqslistydhvgulggwbi[nipdejpoxqfmbeft]frepgyumygqywwycjl
+excgzlqtguboybi[guywktnzbmkwqrbp]qghuyihqlgjrdbuljs[zrkzhirafcadgqnifuz]medyulldvxdtpmqifpg[lsmokycxcicnxcyfpe]cobezkjtvpuqyqu
+aajcheqlcfjvktswy[lsgbzwuxqcbgicd]skvwyyeawvlzzfp
+afnnxrxdhbqqixcli[msrrsiakxynnwiard]tzanbapzvxtabeuz[rbyqhswrxrofedlykg]phyilynmscckkxgbhks[enrqxrwqiotksdor]phnmohcaqxspqhv
+pjyiwunebggfgpgsk[ovrxnqwfhtrjoxwi]lmkquysxzdebvarwfxu
+cdztgjverhjafgemi[aogtmpdwqhazrij]dmypauxszajopbp[sdsrejzmjvpjijq]okitpugefdhpbfnzs[jyospqqhusxbhfuuzp]btfwfpiblknocxncj
+djgkwjxzxrgsncwd[iuaqmffmnfklkieaq]agtkftischmbszqpo[conozrxbpdsuonpvx]mflbagusvgzybhasrlf[ntidmtstsedfdbfwost]igffrxgipzxzzyjy
+ahfhhpqofpjyshcus[lrxchnknzrjtzkgt]hvtqhnuzihgxovj[wbnqnjjnzltdyvxswv]bmppxzhzgwdsckuo
+ghwlmylxxuybkpmo[bkxcurwihedpwjm]ypkvoiavnzgzlkahlp[lnxohqbghwsnbeqgk]vsegowbzcrqwcsgy
+whzaoswycajecyuw[nwzgcizbidljdtoull]zfyczyjiqsqxgzsjm[nfkpyfcjwjijtnb]dabgzqajwpzsczrfzrl
+sitsnxvhgjjnlitqs[vvlbonwoskugqxo]bqitwdmlvnlcziltj
+avgdblmcidneynp[gkjdefhfakqungkij]eztuncfdkicjhaytdzw[dcfldbgzscsumjox]okqkplzsscszdsxejso[yihmpxvcbnsofchozr]easrxwgppwzqern
+cvefvhycaorfsfbmi[fkvzdrremrlrvdl]cfcjirtcmdphvfircx
+wegfumofnzigbnhy[oqkrudppjpvcuvr]fzyxsxrktwkgrvyiwz[jkporwybtotanposc]exmwkvygccdurwge
+iqfavtweexjxhdkz[drnsnxjziacormb]yftyjvtetmuvwew[vlrdviggcdfnribze]xzykwuzopkedwfqjxo[vnadxonxshmwhvk]mqbtnfjmhjmfdftwm
+odyopnscztauzvjvbfe[zpgqzgzcqclarhkkc]lfuvvhwhtlypbfv
+ogaqzpgfwlmdrjgo[abvqsomptscdejeyfg]rukgbtpqwyyvnvrdz[bcvgngjhgitweuc]bljvftlzomvgvmlkzsd[yhpnqsmblsnfgfnyv]nvnkvwwllyygxcdnef
+jlbnwewczmvtoshkwk[rmtpjyqhqxturbfc]ulsjqpziwqfjccmdpgy[neunvaltjjkcxvf]opuswwcrtqbkqyq[wzpxgeaohprbhvamaf]ybxisfhszawrtgsj
+mmrbaaqjvgpshmn[exjdqzgpzdalrwmtha]qrxggoccbehivaiegs[udbyzlbkpvwfkaot]vfbmvytjziptkyv
+pjtbkayljttjwyztu[clbiouysqsjbyjguhe]srltvgtetxcbkud[qnuhjnuziihtvqtbeyw]iccppmvrkzyehgiv[lldvqxdqvpcrizue]vpwqjhbktcmiyed
+vxqpmalvgeaxtkpv[elquojhkjsxpmks]dqvuljielvjopjcuvsx[yoklegkajhhpatv]cnfivppgdnkjzmrr[vnjebiwfefjgqzle]aqkvijxvgljbxmm
+lhkkzniihzzsqxdr[gvhbztmgmlicdoasdxn]fthfehxdcnyjhdwvsx
+sthxexgjpexecjzr[semwlxfagpybhblcq]ztkmocjbxsqnwfs
+tsswuaezqpzyevei[nolctgupccscwsj]serolamcjmqaawea[qgjyyldemhsqivwmvtn]rlmxvchrccptrgmmbko[qtiqgvilvevjvlkxc]jjcnzdjdxycczflslq
+geiglvdxwpsdtyt[isbkywwxvuzljpnv]djxvppprsgjagqtfgl[wmhnkumvdpikdjhmt]snjqvydpmjqutduh
+ksqeegpqcodzekvp[htprcliyvqdgjbqv]sqykqimpyqiwktnq[bfjsisougvnyjoyha]ixghemgcvicbedylz
+mwomvddjcxrdzmqplow[fznhevtpwhldwpo]ygskvziyhzxmtbcikbl[tjhieqjuukoqmixm]mgzzrsccohxzfgak
+xvdiafigrvgrckwol[gttxgvtlreruvonzl]fgwyzafvtwaqdwuo
+siyvzqpzfobnlgtxn[zcgxyzgysabhpvsviup]xfdpicxyxyjgxyxd
+tuyintcsfdyhfxofk[abiuiwquiscebxbk]zqazrpoxqqswycjwvk[hayvaaykkacbakpom]bwwhqzhuiitdaed
+ckkmzdomnglfwcbeh[avqftwjqckajjqe]fkpgyrqzygfcheoctfy
+teuvnsaipkrkmuu[rtiypvevtipwuelkzxf]xqywsffobbokraw[oonkmkqovksdycu]noxwpblcqqbikpbck
+bwgmejgaihdorgcqq[djldztucejcjizv]nuuzvdhlgqscyrjmab[nwcglzehbfzzvgr]aybubdihvypmvqmpfhi
+gxrmeqpjnbegqjeuui[iqpcaqmpavyeeqkye]etydxarxyxculok
+wakuruxdmenhmcsgt[lndpybwsvzyibmd]tfabajlzuxwwhofz[msknqgraxzpzwytjx]lfoqigitqufmhfmgwgi
+gpusiwyruzmkoluea[ofbgogetujmjnqv]dzmarlipdqkgwdzwzd[uhsfvlrawossxvxyk]yeseypubhoapfgdjom
+rcmnwwzrimrifziyoyg[avrikteehxhxcqhsq]yklfcrtqwaxmoepr[lahpskzjdwrjonqg]wddynujhryzkunrokho[ixwzkdpcqefelgcoabt]arjhdevhgaqcohbut
+zkcxzfkwxxdtbumymqv[qgaztskshqiukhwuelq]wxzpzaxuhdtfbimub
+nlgurkzredyklilaicv[mtxzdczugdhoowtp]hnhcyeygqrbqdnsc
+pbbcmecbydtmjigfn[giiambqbdgbgntq]zaaqvlpkysxuvbgbo
+aqyxolkflikpaxr[iqrnhzdtynkqymz]rwmgahzmvwtfebyguxh
+kcxhmwgrvommccee[oqvsuahbhwioqeunkz]mhcyripmlfivqsimnpk[zptnyqihvavtlxkq]guacutltkqoixskg
+ldpiuuwsszyidqxqj[tsmectapcwuyhhy]slauiehtpaocaeqyd[wbhrligadmsgznlyvd]nyvfiipvkthxjuoubc[zplkhqbtciuqnhjhiwy]olcmrcsayukgcbf
+tzcpkpyrdolcerqnwu[zqvhulfxfhgaehbwf]zaekvjegdligfrsh
+ghellbvwbjaummjjoss[pevgyftbjzmlsryfzv]kjdgnwfofftlxbiabir
+pidtrxbnvaobubqwah[nftxjicikdapqexh]mwssisitrwjgxhk[nghedqdzfdgxaqacas]hvehmhbxzfwylzdrjf[bisktoqalmaapoomzt]lwkkhvacvuqvmsv
+bdqjqlmohbjvqlson[mupepkeeoofwydse]ekylhrfsudqdcvkv[joofkljfkmpknazry]anyojhejtzfofcg[zcvpdeswtvtngyqleri]seqoyrfsqawkrudmg
+lmjegqfshvauxngz[ysmejumumaurgvgrsy]xrmslpnljfmaidojz[mtvwolafkcxlwjjthy]yjqsssxayanfdrel
+qmmiampdlsscnqml[ymselibefbqnqakirdw]uzxhisxyqljsdvhfe[jhjnivjgqdfyeqcea]nxbqpgyhtqzcwoptq[frlnwadwwyfnndeqv]qcbefaxmhgspalprcdo
+tavfmtbizkrpnerc[kmenfsatjafincrwrlk]pbbxvydrsqnfyap
+hwrkfzaovfbmrqhff[qglmybgnoytlkma]ibbbvmtqegqqxdk[gquqtiaqekcwiudebb]ozhpyabnxipgwfs[xqcajsdxhwpkofa]ssaordrnwjyvmcmjtp
+pkyhiseqcvejtkbqcgf[xvgqerenvyizecof]sflyqnazxuwbyexzwyq[zppuknfnnngpwihe]hacwithomkpaveqjrs[whsspxqxxqihxrmqxvn]ifsktqmduowpuhck
+xqctscaefqpvqcrm[rqbjdsxwoynqeoubwz]zycfrxbkijaedhkr[rzzbvjmogwxgcqa]hpzjokedwwmsbcrggmd
+hcbohuwdyeacvgmbmea[mmpvzmjiryorskh]tydknyaqhgcxafmqj[ejadhaojfjlsfxs]duohhgjdfjffvwzcgel
+ltlddqcbkkayshw[qdedbdppzuqdhfaxt]doedeeehsibaylpsnk
+bywykrbttmmpyacsoo[ghicjobuumyckupnmw]wzxuueyajmgprxe
+gejngdvsephfgyawm[eahzdehzhyymhcwx]qejrbkjhhplzgbehwdw
+hobcaacuxkoxnutlayu[yvsylobmhtczpxdhvh]qpwhgyojuomiubmahcd[pmspsmyxaqrdvcpwnwj]ghdvfbhifxhphkseh[ntyabnyuoadseevhvpf]opibtuiwjogylqzt
+bbuecmhireivvxmtw[kkvuwrudhmpqpmqr]cqrzfeasrpqapvtjqnz
+uxsiwqfamsnemtcqyym[wemijyiqgxbcsvdz]tdhlutowbxpxrkrlpx
+tnnlwlvfrrluuxjnvx[fgijrjghghgrkfmfb]lslknlacvseuzwy[acexgqeksduhjpf]enxevtqjetnyftgrad
+wiegevfedudnajr[uryivbxbutbhfuh]zrpurmrupgeggdyc[tfykavyeulosotky]ahsieiakxnitxhaa
+cdymukpgwzamxpe[ihvwjlomeozhnxq]zqlglkiyekzhkesoyui[dqdkxlczjrxgbdfqf]pdipsbuxwhibjytdb[ngoqkjeboqlsuic]efcostvlclbxvzhloan
+uuavzipkjlcgutoxrbc[orpbrqapdzdsagy]hbgwsmgmyowonxftjl[wrimpmzmwyjjtnkaf]qmlpvrkqhqbdswyyvpf[lpjhsulqumdzgjxuajn]yocpoqqrpuquduay
+wivyimuplkhmmkxioub[vqfixqklclmrbume]trenzswrpqljwctfat[ulkqyvjjpchvkpd]mvlwfrclcfqziho[pbmrqudqsivfemt]osmrlwtwstidtwmbmzc
+owpgvzzedsxwjjdeuz[kyqifdbwfxcphnb]kyeaxxmsplabrbd[gayquqvysxjwpckzlvj]tiuxhodkebirvmdb[zhnicexwwcgbbnfd]hcxwgyjpphxocggfl
+vrjvymyzflpaqfy[fokfgiaiyyzruyt]yvfrfomlsjqkvtps[mprfrwzeokyjmdetnl]znjipokvzxljjgqaw
+opczfzhpovblsevqcx[twcavjnyjerbqfqvooy]tmyyybovoyqcygzzyk
+gpifunuvcpqjornc[wcenyqazsxzksun]dijyypqoxxmjiyi[kdzvguquhohgsghqqko]tzknqsgldnnbotqnocj
+xtnewbseisluqott[ukktnadfrptzmvmnmwe]nfevmvifmaaubdrytcb
+uvwgvqvzikkvvaltpbs[darnokckfpuiwvaq]qjgglscrdhximnfg[cplqfytiupsnlwjnz]tjjkzojxijhhghoo
+mwvyjvnzfbptvndlui[dvpxdnwzdssddngva]nkvlbcdcwjumrqmjuw[xgrpriwhdpyxvakfpsu]jzugamflkelhfrzswca[hvdnwrkyrvcdkep]kqyiaalprdowzeudqvt
+zahhurbvayisuhkxluc[dpkhtfqcplnlwkr]moobahksmsqtmxasrw[oyxemzzmvwvxrldebja]tqnquzqoslugwcqcwtr[vibjzqdbmsmtxckkkn]ylujuamatwbexgo
+ffpiprpoymeaccwoun[avnvjzwvzowgthwymt]sakvpfnqtnzdyhodzud[egijncssvgvsofu]dplbxmzfihrpopurlvn[knjefyormeaeoni]ubcbldkemxgefbnjcbj
+fpyokxpcrydmqzkgr[gprmekopimtigwz]fobjyaxokhstzjsgkw[njzhtjqrhoynlzpiw]svrqxlhgpckwoat
+srrcdyevzyzhxnx[bbojuevgatiabjudws]zoxxvzrngllhtrtfm[rxoiyzmzwoenbodp]keodzdiobtdfgrxzgye[akofrgfwqtqblvntv]rfyrjcwbfblulkw
+kxuswiaijpaejqzoxes[cgyhiwbpjrhaacwe]uqqocaxbsotoaei[runskhbiegmjwfyjv]qgnmhdcjcbgbsztap
+kvzutkvgsyiyrab[zhbqkvgbyqzgwvfpbf]nhtaiwzmvrssvxsrdz
+tncgsbkllaugseepp[axryamrptnzekcb]xcvqkfuggjcfqhb[mtmzyjnvrgyuwtev]xziofjwvnbsothqzdm
+hmjthvqdelrmghgnvxg[cvfmsllxyxchaglntl]ikpeldmfhjdtnvaw
+sdhirfhdcxlwhxevbv[rfktrkotbfwiolxd]bhbkmmbdisqlclttbi[ueaqlmpvdaoxhezzg]baphbkfivkwpmtj
+crzkarxgbgpitxjeunw[xlonohiojoepwnuhd]kalfjqpazwmwruq[erssxjpfzosbcta]exvgtqljewfuwioyq[syaeqtgrgswbgbetkzw]ofnozzjtykajqcuc
+xdojuclultxptlxgci[nkmxgmiyhrrfgoshmeg]zqxcexaabvdjcaiarw
+rewjiwxykozqjzneh[tczrbiawzwtndtqnew]yxrgwvnswgyxjvnot[khomcpuiavkhwjsl]ksqiuqyarwwibcssseg[dsrplcalbjojxlecjdo]falbpuscbjsdxvyn
+dusvvyynezzobcrt[yrikyxqxqreoqcyyq]vkjxvnlnmleqybmgt
+qzmjfdvoruomeilaejd[ksrwqvmnyiessfejo]lvhmckdfwzoxwmydxm[icmiecrnoqepcuzctl]unxwrfwxgnijdxqjc[tuwcbylgfhpaveyak]qslgbtviucbmeluf
+djblesvduxlxfxp[grmuswjaheivlqvtst]yrqstsaryoqejwkd
+kpyoqmyglnrmxculu[tuyuqjronsgluls]whuymvpcdxvxrimvmow
+lruqeoicrisykqejy[ruqwiitwyrsithkyo]hbgqgiywqwsclcsn
+pkpmmddfcezjrrs[rbzbxotrbqlnmlpidpu]aakddaqjvbbafbnk[sendmtepxbcpttn]udnifsqhogqvszi
+foqjzmqhghzmymeq[isvvkjfpmvmhquoidkk]tskrbirqdtjpxolwzw
+pneojhviynihvnv[meuldylhohlfwsxp]nmdwxhxuexorktj
+gpnxdnxmueucaawmctx[ggcizpwllvbffytwv]riqcitchmdekosocp
+kcoafhejmqsopizo[lyoqftddzxuuerafco]zrvrzbmnzcawaydwg[bhnmhrnwpzmghrprzzw]qcrnkmyfcdoymceacg
+chcabwcrpxqnelguile[ckxfqhnrwlulnfgxjb]toauhcbsxmeirtlyy[cfgmasaieapbabcgdd]ijenfrqiaeiehllwpvk[ciymykejvkzxsbxy]iiyypzaxohmykgbzej
+yeqhlpncjcipsmtzpi[zoidbyeatjrlgmi]rcrhombxichyykncbwh[wtduqjwbefekhnwo]kqemsisbcrcjaqzdzw
+nbxvvetblqcarlcku[njrccfhdvxtarpj]rhndgwlyfzaeubc[imtcezhovdlfyixzwm]dwughoowqyazwaziea[slarywwdukqwygnhre]efzdruetqfoqqxusb
+vhvbnbyluqqaqzolkrs[fbfwkawbihbzwlrhd]npfzyqkoxlgkklgxz[zboinxtlzrqbwcqo]jqhvalbjqaogtyn[razwnxfkshezamemtr]nywqcxpvmuudyqo
+jubvozjfmykufhrkk[qhbaxcvcpyzbrwjlrij]itseilbvjwvzlgqjfe[lgxynowzlpqgoyrk]inolsbnzxvdmvbrvwqu[hjzfopqwsuqvqhb]wffwgmhjubihiqkpuls
+rqnjadbwfosviivshb[rutsuesebrktxitgy]abukeyordcrrqvrgf
+bfveiveawwoqyluxwu[trxwkfvioqzltgafma]swkyqokgtrprzzit[kuziuekaorgdgqjgi]zudaehzrjfzogiwb[fyxwwswqrbwgomriqo]sqfjrdskmdvalkhchc
+pnrvpotetwyvodue[xwkxyzxflrvxdfogk]kamxypekoelgwktq
+etjkovmlbwryvhv[wvubzziqtxbjvua]hmrqokvqrctugqdazz[ykobpstcxdqweotsi]eiczvmdcfjpvhdyfnci[eeklndzunbzipcqubp]tjsktxuorvbnisy
+fnexznsqqbhygrm[jgnmivchcvxgssjcm]klqcaszkwyzzecve
+pdmzjundpcsxbgplk[lbdsyrmgxnatuwk]nwrhpgieqrtzpktaiqw[dcxtjtkzvlxpibanjma]djszxtofdcuyfpdr[kzblikjgqfiaykr]yhiqqurlkwlrrjo
+bwtgmmjbtisnzbnyedf[iniovvuewpetwsg]dgvjyrzfrqcozekvp[xsulvxvvtwcxuvbxau]vvjyodjlbbjxigdxvxv
+jcanelvhybigzhplc[lhgjkwbpdlcybzgacya]uwisdadjoniyerw[kzcrorifvylivkhs]ssicvecwpkxbdwq
+tuxlnjuyudvhazlxdf[oknheznyzffrtcb]joozaraxuivijskxblf
+rvfdfyaemhgyeynw[hmmkdfdhadrqkxzzmsj]ugfozgghllznjhdxw[ucrgusuuqthlgxx]ipiercifxtkghbkf
+jgzrilirvzcocaphnz[gyrvhettmmhxaxbmyg]ecpwkoozcgtpoac[iretjtqyscaqfqziu]wqjckfkbfoqmmjkuhqe
+pswuxyynrpckrquj[wfbedboaabsgnnzzzwl]wgfrecpfkvlvjzl
+zkcihebtrfmiryqkd[ybedpynfafkkrbfdm]ovrsmnhexyqblafad
+pbkoczqfumwdpfu[gtcvqjuwknlrfxre]crpyxhawudbilybaomf
+pnagrmxhmjftwltxh[aqlhxdwuzrvnwjwl]xhmgrrajywnizazyrdc[hxdxewvthhrwhsva]ckluhnyewiiqazzmvd
+amjksgqzgmoavvxtov[ekqixufaaepczzusfga]fvlmiilpsqsgfgg[gzcyehzgpujyquhrkm]caaocajhmhqzbacvpog
+hitezskizncharbzyz[nbwuldsjxkjezjq]monndtwsxuikupvi[iardznrxkorquvyvwlk]etzyolkxhyqsdirbaj
+ocsxlxpsgimcvori[gawgkxlilqzeakhzds]bodnyayaioozoeg[bmaukrfdlswrnvuwy]nafolaiqfeendahms
+kseklqtakbkzzhfd[ghivxwcqlgfgxeot]levjimgmcfpgqrjjic[ixwevpbqkyzthafyj]azdxqlromttwteeqep[kxyiyoxyhvgqlmvscwz]zxdujwvngqyoabmrio
+elgbshsnykhiyndouao[nhumkawagmrztsamd]fwqupmyuogneywsyhub[zzcemywfdswhvjpl]ockclifwawqsyzt
+hyetqdpieicmycip[ciwciijtqspvydxsdu]zjrfhyctplqvypy[hdewteddlqfaoifgy]murcplulddvzheegmgd[rooqfiqsnkjeelfjcag]pdzzjacxzdzmmgmqwu
+nufvveulfkudkrvskbg[cdrvqfofoxmqwtv]jzgfbywojzvwumo[vvshcsjnhobkayk]gkwnyerwhezneuze
+qhmjnzcokmkmvclhfh[ywruoexbmjwuxvrk]lswliylmniqdgybtyx[yjrzasyfroiuaeps]xevbxtsyjknqmeuv
+crwelvogceorioqm[xmduhdacxyzodslgtv]wilmwenmmnwgqteftrx[zonwpkkjimmmhbrtls]vfbovjoabzwjpxd[jjxievceapgflzeldwb]onucskcmpkgsryl
+ujitrvtlzcrtazmghgm[mculcmczwibnuhtunnt]izqgurxwxhwboygvmf
+lespfnkqubxfoqa[exmzkeazfrfrkhzufz]xpunddczqrkxtgorc[ymsbogpyjeimnuola]kufhnwzukrdayts
+mitdlhggspwferwda[fcwhldszpyfznayp]rbfzewqihtcwtjznsp
+wzhbemsmffcmcswdvp[jcbuktuymokdqfjj]zyhqthqbczupmcmkhi
+qulvtldmhliyflccbyg[mqggwujrznjefvjw]sduatqntzkkvgfqel[fyxdewnrtlkkils]utxmideawxrzpewmee
+ggpinoooeucoxmezfi[ovisfbmebypyafknejc]ccqkrmaimxmvxhtain
+cqezdujipgzaara[afkpzozyzuitollf]srmeiyjzqjruima
+ivbrwakbgkrxpilylu[eewfaajedkwjbdrk]stsichtqqsksydtubf[umxwxeikoyehrou]kwddyduytdhdgdbyn
+vowwatzholrusydvmdb[jarugsbvowdtznwx]oofschlksdrodakrk
+oruwtttstrcvcgxz[cvidyuxfxluddzxuz]jckmrrmvolclrbam[dqptqpdwkpewhmcax]rtfmeakahrcbazlzsju
+vjrkcrzvefpxgardmqb[wxmurzwunsvjaxfhik]meiaafxurfgikqg[dkoextitsnfeorgoihc]diohmorpmlhisrs[ibtzwvoovjmdpfi]oelairhwcbbltmjcjdr
+miafjehtxwnfqzxg[nlovpfjpeclnmlbm]rleupmgzewtvuewypt
+osoaytxzfrkcljfjv[bbpjqntkuuwpgupxsy]bgryerdaukelujvayjt[gycrjaelxuemeosc]jgdfpdoltoqnmow[yfwoyzixdzamgqweb]lvmnjywqfjfvyxhb
+oiksidcbtzhhtnegqa[vdxnacjfxbcsjzqdq]ixvwmdqdaleuzjniki
+ngbyqfvobuxdnjeqia[ksktvzdyzkvyvjrgkos]xwuslzgntfwrnyqrod[cxmkhhwyremunrbc]hijkgxizhlyzqfaay[ljwayjqxyrduyoebm]ancrkgmzboqtwkjah
+kxcifwahsdmqasrmwi[aqzdihesmgntomgmj]jkhmcqvxqxtshprsy[wgewbxfsobokszgsivz]zlpavaqlwvauvedwf
+ibhzychwgtvobvws[qaestubbbtvyylbr]ovsxlggntxnneirtot[kgqrkbiqracxbnbi]lzpfersavecdddsytb
+abjcqoeeqfhvqmo[eferwxtafaxzidjzbr]qztbvxsaiyqhcsdkj
+uqqngbvhyfxovmdods[zwyybohwrhprvxaaaio]cgyaactenmhiokzh
+hiqqvjquvdkfcjwmo[jzrxnmbrqfhjhvppdxm]mwvibfiltxmwroeruo[fasknewgpsmftnx]aubymogtwkseupwmr[xnyevhhalilxuxqqvya]mastwtyfihocpbjngaw
+aqvkyxqnjtthgkjxr[ahvjgtzfqetvqhz]vcaijasfqaygnxmdba[loyjulxsgyldkotlefn]lnzykvlsbkyuvnqb[iqjxfxdmjgyxboyzr]zbfwxpxbthtwtnjdaw
+iweumcmplhykolkazmb[zgzeryniuwebpka]hsuxltmwyxogseiogl[ogacxzbrbvopihzm]ipogfmqtohqqfvowzl
+hlvbzegrmbrgoepemyh[luscnqomtcxbpxjmxvx]tipsuhgnhdavsubyqha[ozroemaxbdbcpnydjqs]xqdwngpkteoyyvkq
+fgpmkosjnfnltkfy[sxqzypihbntsfnryubc]oygetjhbfvozerfzw[nwvofzjfuwdzxncwvo]nvbtoxgwkmhnyox
+kbqkyxwacrffvkoxmb[tqfooaoggaauopcanz]ptiakppuyxzwzpua[tefuhyaqzyeteexrsj]hkuwublifohismiqg
+pdbrixpmacobfnpg[mxmgtvdlsuyhjnjxz]ghuebmnxzqfljxyutl
+ichijthjvilenbfg[zeibnuadotzachqyvej]qogvchvkfeskckvmxw[plyhbwjrhhnvdumajut]xazlyayoobgkmevrpho
+cbkznopiuqsssvle[gecuynehzvcmfuzcaxz]qfihmsdjfsxymvesb[jtriyipbkkpfnazcj]wbcwllfdxxdzrimwues
+ntxzlslwvxztbmola[duloarwqzkzxsfag]nzrsxasndnrktih
+fvvowikdydblgts[xozwhuhhngdjqnbry]hkcwbqloymkqjyzpj[xfwuoehhuljposct]ashitwoprqcooweytiw
+ynbifagloxgkzlydhk[qoxltvqdpmqhawcvef]wfnbtiyjafaqfujr[crcuopstahopywinvgc]ppxsgbvevlrkdgsv
+tdgutgskbatswuizuv[zpmhakbnxnkehhf]ffuohvkaxpiptot[zlykjduigarhxygukw]bucqoskhlesclyzbpd[igdjnevmqlibrugc]seyjwcizckvbncjwon
+holbjgzpvhqirwrxts[lpvaadhoqjjwvijk]etjusqwbrccaqea[livhtrfodwoxnkvk]dmprijbirsnzuptikc[icjaaepybpgnorie]imtoivdxpujjmlegqn
+ljywtdshrtzqzrln[lqzqgywtrpgszaigfv]vjyyvrbkjdiiminfas
+xfluerhpuqsqnrq[rtxglsxbetzajmo]bktotbhryqxdqfaf[cptmsctjrifdojglh]qzpxnniqwxlbvnexlg[vooexmzwbpulnxxv]eumwdzoixhfxkoavu
+xmomvhstjavjyisvhs[suremlzhaiwhikzzojb]urbiiuvmveiapcybgz[botikbmkcfsghtgtcn]jbsrxdkpxnynfibgxyw[agdmtydfehaujynym]xfpytnqyoafnuott
+xjzhgefdlodsdahv[ihwwnfbwhcjdbrdixy]kmsckqifucrgpocyvc[pudtuuaebkvsrflz]qjfwaaylzyhzerjbhyn[fsnmlxncwzsdsqp]edevlblbzmwkgkfluke
+qxlppzrvoymnsiyb[ybyeqxwtoberzwvcdlk]zsofrmazkapwiuxwjjn
+jbdmjeyxyksaonmswm[vhxyxtashfdrzjzytoq]jpkbmclxjtprrhmaz
+vxishfigjpmdwufh[oykzgieieiypyrqaxdx]etgleieyrezvbcg[scrtyttykipejzmuhy]oxnektqrkndltaixnj
+jnetcyoxmhjfyfjxm[dezndcwpoghexum]xloobrzxrvanbbh[gvcaufplrrstvrf]jgdhedqsxchoorlai
+enbtwxacyokhcwyhxp[ahjgrmfhavhnhqoqsfs]ahdcbzojcfgzkjfe[gtjphvcbwzsiohlha]lwaphixwqbmbqhyoccv
+arwtwiiowytbbjsumh[iwdhsnllysydgbcuxw]kummpwhpyydfdaf
+laidhzhbdwoezqhi[eccvqcxwasyyzqvhrw]oobigxsojqsyijmjmu[kinacswultmqsxdhw]xlildtoykeuzgzl
+fbwcshbijakfapcqzj[qktwqwrlnuktxjvuvn]nbzsrphskcxzuzho[lrbnsyzvrorznoq]ewytfrszdyhcrhpcx[bmzudjktpnqxqwmblf]xtwqqocsaxoluhsh
+xgnhvwkwhfbprypnak[yuwpjkfdxygltniuepa]mmbkjavsboilcvpp
+hprznssbfrukcvu[mojrsfuktavnbhzty]ipdxnxmtbvsazyx
+tfdicuergiqhvie[wwpqnqkyfyhuqlb]wovoujvgcwuptcqhkd[whhyzgbflhplrff]kezriqiamcvkeifegv[kcbdxrvoharumkgzufn]xypaikbmpsjqcbxrrp
+tkqpijxftrvwkam[yyajdcxgzrkhkroq]qfrbvprhxlpgunqqs
+fvwgqznbhbrmcaubz[lgsawqyuhadojbqwrwt]gzbvdgpwjuwqsgokqy[zpzdukphcvdqgpdoex]atanoaretkhxbyzw
+fispfedprcrygxs[xqiggqkjgjhaskp]thgqnbgscmrcfqjckbw[tvueixxvxlsnaupqed]lshjncmwxgzzczjssh
+fplljoayuqmjtjs[vnlhbmvowousilhym]emygvrnfsofwobaducv[flrnwxzgkghpboubuh]sdndpovsuohytnq
+utkqxfkbxtoudnbh[bjatbltbacnlwzlbjk]eunawwbizxdytndqc[arhtjgntcqetkeikojq]jfooeguervzgzgudb[nhifbismjhcwqyt]xwsxwzwwvtqoadmgvoe
+bxbifxmedhwkesbmjff[ncfbdgsqfejalnqyar]oifushwlnfxghktjhtq[gnapwycvocshetc]zzslupkhadbieerb
+rrotstdgmwqowfmf[zlddfgpxgucuestu]dvlbhinllnkxdybha[aovlzdyhamvvcgm]dzehxcilzoxrmcyhiwb[xkeszyasnqsumpx]bnrsppzfvjhiyafpk
+qgpylzwwdjxmepsc[bumaitztsvayatapvl]gotathwcrjrsknrfuk
+odbkgubddtpxdsgmhvh[mbgpgqafpcrymkkdpsd]ieabelyvewiypbkjm[psowbfplvsxifqwq]szgntjujujycbfy
+urqwuzkruqfgejkdoh[qxxkamiyhedlffzg]hnfntvahsaivnzmawf[mxcrmrqtgmnplma]gxcsbxvqcoxpddj
+qzkfvuxmfneyrpysh[clufxjecvedwwegflp]rcxzfazrzbgogna[ogoplmljfwvizwniudc]yewvacqgzcjgdnmasw
+mgweqpewhvtdjnjdbu[pecantesazignmq]upotybqiovoujemqg[ipzggdcevkbkvpyz]wqtflwovevactij[ednlhfkzrtfwpuignhd]epfijiuwnczwxdmgvzd
+lavqyaejctfofhdend[enxgzalvzelvvxdt]dkrlwjpuipwnqvuv[ishvyxwuhxdxujbgkev]euytwzxkpwccexc
+haibamsiwfwmdvzu[aekmrvauzoxdbtury]tfgjabbgdrwbzde
+gqoyggrpzhfgrkjjw[kwhwkctzmjdpdoeey]ngurqljoormcjarv[bmvadfmdgpwpzfiiv]fkfqchwhedeymsa[etqtnxepdmolklpa]tywoaqpoowybxcoqq
+vnvmbxxccmctcba[ncggihzavxxxrhb]mblrxjgtypycewg[syiizsazwqrhsllezvs]tpzocblnycaokaphz
+ffpbdxvenqkihvvsi[bbukwnounmzzxody]bzfefymopdtkpdm[sjbemcyhrspadzkuwi]xlhinxfjjeajzuqjkuo[zfpeikvvdfptpxe]dhsjhnwlzlcxbkz
+gulvdtkcmjewjchf[auqodvrekgvzxzyiwee]rarumiavqvnbyqu[xywssgnmbeefrqgr]lyyjmkpmqxmjbughzta[avdsmuyfdwvzrzn]qvhfqmazlactaxtxi
+vvqlvlsnrxwhoxfnac[sablzmrjccqvauyjfao]avdnqlseflqxtgb[masnpoqnvjtkreifrvy]lvtoftpiotxcstvu[vohbaippdypuwpkuip]kxffhmrvrbmvhecnui
+kclmgqkaprofpmdm[bhbitgjmddxhbhu]hmasnpqsttrgtmuq
+tvqcqkarkyqtpvea[fjqrifichijyykq]qqtmxszpmovzfvk[xrcoyhzyxwmqwujxp]nzlgwxpkuersepyhy
+zalveeaqakqjhfl[uypjekwlbcplfcasa]sasiztlswzyhvpd[weglkkwlrrvdvfd]mvsdbveypnjsymtjka[kroszrkveyammdqqool]kgmxohwwgmvcdludvdl
+xbroawhwunnamvnaogo[uzdvwckcbkaahqltp]bxudkhzxrykrkffaiiq[ljfeimkibushcpclbia]wztapafqrfdpwcwpyz[xwzhahnbnaxjorpkaj]glhfrkaiizzidtmfi
+cycyarwdelrstoi[rivlkfszzvyljoa]hkjtyvycydwronsgyd
+mbdqighfupmzacpi[keeoafjlwzqeoaryo]vjcwhcjkjkandqir[auactffhpuwzgzm]ybkwzkxyevwrphq
+cpiuxmmwrsjzbyqkfms[buipqvxsetxzsgqi]tzwpfhknlpwmtxzggc[nidtlxvnowvutuqv]qsohatjnnizngzsqxxr[klnzvuognkllhhr]clpjgdupfpanyxwjg
+hhtduiwmfhibnpmhjm[emakclmaqjnvjsjyt]ntebrhiztekglpmhsrg[rgehmkrotjobrtah]gzlybshvhkoznupnhr
+hyzvardyeiddsgk[vszukhazfkwqsodz]psztzqehiwcpifdlna[igstccorevbmgfae]vdapqjiijwygxap
+towtxxuitgwhddsua[bydcnwqycygmimbrut]cvnvgtuiuduzjod[gpazublcnojkfnnvn]rozlfkywwjelmry[wvtxeleixyqstxjqed]vsuvzaskgyooigoczd
+uywuytlehdznyxr[goerwtisqdsinimd]abuktfxdobkfqabm
+rolwzkzesawhyxddo[yuuvalxthkptulugzh]tagfpsdniekrekzkt
+nstbvilzeselffses[cpgyssgpjimcevp]ehfkumlscjuocclfhel
+idvdfrmadfyhafvyixs[igsqckpzuelddtl]eclbbakcdyttbtse[irchopmhiqbeloiqq]lwbecblskhopzyw[yjmdufblseluvukftkv]nnawapbepipwcsfz
+thqwduckwmjtxwwmj[ppnucfmtpcsawxvkago]vojtdpukjwwlnirsvle[cscyjfrxjlgxhyu]fldolxqfbxhigdom[tgacpmzitahxucqpzke]copdqvctocklhvrq
+maseolhlyrjuoqdazl[klgwgcdfwhpwmnlklcx]jycbhtwurlwwsjyuubt[cuabclvzukvmoiniql]pzockwxqjbtadsspl[izzcraalbnmcopcr]cqdxcrkdnwclxcitizq
+ucyccfdgxaciwhx[txuygxhekywmyuaaina]szfdjuddiopneadpot[zpjsnpjtmicknxkybi]lfirzuldnatglheyhnw[rhgqfyfxlaunabfqxl]hplszylhorbrkuy
+vmgeqazfjldqcfif[fuepxyjuuzxkect]ywoxrfdxbyjomjo
+qacfshruytmlwyj[jpqmllbdypmnzqoe]sdhmtuefjbrmvmeby[xkyplnmmmcrcmixkls]motyvnyucleirbnmrys[zdopkcnnuvxmhrg]feeagfdkgorsubr
+knlaaiwxponscqwtqla[jxilqsyolsnanzxvqi]itqqqbrfpcexbnecnkw[bpcxykvtdbxejlcda]mxodmdxzohrturffnwf
+txvqlvddwpcysvkctlu[wvuoeprflcpycbghfv]ksbpnggnitrxkua[hqyiyucnvjqsceml]uwwwbxrjvodohwznlx
+oebxtpwwjtewgkwjbv[omataxkuqenxmxolwe]aiepvclknbgapqh[wywlrbzliilwwvebxbl]ljsiuvllqbjrvqzh
+jznegbplekeeohnf[hegaqbzbjwdhgkouzja]msaozvrtyshcajexwen[cnleoafnzyvbvdfndha]guawhzetoxlxmjwt
+nytoqgolirudokcgok[qjtvenvrstrjjlsbvzq]mwhkktxfsokxxqb[pgswnhmmgzcrgjbqcx]amhrxgwmcnykgpuzfb[dnihosgggajabkoq]jtyxfrifreihydzwjdx
+bxihyluintytvypxhl[kbnizownozfekbhmsp]sjgxqgjbhoftgmbck[knoibzmlipdnfca]ofyxruebaspanxxhakl
+xhrlcwziflvahls[babpaszszfgfywj]gkquumhyqvozkgubcs[gkjczyujqykeifhsylz]fhmvopfsltpzijdw
+ntyxwcfpdgnsyau[eqjxtsfneseakvrf]sbzesbxxrrmpmlazhi
+lwakhsvcamfxiceusua[ymczlpqkoiophom]fiybjcxhftziivsrsok[sejyfiorjpptboakf]ipsamdcnfnlhger
+ncgeewwfszytkag[kizbzwnxepsvdxsbzbm]fofhxxpymrbqvcco[swphuoqvhbpghtku]hvxqclwgtxxqywhhs[ibvpkuiylqazccin]oftqdvkbzdkmycntx
+yhnhzwjjsiqngmhe[jtkcipgiclbqublpfs]glxyczwidjilkqoa[ytsphdvgnawjsctty]xdofsnhnpsylvmso[pmjrjgiwhqfegydcs]ylfcipikfzvmpjn
+pwlhyvxnneepoqexj[jsnwzbjxibgqnpjgdf]qndnlnzxewcrjio[hccvunupvbcyptqdihc]rfhmapmentuhoiv[kohfhnoakeglvnasojm]oggzhzybuuupwdrjrtj
+eyglfycgaoqwsqqnue[woaxqinxtvrhsbjjvnk]cfnkhvorifhxedbmbmq
+nrqqggalpihpjyu[dqbqopedkxhoqqnp]qguazmdjtenlvzgoemw[ccjlmsdaajwghuikrnp]xrjcyfkrrfxddnjn
+wkiymdlskwyjrft[ovucvqbenolfvvu]tzymrvmekxnlptynj[dupyullbzepmmrmgwe]fnjtcvrvzstijxq[elzfqhyjdyprzfxa]uszwjwzbbzgpcavynk
+jrdliqwwffvgzpu[mxoivfuwuqvtxqmbbs]tvtlqzqgwzgshkpw[hspnaspqnjvwybzfzxd]clkhutlibvxzxfrgg[yujteartlwdhzfgsn]lyfrxjqcpkcvcsnsw
+gtfhmxlpptgvgwob[xlzqaoawpmmjwszqmhm]xalfbbroilfuzzqm
+gqxmhinpeppmdhbdt[cpoaeltrlzmfgsipvg]iqlrhncmkmjijjh[xsbdusetrksrxjiofj]zndjqyxwvmsnrbcyrmh[qnbxczovjlrrvilks]rfpihmkwzmgxcynu
+abcncmuhelkxeph[crlbybjylvbgtsk]yvnbosicedmzurqcm
+fbhtialrsrrtpwcxxh[pisambikwkesdtbsj]zcdseybwrdrkxeiylg
+sehxfywgpznuuypj[upswvzwnkinocjk]nabhugsxhitlhis[ilrwksgypfqgfexvuhv]torregbntatolgchv[kkimpdkcxhsxyuczj]xpfacbmnrhcxnbgwis
+hldgiynbgrfjcunattg[nwfovbxygpkwmxnulm]xleqlwcajqwnncww[waoaudnttcfdktcd]yikfvdmekcexcrhsi[sntclwlhouhyjrob]wqpclaistsngwfmf
+izblnsxlmqjhxvx[qpmqqzakbjpbapwtlel]vmriwjoqlrttqpoxay[ylqzxxdpycurefadv]ftcuduceaycwejp
+jqjtnshmtsvokhwnpr[bxprgnaltcsqdkceygx]udqckcknpvegeryj[zvjfvligrqxnpypoerp]zhzwojzkckjwgdyu
+ohxpnvtduqvsihjt[eczkrdqlgyddymrdjfj]zzqhfijxsgoisbwpd[lysfkgekxvqspagq]kemxkdqxetnkyctjp[bknjdsvchfxflsrkuum]wmxncxrwwxxxgza
+xnulgysrzxheppsiril[hdxgzhscbjhkcntrmsy]vhedyohrrqclnoe[nnuxdbtlbjvaddo]xivkwdwvmkplsvfaal[omihwmflpvrshkcoci]hekqpjtrjlsaomfd
+hfyusspcypxdbgzb[cxbfccrumbqqqxb]ygsuxbxdfkisqwstqp[lqctoagvchrmggtmo]dgmcjusbvlmlvkdmnpu
+vmpobkctlhdwqjyb[dxeinhrldspqhgeu]ndglldouuoawkiwtask[szkthuhxdkmfqoqwwgq]zwjhzselzvirjadzvr[rholepzsidriqmlepo]yhbxhcmbkvripyusams
+mzscivdohxhfkdqet[imwvpkunuzbhbaj]tohxwppjtsjykxrj[nhonsbadufgsqiysn]cogovslrrwexgzujn
+pzsteeyowqmhzaqao[qsbohgqamrksizzs]vscfiltkxbxwbdlold[psofpwfkxhsxllnz]odwbidqaqpuchaew[kruwykloeqpcrjzon]famaoipldevywnouele
+tuqiapyobwqwpwbqqu[ycphsbdcwbmklro]medgafihivwegukhfof
+lficcecamifbjwk[sdguwtafkigjiapxagj]hmeqrhxptojctevbdbu[zvxeefaytjajdpwi]uliqtzilzcnwmbfusnm
+pvyzncrszmuienoptx[bigapupzitygcxstqx]rqikselsbelyfjdm[lyqmdmfyofksmecg]wjceogefnlgelpguu
+hmddytvxqrazumnnr[hpeurkbdfejhlfvg]pedwizmuhmtpdwh[efikgkrhnagpmqypzx]ltlncfegswhwcxa[bakxhwhtvxcwcxtmofk]zwjvbxyvljlfaie
+oxgoszggsifsgrck[gruwptjveewmfewguku]otchieijhojsyxi
+kunxbbrdhibhtlknrq[tmtsuhwakksyets]xdugxmqcstdallfqgq[tticbbqirncbjtx]knkygxawcwdhefesu[rerbfffgddyehtvl]yasblwlhikbvjidgku
+qoqnwslopcpytqy[zngrksptgviifcwbw]nuislpzizqikmgn
+khmctigslwdgzghkbk[veaqghpizqwjxlwcf]aymehevjgpjgwruhyc[hzgzilbhyoazljsk]jocgjmooxqxayzsa
+xodvowdhvnquwtma[kvlbfwwzeuucthg]djlyemkbpudpjlnrkv[cbaqlhuwfwwfvbdewx]vsjvsxsizgwsakpx[pzyowqndqdbkdakdney]eeylqpqpuqvdyyr
+cmdykdqavxgeismtlua[iwviddbtauhirfcabh]fhpsinbnwrcpxdho[tdbgrmgscvzukjl]rxupjtwbwmtgnltbjp[vgzucvscpzgjnvg]zftzsshpmizeksiz
+kfzmwzmzdpxabvi[ftkotbrorpkpfxzbg]hgbrsewdgnnqhxvueya[lkjknzgrbuzjqxwqseg]oyzaqahfuqtpbzi[yflzhfxwkugpetsqli]nowgjqaquqhrlxz
+ktphtjqwsitgbaii[tjwcbyfrpupwkvzrol]smlczhhekwxtlvxdfn[mqfupholnlvfhuv]mvdhzncezgunydrk
+lrvdftzasxbpfgb[pglmengmgfbnzxz]hbasbstksqkkqpwkcbp
+siheyyvdmjiubhlapns[xfcaevnaoexubdar]pgbougfzkmlzjqygdta
+tblrafqbjhwzbwbe[iefobcqdrypwnwidvm]olrzzrqgkwiefngf[asvmlckavcwtuosgkrm]esqsgwmiyxncjjqsqp
+alvaycnbqdlvvnwcnq[jwxzjzgpnzmcampkye]hepmdlzjvxhboxh
+mtfkavmnrxyfzvkes[gmwvavomsyolkahey]dnqosibjkplwzjojus
+gbckujjuhwnvovpfqw[qwievsrrtusgzbscuf]bnrjcovodutibjtq[fxteivdfkpixonphrog]mnumbxikkkyeositn
+remzamtzlhwpndrknl[xgrbcgdvlvrcdrpi]tnzimcpmxzaxsgpu[klvglrrepqxiiewn]lozcwxnclirneaky[nevhtplqsmuhykzqxf]fgmsbwdgfwjftndzi
+aybmjypdrytigyyip[zafsvprjirkniuwr]wfdyfncywtdtzezdbtm[umbxrtflhquwdofgut]lyjixlycobwpwvhfp[xoxtkyhvwqgawmike]bfqtgcxvcfwtdpl
+tugswvsgbsfbiyzcm[akmlddjckugylrea]fyzltfupxnvagbshlb
+lcgvlozzzzpzxeoee[zsvjydznyoadkvyxlsq]wqmgagbkerqyxjnnx[isukybwewezizpll]odqwazjphoaqhzltms[gtqeysqpwuuohdbhcnx]yqtvojobgaluizidrbn
+agnxxgirnprujhsk[hagcvuqcwyhmkdqmn]zehvuytegijhnfqnk[ytlokgpipjcviulp]hsomdskdngoysnbmg[wztsneomppnewhrl]gpkauttapxhcjrsicvy
+cvnowinufvrjpiqtq[kuavqbtrcelpcuasmk]poksbapbwverccds[qdddbhewvxgfoldib]mthrvrsfygbhlwlkcs[zhivcpxibufugkpigzs]qffdjnrsoigwxqhaf
+kovjiaxxjvzmzvmn[cmrbwjccgphtstvaiq]onqfbpryjertymd[sgmcnqbseodopnnd]gbgealygrgjnamdq[yrjuwjfvmsmgbur]ldiztdwrwmeqrohy
+tluglhveqluxpiy[wrsgxdrzuigwzfsby]bmhqmnbecjnyutpwlbk[iifejjworkzrsaj]illltueflutteej[adfixnftjenvyrigmkv]zgsqagrctomzublltjm
+fhcnrceynkcnnjxj[jrevstsodmhopao]zqapczirtxrunfhl
+rzmxbxurpdmzgef[agevdburkuvnsrof]rhclixqpruwxuanwxct
+vxejrazzpddvobzlq[dpspaddyabqzrjgvv]elcpgozzkqjsasufcv
+iaodnwpcpresylkhyy[dltvlrxbvnqslzzyvox]qownkehbhjprbzf
+kqbwgctrhxwrkkedau[occltggonhshykttsrr]snshslgqtlgejanlg
+jpesfmiguicqdcnkm[oawppiwdsmoidvkcre]wfifgnhqeisplngcjkr[wevtsiuznmpapke]dqgxavmudniuaml
+ddewtwhdfjatjlgrt[ceurnauksrgwzondnb]znsvkdkwsimbmdxfkh
+hwjwuhdokecprunbju[jhftguwujsuetdriyu]vcgpesthcnwuwpwes
+cgizaalsahfzkcxab[nehrqohgkmbxiufyco]xbnclpuepsanwrwjoo[kvdifptokbtlihgx]hgynbeebmdwbkwrfbh[rlypefyljzefnft]wwevofyexvbojyc
+ckxkzlpwrfhwzuep[etqgjhcmexxvaccx]qqkhjttaudjpbjboeo[gihevbqqqumfythcfm]hraqbarwvqnmvtiy[cbnfqzxyjcpmwvu]lrugefybnoiopvzi
+bbmhfnwnuhvdgmoibjq[eugipbrefcqiniulz]frkuvbhbdiaoaqdcaq[ksqqrrhjltlxvet]cdjhqazjzfrphjzjr[aspkvkpmwhkzxfeic]vkhbjolvoddtaasvs
+rxkbkkhnaiudojzsr[ecdvrnjjyzyqjxf]uxctotuqtvambwea
+saknwxxhcybeglwr[molhqlfbvopapnuco]hbbaomsdwcfwvoi[rlvhmvffqcyftricsyb]pkeuoigxjpwfbffif
+pylywhhzktocomu[sehthaaqwkyerucg]cwfmpqudeylrtavze
+vmawzgbfmmsivwfqclb[fpvwdbyrfjgmidxw]btatkdonphkxtprxfsj
+kspofpgsttceoft[fcqagpbfoujjulhp]fkbxvsbuwioyngydy[hnoxyyuhdviahwsf]gustmoflyrtelseo
+xyiofnffruqapvtgnr[wmigiedeszezgunm]vydqpobqqrisgtt[kolobhezpsiolofxrlq]abrzbbmtlqvuhxl
+enzmvjyrzypbbtmbvx[izvhoqpjgqgmmvricf]dbghstbtqgqawqjr[irvprevogenchjy]gbiwvcxncbjjvwmshsx
+uavpufepuqdbjedp[itqmeflkorinwdpjwp]hlrnsxymcnxwulsmfk[bayxjuxhtpcwafadefe]srrkibtivlskepjxamu
+dlwhxttrwjlxlit[atmcusmqvonodkfwqvb]ilfdsqjtjbimpaqht[zsbqjwsrgxlxbjqmulb]feblytbapctmfuao
+zfzicvjnuuugutgymp[owgyvyjfhrqpuukkgok]dfkfwodxgvrdqelliaa[xaumszuhzjjsxwe]ihaxfxpxjxcbhjg
+gmsgnyadjfimoemyzt[fjtprppdzhkorpqoo]eyxayeizyntiumrgk
+wvdatykekdfednl[kwpjrdcfjjklpdofpq]lidlhawqalcyigapvv[ukqjuzvvxehbwzhsci]rdrfhnobcwtvivgcc
+wvqxpnxpjmzfnfy[xgtkzusumupupuqvn]vmxceafgkxhnosupdkj
+ypfaupbycoerlpnhvk[pjrtdmwsmsckcfongoo]bjxlfxbekwvfruvy[uccfekaoczxlyigfs]gnvkjcwikenkmvgrpdj[yrtbyzxjkmpewjpbstp]nfwcwhereraqwxu
+cqxbsrqdgqudcci[olptuqqvfgunmstjc]xnppdflvdcjfviaemlm
+asywjbgrfvbfnkhnc[euubbvzujqjnsxtmel]gwxqasfbyjazgqodfh
+gvnexriimytwvefmo[dtuxofcgyfnaiibqx]iaaodpjwjnkbrqsmdzp[nuvnumldfhglafg]dpcqqfdrekqdfyfe
+hnwaqtrqgztvegfhj[mzqkcvhmqhzwmhlkc]kytpmyhzrvtytwvfkqk
+latjxjyjkwwnvyrbl[bjnilknxprpwziowcjn]zpdvccsjiuhfwrkn
+nowozzvrysgsfhxd[lhgxyitirlsyljl]nodxmmwtydaqkoxvu[vgbjtbbjqgfbssytsk]gpzprrvyvseifydxz
+sjihqhaecgshhhdrbto[goawszmxrrdtoxq]qvywgrnewpsordounhw[oaxydcsvrzzunbizz]nzisqsdrmmsaqwt[nmyxmrkeainaqyfe]eacdicawhfuobezyao
+oyztkiwsxqcufgqk[iyxqvktohfnoymgisag]acfhjawamdhawitvjg[npflzsugezpsmunukqa]vhhxnunvyxjtehyvv
+jzfmuzdlemckyiccan[rykdnvtoavzjtjxtx]vcmkcuioriltvpzzxqb[jdgqayewkwcqpkg]ulsujrvqzsmnpqgvg[lshytukyfqhnjehk]cpwbeyiudngpkrl
+uruvigtkkoqkfdbqkre[wyvcwnxixwkacuu]ajvziogdmzueetqzxxx[fyevgfzreomzjbsumi]ahbhcyjbadiacwjplq[quesxyjqfbckmnt]oqehbkjyoxsyczfta
+xzqfptkjpiknvkyzzt[hklpsitbnhlozgp]pkbgrwmqrbhohay[mhphptvyseydwfq]ehswmqarsalmcatb
+ohahitbjjxlnkyb[umyhhgtcasbfbxqx]dxyhbvpjjatkwvpkyry
+bcixbnnzlqxkisv[tapovjggqzlwlmc]vwnosivvmdcfsor[uaapwzmzarenaplcjp]jdcpazyedcdkdinrrz
+kdofbgwblzpnocgpq[scfdzdrueknbdud]axnfckaaghmrpfmk
+fisxkiplryvtnrvm[sypuemhvxvohsapkccc]exrrwesixcvnhzpopk[hpsilxrztuukzksyax]lixfijobrlgmonzui
+zjnlscyhmjmoofha[ezglbbmqulybnvf]qvbharzbfbbustsm[tdeqjfbfxeiknfr]chpwwntytidtnnjf
+qildxsfzfukzbmre[jykfpbbfelicvkqov]pyemzfzobutliokrrox[uplajddwknupdnfje]vombwrjguiukbiwozj[kcutkvgruxqqcuykn]zsbonxyerpjkfpnxchj
+pdmfyadwrblhcvecezb[fhqgurbenzitepyh]xhhtisxbusntgekaps[yefgbqwocpsexwq]emmlcuwjwvluecbfo[ohehzdjljocucatf]zmgbwenmeuiftywp
+xhrulprzdnbbzenux[ptzrrcmdscsuryk]ognjzqtletsyrcy[snpqabmryhyvcyztmd]lhkwhjylportbbo
+xphruwdeuqibzdss[ubuaiomstyuqgcgzyn]upkpgfqmamubaqhkao[ohjojarsqpjldirf]ianntdwcgclwmyzwjh[qqeajbudidxsqfw]nenqeljkdyjucrqnsgd
+xuydzitbfqwpaafru[jasqmetengbkljylhse]wkqxkjwkoipjfhkafnt[uolbyhzhmtupebneng]pcjjrczeczmoenefu
+ievtjpcjrlfqwisl[pzhzabrlrdeadbtpyec]sowfrknejwbuvgs
+qcuiylijqwfcqwjisqr[icjobpbxzjzuaxc]pcrdpfgwajrudfhxb[oiqtbvhfvitjvuts]ctwyepzbqlrtwuclz[smugjsqssswocjyc]lhlncivlmhmoexsrd
+yqmqbdhiciqlgdmf[rywqydtlwdocdih]ofxwyqckxktvcrlxsx[rxupkwzkvwrmhuiz]znbksfkkqxephhb
+bgzhbpweidflkmmjc[gxozhwikjiygyrm]vykpmxdywyfummana[mcqteiumnmmoyiwtcqw]ntczagaqoprodvhxbl
+gvtyicyxseltoqfgk[eozvokbnjytodemeo]ogofokdupjyhzdgrk[fucnzhyuqkcakflcky]zfgxqfofzfdxyzetc[kdgpxyithocprbr]rpqlihcmgthswhvz
+svrwqsrlntabucyssj[trbqnxxvtfiatqd]isjqyfxsoarfetrtgmm[lnwqkkgqucipvocrk]cdcsuvgwvzurnxleuus[wqjewzmcvqhhgwawyo]arzledaetbnpjmwjrl
+jttgsvurypqumflcm[ccznbkqklwsxmva]ooughikefyugfvz[rzsyqmtahohpmnq]kyotvedmsjfshan[bwadbneyfitukleqbyg]oyeonratlyvtfbcrs
+rpbklfvsjmisbnowf[vupfpfstcrfdxipqi]wuftflxmtftrcrb
+igqcfvsqbbvpmgflu[kremgawldkinlqnr]ogcijqlgvrvbloj
+ncjbiybzlsophbdemtc[zszwhtluxpobqclp]unvkyqmemvucdtwt[bzmibpkgwokausrgo]btnixophsknmjrqozwt
+gxapkeestvvhodxnp[xlvglgrlzjdrpjrps]sephfhztipqaftxnqp
+zalwvceeodddhqqyrk[znydhdhxhprlmip]bjijtiotyvfgyiou[odtkdhdrwuzpgwkf]kldnjprzjewdeyzmdua[wsdyljqvdmfdenajaks]zcvlwqkrytjsryab
+schsgvlniqevsrjfkxw[drtzpizdeopipceke]bduaeqelcxyvykt[vhoefhavfmuhjkgooub]tzgcfhwkfuvwcif
+wocmjawhtyhxksjiktg[hftunpxmlvyxauvnfj]spefcqpimqgjhnou[gmzejgwtyavnatavwju]vccngpxjmmxlruac
+igqxjgofompnnrsaxoh[lmmrwzhovfloeps]loixvtpiyzagyvgq[yaiiiuvpjpuldqk]jwpjsgmvglkzuiepr
+jgvoejrytatxvfqwt[hinkejefiqlrpqy]cgmvjuyjejpinjunld[qcdmwbqbqusirlxh]udhmheqsvmqmczbbofh
+qffigxgklwwslnts[gwhobujjovmwfmrg]menqzjmmxrgchttltek[fwegvyhranuutxgxec]fwzgoobvkjekogpfscr
+qlphzfkuyrhvkmsfxmb[unvtasxalhelbiw]gwqjfeftpkxtfiru[dhkyfsvpktyrttk]mypdaocnergxlnbodpi
+pxdqzshlqhkrhzwcqkb[tudazezhnktsxxexyq]ybzclsifzrgndcaxq[ewlslzvwnqqwvljgo]nwnyptvummeraaoow
+ysivygqkobbtznpxy[ydbgipznapsnkzfq]upackoodqdqmpvbgc[qnzvzwnbwrvgvwn]imcsgjzzaeltfxyhbx
+hcqlfxoahajthjesrdy[nammwfgfdqnjewunwz]pdzecgfgatymrrntt
+vwpdygtfuvbryipr[ehziaqbphyzzdolbfsv]rqxvfvafrauzncapu[dvqlgdgkzgpbjuihbl]sdtldsvjvvtlvjdgd
+rajovnvmoxozjldjd[czqnvirgxkydoaaxr]dejvwkgmpwqvnvnzzsb[zwxifotwvljvpkxae]taoulidxuvefjqxjdu
+jywqykajspyzvcw[jkqxjzfmvcrsqszgim]fncjgfxwbvfdwujhooa[otrkhmvyonynxsyap]skgdhtgcwmzixpdgmjh
+wbkndoivecgnkrid[tpdmkrufmawhpijryk]untkposunbiezua[njngjktbavkmsozyy]dqotrtnnoxxejcz[nyinrkqzxnsaahwa]zpdibcyegeumjjgowz
+gexzzkajyulforpnmb[mwihfmwsdpjjsnaxmme]xavowvaqybvqcqescdq[hjymwnhorqcdkoxv]myycpwmcpxinhru[koqbxfaoankdcpi]hgdktcvvxvoolccqcy
+alpcsvxjoouuhjrgzo[blnjpvnbtcufzsxqn]ipijmuwbljfwuxotk[sgpwkohrsfeypqc]vqlggpiytetmkifwc
+ixbszxrkuuzvvstrn[kdgfwhiapjrtiervwi]iugjmuvqljcbnmumal[ajgjfwerxsqqyrxuvob]qcdagpdvlnicajqcooo[qtuiukkwxyevxmgijtm]bgfetysdwvceqjc
+pdbbmswfeutwunlcm[ywbxptxhgqpjkpeenbx]wzzaxgyiztbdftpm[lbeexhgaqvezxfef]fqktklfxugwifcfaio[ucpewlhkqnbsigioumy]cawftwrwmbnfmzmhd
+xmtduxirbkbxjrqkvg[ythlqfokwjfwowrq]dguxbidgwelcrbxahi[mdumdnvbcsicvki]yhdgylmjisngrkcnbne
+yzilepuvsfipivcroyu[czocwppwvwxjadgqpc]uoypwqxrpcpdzmsyyqx[mzjaguojtnjobsvpdx]vnsywqfvrnpipenwka[dtiayvtdtuyeqlddh]wpxkwbagfqncorkomi
+qyebzyuerdwfocyr[cayytpduwkezuatyb]nuazweyhjemncuqpp[gwadeldyzfsvyqyk]gqjdzsuylxshtoayat
+eliktfnkrxvywmvr[tlnexbwvbbdeupd]gynrdmuppfbawfcb[dqsidilgsixsudputz]odwsmpcptosjdhrp[mumunqhddegofkrpabd]bnetmxiqkwhtcsgpuui
+wuozzupdubqhnbm[siwvzeelxcodzissd]niswczzlnrokkhrnd
+bjxpecnvcntfbqdyqy[hjawjkugajcwmouz]ipusnakbyyxmqhyislo[xcafwiwiabdlxpaqqo]vaemogopzemmnilw
+dlczcabztkrsdznjlcd[atcfirjxoipnvnoobjr]ujnimmhscetvevwpj[vnbwetjzberefmavwuy]penzvgcewibypznzpv[rqsqdxopumiqfftcb]qrotltpgkmzcndx
+juqqbnfozoikxscqata[cgretlqkyynhwhmk]yiehuxyidjlzpjs[jdnlbxkxvsufsduoulo]ymrfqienfjrrgraxfh[jlopugujyekjzrfet]hqlqjkulbfsnnxyksp
+epcyjxlwzmxwlulhx[pxjecldoxjwjkrndmir]baneyblyinubutjdi[cufdnjpvlwbfqbulb]dbzgyztjopciduxuo[paqntbrciorikaw]jbpsfzmzxvxlrgj
+euufrqxfhnfdzlawui[zwgpectzebtpxfwbym]btexmfeuilnoqsbgmz[hvnxaanolwzkygx]hurfyrjkanhjlaz[vdmsczzhobknlhoslpg]bgitrvjaildspbz
+gaweiazdfuixwqo[qedebtjxaewtracsgk]qnmuhjsbvqvcnov[aabcxwfcazxjqajv]xlhkehyvjohrqkbzyow
+uqxzgyclomagldxv[amcvkpboneuscronwcs]qbeqgbmrdcdtvsc
+xgkenttkfbysllows[bamxgmibkgysryjebgr]dhfiqnlocykclbofdzj
+ppyfzqrjpxgouxmsduv[euokodyohaiajyvsrz]xfxsvtjasezevkjwjk
+vcsgnfhhjkjssirc[kfdwqpdjaejqbfaxu]riqzqfwmwnsiqgamwm
+tvxtikdqugadgbux[niaxwpplrlwrnipcnnc]tcunnqamexertrdm[xkxjepysgqqdphb]vnxvtxntrsqrfjaz[akxkeqvlxgaorhqnd]sfhwarxbzfbtftuflr
+lwklfaiawghiwljxxow[oqmepnydmfkjbgkrjaj]clhguzdrfrmcoslsghh
+eqtzgxqoviujmxpg[pkkbcdmlkvbcppqrm]zjzmsjmxdkaknido[sellbmhvshvqdsslyq]xuokcgfaxstavgkni
+gstjodvjotzmvnm[mfvosfrnlksillaqs]riecejrjvhdrjvdl[sznhzufedvbdhbeq]msgvdfzoxeykqyx
+ivwoejkryedvxpi[autbisivgebnntgixu]papdjtvhwtxgipbhes
+apzalddmyxxmfysm[cdzptytpjydinlfdxa]gnjxiwepetlucfl[izgqnvcdaqkzgtpvwvk]cdxqaizjmvdnxigkmvm[cdybhclfttdchsbnyzs]xlqahfrmgnowlgba
+slubhmrmovzbgdw[dehwvsngduvcfkontgs]zeiqylnomqgevvikm[oubxjfwewqtdjwacb]mqjinmndnakfemp[mccapdxlrmrevbuaas]hcjdpjgnoguztrdjgbt
+vqeogkqjnfuayfpioi[rnkeynfubkpmjalnz]ybrwpzhiscwtyue[vnhkeaqwzawibjnvnos]ctmmursouxvylixiqko[voqlscgdnaelsbxcshf]azssljeollyzjjwkxin
+sanarwdtnkaemdsoj[ojswyaadxpnpzcm]acjrepbjwnnpncdf
+uvankqvbgxtgignh[zaimktolqipleig]mobimtizmlgqetrxkft[kooknezmesqkqisip]jdpwwsisdorcrryvyjn
+lkiqyvxlouvphqf[wiibwrighxagoiod]mavajklcesvhiytvcx[ntesmbqoxkadtth]kovhcrsmmtllhai
+ilzqxrlibfavovp[hrdmyejnxrlntti]yqmycbqlyitgkumdm
+oslndtyjgissmwhqbo[lguvaxjavhlklnqvd]cbmjzevkakhfauq[huujtqleuzhwcbpxjf]hiitxzclsgphiembgwx[ixccjsoybxmjmufm]knmagcfohytzcoq
+eutljtdlueiugunxsy[bmbgyvpiruvvuezir]vksxzmgftqglhrowpk[wphxqgxjmzhuqrwhce]giazmdryyjldglcivd[nsicphjzfpfzlhfymh]pfpeazmsdcttsutbs
+tmdniznfpsrdaivxpcp[nlebmzzfjfklqixhk]sbusrwexlbpswiyslbh[tuvimwrkchmarbvl]ykhoceojfjugoim
+vjkixsnkgnhzcsj[eqauuxevvcbzmlrvxk]owiikpkahbpkpuhkmns
+yiomyydjxljwyxoeh[rxyahvmloktamapez]ygtodyeyjtqusou[esemeduybcbngynmzl]rxszjfhelknuyjq
+hayzvqcfdjowlfeavo[mmcaawmtqthurqvmlfq]kbdpwcduhsjfbskcin[sueeedwjrdazxpae]drtfzfbefgvneiiqtsn
+lfsgnugdavjvstpk[usjflghmtbzdzavzgos]vajnuirkzezjgkst[ixiusdyawuqkbnacri]yfhtwiifnoltnygk
+fqvyvpipisvelyjfa[xewusykjjogfsupar]icdydlsidbisscyn[bpibwwfzoqajtnxlad]potpbswobrhcyvy
+wozhxjyiybczbhbqvd[kfsajcbxdespfdewbjw]afcsihkfitjosfwxb[fngvcuammwspeglx]xizamsngscxtprjwkq
+kmakicivcpvmjokl[rnsobihgweztudwrql]wytavzsniyqrdrxu
+nawqmyenftpbvxo[nsztprtyzoacbxy]jiwvrmgzztoisveafzh[kgpykqugwgvfkztnnz]qqmehjutfdzzowkof
+mxddcacabljlmyxmpn[zdlffviwrbhbjhl]niubaphkzsiybwkmh[ysxwkjpjhpyjmosgeo]kkhqupjsegymyxfh[sxxdsrtuwgsznnvhuy]licmdzzrtcxkgce
+hkvugidmuerakcmmsn[mkmrvpqxfoghbyxr]brkgsmexzyvqztplvgo
+inbjfdjjfofwckfckfo[nhjqvxeoedsfzfpwt]snlalnxxyjihecmxl[qtoxbcyxxtvuliams]bijqmocptaquusurml
+wmwfxoaocwtzuhvenl[yzpbmaoazbchjxozl]oulzkybjweqqzml[ydkamvkncxomqsibme]fcuomzdfejvijxeniaf
+clyxvevuyzylpdud[jmwhfhkzrzzkawp]nwcvtlwlwnbebgdz[cbnfsolnppgafml]mxhbrzrialopbbk
+ekyvudgmgzgiomwt[ebcbzzamsuhycbcvc]gzmmgrqbbuvbzfebh[lyuflvjhaxkfxkv]bvnmyumtjzismbtig[nqoxegjljmzarvyowo]rldakoyzzgansfefpwr
+wjhfgmicaoysnhmcer[kocbthyqjwsefyepgqh]vvzlwheralmhnixsb[adysumyfpsahmkntv]bnzgyilfgsepwvrdbdo[yqcnxfvzlpjxnvv]syedcecdzbffhmpztd
+qdmvnazvvyyxqjkm[lcmgrtbttzwijqf]gjacmuqivbcttnp[uduzbmcdayazzpr]vabqjkbgwnjophdxwvr[yyljnrcxwwcehamtg]psdjpizyavaebua
+fzjlpppzspuaflfwtv[dqmrdnatqlqnvowh]bevfgmojlmxmvfqb[smrcvucejxdrppkldvg]nbagvxquhrilbzi[dtbbwkaqepopjtgsgnz]zebxmxzzszbxtqeyjmd
+kipuoxmzbydfycmkxcx[bfmjtzvthijzhezx]aiwnfmjhetyrdahmi
+hiekvarctkixnmypau[dafmuxavuaosooos]czvsosvafizsjiouwi
+epzppyfkcwcqiirpm[drxvceywherxdpnxl]pzylclelnhztrgnqb[qrmfgrtyqmlnsggg]seaeqafycqwjfccuyhv[fnwvqeftfesdvyu]djdlucfogiqnrblz
+ihjtuvxjkvzqdpepjd[xzmyhwkdjooosritpw]rsvwysjoukgevdeve
+wdgepzzfwonrsxprc[oefuycfwngwkrgklo]fbckfdmwzzwfiinlfhw[mjebaresrtulcvkeb]aqxnxzpnqukspcol[hpfnupcjrkswiwlgzz]xbnwmtcsqwbpkxys
+nbaxkwtbtodcuecg[xqoetzqgjhxmuvfvnoa]edvwhehydqhhfjm[xyepeppmsepsaixyisi]txxbbqwefwuffdztlnc
+aqeknneydrvnameefot[dduhtgzqtjyggmr]ausnandgijmikvgd[jjvsfofhypkfrrc]rgzmkiqggfaesoznlxl[przqmabciaxkcunhy]cnntseafxmnjldcp
+rxilrztnhgzclsgy[yaxsuppphljrtcxev]mqyqgjopdetsxzmutjk[adyfostrkvhuajndjaw]ikumnitoxctaqcpop
+ntotlcdwgtsgotovhyj[wgduvgtqijgobem]hhdytbkiplykiejg[sntkfbyrzgguijtwmm]mpxnepfkhssujwhegbq[sxpsxodobizsvppqptl]uqlqlsopbfmgliw
+wbyugpjhymzlgbl[zdoddxxbnxqimlo]tyaobecgkbvrmgajpga[asriovkglwqiukcxtjk]nvjqkrzxwicfzdr[vzqasgjrafilljt]eobbqeenineqwps
+xbtwnvkwrlnwseaids[znlftryxezmidoc]suigxfrnxfzeudpi[ahlshriqmozkpiogtc]zpjiwsbdawhjynju
+drjfebkgnrcuqyzpezw[hnweqviwyjtfrwpu]popubobnviqwkqfv[plaxjplhmhjqjmqjsh]idacejabrvhfteelbiu[hhxwpwgvjcncpjcovv]tqyykiwalnnkoniju
+fwdnjlvptzmxpwvsli[eidmcurldxszfvvhjf]bshskptweuzuqtjym[dpwmmspdxpiqidrfz]bulnlyngfaybqfinqn
+khvidctisgemoswq[vzknkycuuvznnjkzay]rvzkmucboqomxkmtuvv
+ymfxlhojyjfqvctzue[sihfpembvmdtdda]wezkljquqtkcyiar
+cgzdjkbnmhptcggqib[autoeqiibhxdief]zapmbimuvhywdtsbtm
+gilwnvmvdyftcdmvaql[esmtawtmepovyih]quztpmdplotzlszav
+sfsncarxehtgmutj[aqauaojoqabkguvan]olgokvyhpfjzyqgvbcy[fsfdkbxhstvxlkzb]ozwgbzlhrocqpjoseq
+shzexlixgxazcobmdvz[bvrebdcpytgplvii]gxdgzyoqpmkqznz[wuywofxihsgxgpcksgh]lwqsslamcrmkobn
+pkjlltvbsjnfarycgf[gwkayyieahfowbrgr]ccgyjvjbdeoilsznvbi[njniljtubngiuwlil]kosrulvapzdufvq
+clhvakestwquwywsohs[ubwecsjptinhzngw]dvjcvukpkdrgpbeua[svetegijnnbtetpgfu]nfejtethkqavpol
+vksryzexymetdykenw[etxzvunetbovrwttr]pnmwnldqzmxzjldnmh[vnskreneiwajgmd]rwbeletsldocxguy[agccpaxhrlfokpt]wembexaqbprlrzg
+wrxyiatlpvvcuroguv[hfcsmxesvpwfgtpqip]jbspeicucxtbnti
+gbxyskaitzeogoej[drokshekgcpxpgktoi]ivxtocmlrugoguf
+sfzpstesdmegcuhn[drrpxmsfpcjvqerjb]jqcvoeifgceremgz[chsbisfayixexqer]qyhonslazxrkagpp
+bfufgciknfkthfbr[tlfmuebscorrclekjfx]offqunmqlcetebpov[bsbmhnbmmqmdbpnt]knkjsvpmffjqvtqpk[bryxvufxbsocwnd]hkxplkqhsymumxarn
+ftafmqgtmaazvmstfq[qxsvdxplpesqzqg]yrbkrhtzaqtygxjheuo
+xqgmldfvsmitjzhbr[yrwujpzkzksxdbthk]jblnpmdcljgadym
+ijtilnlhxlkhoaftet[rgzfrfsilxhwgpzx]gmdwwndlvtvvtdimd[wyghkhzahfwpaknrxiy]ekpkylqvvxypaszcozp[hjdwslazthbzhdimne]xuptxflgcjgdajfgqa
+ceklxvygwnkfrqvwd[qxjqndmhxzvhicvcf]lvrzumjuaawtgviue[xdvdtoulmeaaiiuqa]xveikrwzicxctyy
+pdvdkirojjubchc[iylcutkspnuquwdc]uzbtxemzazuwottv[sojezpwrsstkdwkses]laokggzzeaobwfus
+ibuowtqicxqiifze[emohxvujvolopghkrgw]secpljnouzblzup[xvpvnqvnsgsnmhwdpbn]ykpvwjlhtpdjlflxvye
+botbhhrfjqjqwdgmeu[itwjgbhzrqnnagvy]pzexftzhniligeyd[egtdkuktihxgmdd]cumzxbfgryzedtsc
+dgvuwphikpupaovhovx[nbwxxhepxfzlxcoma]vypmvuopklupuzlk[plkvxscxriyzeln]sopaaxvckgcbiahm[gpafvifmxvjouczus]uyqhgsdxkcylwle
+gufjlajgktlwahsa[kwtpvwbvjzpmpbstiyj]nqkkgajutaofdauzmfq[zihotkwlyixmfsp]fezlipznjthttsiwpj
+lqriaqvyvawemnogd[gyqqrvivtuxxbzf]xqrrsgnxbpmjsgqqr[zfwpyfwojhemhmyoajq]pyninwzcjzypmygy[qzftysfhztknzjo]zyybzurfxiolsik
+iojvqxazkhdwzed[jnnntfrduoxnyqpeszj]dpeducyducrsuwa[rnfiudvklwbdbho]lklubgxkqldqalvh[ogbeiwjdaeuwjyz]cvhoaaenmeuovocvog
+kxtwtkvaixeisgzjky[cnzhhsipmfawaqzc]gjpptvjnwmbqqbuum[qryazcieexjwwsvfi]cysiabvuldrkvsxqgu[koflanzstuwaebjih]krzursoabnpundffqs
+bzqcnugxfeixhnvk[sjyuxwjdceauputr]tcjsgbmvjklijlowud[mdmuqbpupxhndvfcd]ypgdbaxwopztyqelfis[bvpphfvdscmfbhynf]vjaytjezersopuqa
+sceyeinwgkcccgn[sgxwelfgqimdwzlbj]uvyuazuplvkhpndc[etahwkowloxlylnp]hletqjpvxzicdrs[kyrfwcyoudjlueqrvr]kdqsjyoajsfenmrol
+atkckckrgntchlets[tyebmdckmayofez]hryglgphkgeoswe[jeamxrrzxgyzvmuh]vcvejocdlauybbz[lnnricpcvqztoumc]uggeimsqrjnppskl
+rutaemkjlwrslmsp[jwwgmphxqlggydlsh]xdudpbdjfqtcgrw
+lwddwkagigyjsht[zpizzqoqkcbqmdqfqp]vbvigihfyemwjqusdh[kqgxbnysneqgxdwzkpp]issqguyhzmttxofz
+zzxsolnnbmerygtvvk[bhfexiwvaohrbqbadi]zdsieuxicwijamvo
+lbfovxmrghyzhfdybb[whedwghlrxnjtvqelzp]oezlanrknbaxtmo[jtrlurnbhmuymfwx]puvsiaizbjtqnot[rssajpiwyftzhoacoqh]ihmzohwlncqrfrjpbpn
+mflsnlcufwvqbhye[lslradskdqrueaxvoez]iyrdzgwbghbrctrmdt[bqgxpsiwleisnru]sjwifvnufaaedueaag
+rcdjaebyojixvatc[bjybjvqonbvdtyjwet]rnatoqmpxauyiezad[ltcfporqmmavmsjgmrb]sdiogziluykhmgcjf[bkkhyuslxlarrqbqe]zzsdsepgilymdpnhw
+jikhvuzivjikuxkmlus[vsgrhafeosvtphzg]bjhxequjxbqorsnhx[pvkgxrttjofimfuq]cmrxlinhwqxhrkrdzpk[xugunnrtpxbnemj]hapjbouhnfydllttkdt
+xsvwiruapkldajmkyx[iohclbiotvabvkhkngm]qfvbpipvniprtqjj[ehcphknxkybflhn]ackdoidsuczifwx[bdbekqnxcwwskgxp]ofvzsecshsgbqll
+rnpjfqpbnpfqtlpkc[itzrqowsquwryisqywl]mrkjwermsejxwqubxwi[plxkhpuflnhspjficnt]djldgtkuzafchfwar[auijeassmbtfdsd]etfcwmifwixeffrtpco
+nkqwqvkikgnmwcnos[nmvtwkyhwtwyrrupx]emdniphxpavkede
+tkcdryrjllweves[pqdjnylpftbbktemtkl]qlykuckixcfhwuczikv
+cfjwosfrfjwgwognyjc[jiwoynoxdngalmreoq]otqvhbkwlkpqatkx[wwgwguxuzwlorap]rjuopkpuaftnkdeg
+icgtjqangadcebdax[wyosawgqnexwsdqq]ulyhqvrzrqhibudyu
+mrrdimungjnszyr[quzeqzycxcsamewykb]vqrhnvflewxwzvxwxg
+aciggfsvhpeaemh[xhizavbtwzpsxdkgzdl]dbqpkvkmrbwjcle
+ctxwfkazxjvguatxus[hkcjonilmmvovjawir]ruwyywhbhkrheofbpr[qeknvkabxrdgfxgrp]hymknrdlgolmqrpklal[qbkzigpdxfcgnfhdrqr]hrutorkgyzxlqlujnv
+ocyqsefzuzizjllui[ttpjltsmxnkavfbviwn]ccfanejrzrghpnb[ehkgwatoncpnwfpjc]qkwynkumqgvxuslirgg[vrnprgoivxrsqlpbmke]jdygjgsfkbhrbfc
+necmpldghpppjggvw[vtantcichlsjgrzdxlo]bihypdunzshlhxktuk[iusfpqesheojjdmk]ycztqgqrqsuifzgnqvw[oyjhytgpicigpcf]ewrixdzorbmmxgywf
+tsddziihnzqushtoeg[ldqhzxrgtfkcrhecrm]nnesvhwbrujwmon
+rdapxiunwuijmxrqf[qvekjcwvibpucemj]uidzbyozcfnpempx
+fdvouzrhnlgyemqqqa[rosijdvpwbgnxzzr]moxykttwbfixxvflpje[daadlshdcnrwftzxpjj]pgpphzgfkeapstad[rptqkhjmanvnfuj]drurgqqilijigaa
+dcdcoboftwhtitlto[qdqpbbobdncixqwhmn]cdjrukqmcdbzwji
+fsmzzqlggnjqunemec[oxrxnckqpvilfinnolv]mgpmmemxrkuonag[wsoiyculboqjnux]urwswywdpuesxaq
+gpughkygfkxahewxsip[licxlfgczxcqejs]idnuezcmwhwgryjare
+shoehgaydkpbxwshf[ksbdsdldhfsxjipf]ubrrcyykdsgnywhojya[hfjwtuughentmddwd]wjpsomayxantmltuoep
+srpgizgochbueqgg[qeqltfdohredaspdbmy]cexowllqgvorkapnkc[kfivkiksqxospfw]naiqwxlkjowysnh
+patacqalyfmxulxxtkw[hyxkhrfewkpafeel]thgckmswuwcjgcuepp[lsfmmxuvmiyyzzxu]yiktaounkhxoqzm
+maeefdbswszxotz[sdfwswrwotoblvzk]bqmhwlxmzvjnorn[phhhipunsmqfmormtk]aasvyeqeffypmcop
+fhpaqlgiumuampggbha[tktjydzyzgbpqosq]dpqodhygfzmbfku
+iotcaohleclcmtwp[zirjcaznbsuwrbbspl]vdyhcyoroztlltnsubz[nmnaakmudmmobxzk]xjxybbzqfoibovwhr[tpzyhrmupmrfoeufsv]nfvtlfdnynqiwrmnmt
+bsadpcmsvgfxbpskka[bqcswpjvfijomiajzjv]zjzfrshleucdcwpf[ipqvielmzuykgbs]rsvzmpmpfahujfofx
+fvryaokhaacjqgah[epbqswhzewpvaip]cuveezfvkvejvvaizr[hlhatamayfeqllu]ixwqbzzaekbgxkmhzaz
+reyvoyklzltgudphp[oxjgegadnwxleogg]ljmtypolhtjwpvs
+cbihaubuoteffoyu[svxjexmihzibcqb]jzdqjhmjgugqyur
+krpfvdsywmrzxbusjl[juomxpbfboxgvkm]brhpobarqecdmqkiwy
+wsbwcjnpzputekmilg[qhdrjrdtwqqaqsymipv]fyrpxnpnbowlhwkcwd[wcxmrmmzlznnrel]oamqtpijleztiuknf
+mmjzxbxoyrxkyvdtss[cikixrlteokbezfi]urjcocznnivoqkf[wzqgjmuuvuniccrj]eiarnnhreduakcv
+honratmzckbtooiwan[epebkioukueaexbb]xyakukoiqfmtdhvxf
+auczawuragikjbyg[xqvricdlkrsbnmjqymq]uwinnxrbwluaanvjyvz
+rrpjxhttogyefupw[cidavmfspeeooolb]ucfrrurpkeqltglk[ulptzlfrcvniduqkc]bytebcgtpqkknxpbh
+ateymyqwgrjfwemgg[xppbfkjrlnizskzttbw]genvojuvqaudosfm[psnzsxmpjtdbznh]kljgvgkdvezzljte[ovfuojewcuvcqrfdzsk]kmbgrfpjzllvrbmpimu
+mrvctdetjidibveb[msvevesuydbqwrytbh]yiliwznzilsslmachk[mqyuthyalilcmdpxz]ctawteeyyrsbncp
+xhqazvqcraogaog[efbpamcmboregjesn]vinozerwxjyrytyd[vmzmjnevhaiidnhiuw]nvzsnlixrdzmzvtgfy[veacynylxxfkeep]syokzdwmkkhirrz
+swavkosetgudxoshj[fvzlrzpjhrbnbqsccn]hlvbbqalpdfefmaxdse[ekisavmzzlowfwcmqp]hutgwyxxcqjdiso[vraskyhzrfjitpxakqa]rcljjityeqogidyb
+hidnzkzjrekzkkqqpj[qvvuzioihfbxhglu]nzlgputvbrvwrchwhzc[rimjeexwqbdnsdn]tfzbpsuttxirwszy
+wiubbpcsjjmtbnd[thcllhnafhmdojqr]viplkejozrbrwacv
+jaywbjoscfdifdfalf[lvouibjhzbkxdqd]mcxggciwqqirwcyps[ztiybfroldnlieeg]vwnzbrghyfatjsxsvfl[jenhflndcjmgdojv]uyxvsnfigbtgaemccz
+uutahwebslojhtl[affybmhohxqavah]xocumtcofvavgdgl[xlypyhazihrgfwllp]ptfnqjlzbaccyoaawi
+akdzebybusompcsooz[xgymxdecspvdvkgit]dtnhtzkelcazovecig
+jqajvhvbrkrynxg[yekfvwkborakrkfl]bovxzhceonjclmgecgy
+ilythgztqwpxktjrpf[igwywudlvdqpqbu]hxmvjverypjvjtk
+dbkmmuymxedkowpcws[kxtthcqfurgkuxxx]vkypnrqtmhlsqogt[rtixamexlrydluvxe]nbehtyxipwgvefctyaf[cxtipjkxixrgawvomc]ssvdpknocgugwjxpzpf
+fidyxymrgwqpntyg[loqqjfrzmidkxskyfsa]mqilmzklkzhzedf[mitpmedchdhhzxdqpl]roerrhbijrjwmsm[quhrsmqqujwufnm]layxublhkfpoykadvcr
+njsjelrfstonstmhq[crcgsmvxndyvyfsjku]yvyrpgjnuimkxcutgvh[gwmbqumupsdfrusp]sbedcqptxzhsohroth[wudivolpxauvxvxbpqk]bnfygsxxzqwxumonnm
+ivtobvcmwywqtjkfa[tcfyhhgftbsswpnvbtv]bkuulyhtihhqcckjo[lgnkduoojrzyjhby]uwkeujommiprdopgche
+mzrhrvpuyolqlku[rlofuuumtasfuknrasa]tfhglvunxtkafazyehj[hrnjrlpyjntwosogwti]ixtpihfavwqkjnlipmm
+jzhfwqxoqsgnrnex[ccrtrnroigtbvrnjeji]bbhfsodufjqhjvplii[mcubmtdgwttmmnazhpt]hovifldmlnbzrwqicaz
+hcchhpmerpjppsj[wftljcxoqwtoclz]xihvvfjfhefdkeip[abdthspjojqvwxx]fhffpflinospcczm
+vupulseekbaiaoempu[zupmjydxyobqbfmy]xkyopqxvogwcpuwnud[orgnovcpbpqecljkaq]sdvcakqwdmgydeeup
+wruccyxbyiexpnka[iirsbfvggokpwli]gztvpqcsckeaiqofwf[zdloxqdlcazkhkppz]jydaafpuoznegyif
+lwxqnbbzjlckuji[bzxykmlhlgjosvs]fdocjjmtlhlghzvj[snveavqbuhnzqktmyur]xcoabwwqxexqzakbrh[iqkdvngcdtlhlhudqk]edydfxflcnpzrcjsppt
+eokcsyiozfqhcbzffj[uiczyrevovzcgvu]mniuhovkpklhedhx[gbyzowvpnxpemkcrccc]avfhgxxldgtjxuy
+rxjbmcovdnxoxrjter[ijiplhrlromkesgs]xwtfawphuvrjimntwvs
+uuwjtmgqskgrxrlzt[nqzvntwfmxeptqylma]gbahtqxvunohprsd[strhrrwmxsuoiuvi]nhamfjzlocoufnwbgu[osdxgghdsdkbqcpj]ywmalngfjbjymkz
+vsmcjtzwfubhlop[ttbkmxwjonmuscwi]ikjuxrmqhqldtfzqa
+oqhkopaodmimgikwcg[biimzvsoczaxfdy]bkcbjbcusyhdpfo[vfnzlymbwetzhbcxz]zyntiiipnkmsjjemxq
+hzaeznnipwioicdfa[lperfrgxekbntipyf]mnerflshwywujfsp[nrkcmayjxnxbhuvo]mdxovxksmxlwvkbrdf
+cuqqyiwojnwvbybcps[bujmpcuovhebtztm]bektaixvzjpofzb[egiiqzxqdlfwoukjyiw]nqkjlpwevuxeognpnq
+ryxoyvavwharlbwzeq[rphqbmnaiykgafsftjs]ijrqxkvnqersvvryz[mevoiitcztvfztorohn]hkchrvkqswjpyay[staoxhiuifnbmxuytlc]fuawdkujedmkpeto
+caowivzceqsclbyp[grpcqqthiebrabqwhxv]bzmazhewqmbuhjokm
+uhrtxyxnakvjydnroc[fhnjxathwyyxszmo]zzukeuqdhxravrs[zqcltmosvkqcekap]gjartckwucksqzcn[smddsrvnfxqjxya]gkumdkzqxcqxfyhm
+ldzhaqlkbxfagur[qvlstlwnkzbmxlxw]reflsfhdsosjaaesps[qajtodlxlfrbdlj]bxytsckpxumuoklw
+ghjjrxtnytqatjfxwt[opmvopscrillueslb]zsxtxstrwnyzolxk[lyeeidvaghynwkckr]shhkellgnhsuekrzoc
+vpliqrfetzttovx[nkmmjlsskjhnyxh]ayockmlevegaseq[auzorvghfdfuuajnt]poknhujvpctqrrycfun
+vzgpmpjvlzbhzhlexp[zheyfmgekvhjsnmosaq]krmficowypbxwbztrn[rvoedtkjlfpxtaot]rxwejzlarsgdlayv
+jfrznpvhlbchvre[obxfauzcchgnzksp]fgimlwasdrgqvquis[ewaqnfexmitmuxhqnp]graisawghismkouwfv
+nqmcashwuluyxaxcw[fdqovhbtwijgklubmon]dgxewefrjkhrylq[maeguvhvptbgmjdwhxb]dkdmdobhsbyforzmqr
+huwexxqnjlofulknxz[qnbpzxlpdlsqrti]sbmmwvryxqsrfzpm[ucizjfqroaflnixzbpr]ndztjtaeahzmkyords
+mwlrbdybkjhgorutus[bmbedqpcsxwkganh]ttwjrjrvxsikepdbvgs[qycnjzrbeiiplxarls]atrevpowofauioaof[nlhyhaoljptrowlmyo]hmeaxvwasyaszlgq
+tqsmjetgtzmxfgakjqs[cbnxrpnckgcndpcwiae]uavavaewuucokfrm[viufzfvvuiuuehyxcw]nkskrloinkwsoukw
+roximfsrbnzyzjmn[bqugwcdliqyzyaqiupv]rpdidncsfgexyncbg[amzmtmqwzipkjfy]fqnscfsjmxjlpoccvfd[bpebfxoinyaqsgjpb]dykidfsbcykdobqe
+rcmbmjwgmwathepxunw[uoieoiytmrywrjevift]ourmrqqatqnwmrisyu[bxodgsozbekrcuwf]gkaigbulsjxysdiawg[kczakejsrndvzdirs]ggjgbhegtgijrdz
+xtksmozdsgsclsxrfh[afxjsmsjpuqnomb]onqkiyrogyrkykxjr[bhvnrdaenimevcx]snufewjwvfqkafjjzn[cquvjkzxpbfbghmnpwi]wjbdkkloxxgsgnmriw
+doruvpwqkvibnww[uslnnvqcrwjlexech]cshujlmmujfjdtjw[pkbasqruzspzipwrqke]yypbzzqwoasgldn
+aoxxznvrxfhzwyyq[byxxvystyyrlzvl]jnilbnasrzvgbbhrl
+wvtujbbebuyuazangzc[moooepbzqolouuyxij]vhqrubkyyuypknfh[gvfucxhufyyjefei]axvrkaeaqlxxfip[fiazyighxscxhiwydc]acvifmzzltvluos
+yzyfibzwjuddaoxc[gpjgkmckxctlttgcdcm]rmjohduchcituck[noozqqxrakiadwu]mipigxbhlbtngtpcpz
+zipobscyynjrecng[jeekozoaoyuuqmroisx]tgffoyomlggbyjnnv[mcfybdsenqhygjo]dnzrpghyroqbcje[aoapyvfyscqfzhihddf]vplszbvbycwxqrhb
+gcoyyfxpuufglqfsczx[ebjwlqjgtgkqdeike]xtuuxrrbgiwhwqdcyw
+mdwjuxoulckloxfujkj[omieaeznetsnkeoroh]ggnwbuenkgeujmap[ghrtxfonaxyhfogpjub]ptyopzxhctssbwlpwy[xmpglsqcnihwzgbgm]yqmqddmugnlrbnqkgci
+xeayvddumafiomemh[euwluehznzxvpmzbz]fxcevhwksvwhrvzid[maotzdveeldpyetguj]cixjfwlbbbrrqmnoklo
+larctxbpbdnbpqyyz[vzooyuwrgpgtjtq]sgizsbcjteinyxto[jbqzsxejwwgrpcgzwrj]bpwcfwyglhtuxqmy
+zbxohuvlboydqvqhhkd[wgcjvlrppivpnxifvk]kmpdiwdtpmrctyhy[pprsqaqxunduprjnjxx]zfbqlbdpmcgfwenem
+ghcjhgkmyfejmua[mqsuukbcdvjmdnz]ixxelnebxjrtrdwzlkd[ikojyewznghqksregl]tkthqugytcsdudoggp
+hdfwyjganjbjhbjvswz[bfaxlkjfrkakeedg]zrkxyzbozmchfqgz
+inmdmdyssqhykuhn[vbjasprzyxaphygdg]ucbbhyvlsjjdqri
+zdyejivfbywyaaqljp[sxmtwgwmwbqelhsg]jesgfubnghtsagcu[tofvxzmzzsnywhbx]ibnbzcdhusdiqhgika[sipfigjsngidlzxxneq]bljavpomkpqzrsuuo
+uahcmotfanpvzru[opmqbnngxtudnuyc]lsvafzhwwwmoagl[kzpffwsffxozirgyz]lsbjnbzflbiprwuvurf
+rzietxnbixgvzxnmzlj[iygcirkrgwwsgpcidzr]bfrwgfeyyatmalyjsl[dweehclvlbefvlcp]qurpnzinmyweipshzs[lgbfgdjhddmtvbzxu]ppxtzzkiizoqqguct
+zfsvifntrvbjgdcuc[jjwqwhifqbxeqkbigcl]fmyuetebsksddti[hmopwdnxvmqwqflr]jidndiejmzoutjpkdm
+qwnlstjkluchubgkttm[yyndjrkhfqrxuyglebo]xdltobqidrkstozk[shmmslerstluurc]fxkrzqnfjoalxcmssq[bjenpehkwbxpktb]eaallvedtajrnupomva
+zxqdqrztephcpieqdi[rigecfyegojksvjmya]rgygzpdzmpvogeurni[odgdyrqmqgrcmhfcu]ggdgejoiritcrdxxu
+ezhzkozgllmnompn[sqyilkceizeygqkwot]pdkuklrqdgtgoqap[yvadgqlkffoklshvf]hkgwcnlbadpbiuzvkaz[oozjtyzsxujalkwoo]dhntuiangtulscbzg
+zvwmdxzivmtzpkmhnp[qduttqlbrhetmuj]vmykluzepgxxilmn[qgswpbooccvoxlg]ujndjzfubkxmvvdib[yrneuetnuktitut]vvwnzxosnenywomkyj
+phuncbfvyiwxfour[oauntpjxaqvwvqn]liffvpoxrbljogpcwvw
+usabjelvalpgdyiyn[hywbrqfeqwkizwnxf]ebpcgxloqmzflbeag[dxifrjggqwzokner]ndwzylxxlkdcpbk[kfergfdezgbceby]uscylihvxfbetfnog
+afgmwhqdwessspzx[ssbmbckihwjmiaw]zbbiktbhykmehed
+hforuldqhrolhqsm[gofgjhapikxnhhdn]xgdarfanlnonwdielb[hvntptxixclnlqphvq]hvvdpsmvsveyaiubt[hiiscphavjogadmj]bbfjdjeecrhhrspxdpq
+djtyronibzvtixf[yvofthnckundxfe]eccattkkitxyotbziy[afdaacfefrerytfh]cquizrjfjtqgjozagid[xkbcgazeolbliwp]hukcarrfnjctdycpfb
+egwoebxchfxxlrr[hxugiprrlfwmknw]cpmfgzxzakyhumd[evzzvvtjwwzwzywvk]lwcfpjlcgrbjszjvf
+hktuhumsttqsgfltrdv[rctkgluikouomerrv]jblnggtkdhveufixx
+ejjzogefxwuyadzthjb[ibrhegtzukygkfnziwt]utcbeamzzfkbrmqonlu[yofpkwiuewvtbswaet]zxkgoommtfxezcfcweb
+wbauuixpbtjnuos[ozwhlzidaubnfiuiqa]nlkdtbovsytnvjz[ztfjpnzvymrefnt]nixbxdoogrxdvuxbxbr
+xadpfckydqkmbvbj[vwdzgyfbjlyslafrp]mbozdmkfztxwailiuv[uttdatknprbzvjvucxh]cqcbkumzxiaqweqfiry
+bsdbnkvvlwpezlhc[cdzdiuewblcmciggdgp]halpvjdbnpbdrnkz[ikoyxulwagjnwego]twyvbkffqxasqbomi[ajwtpvliyyssqjex]cfbqtoqqlggpufbfx
+qoqtovwkavyaqbkwmd[vxuqdoobfxtanlwd]zklibywcjpksseelw[roqxvvoifjmxnarqvt]zeijltexwykdvpd
+obkgwgtfxwjfrepg[slekjheburvgrunuaxf]cnhsvevmitpuwokwee
+flulgpwvsikwhpzpza[pmlcfhtmvuiyoidfbfh]czcxxurdakbxizbbfb[blpwjusbzbdwugwbcv]vltmmzttxuhooid[hlbpbqjpqyclebkye]hgozvhgdplllxiio
+oupstawbevsasbhv[ddvybaqnhfckfvdgabz]nooqiufueyoflccqzc[jyljuydjddholsx]bbejlommzienlhz[mpbmppjwfqrgucxdqxx]sjohlscgjoprsqt
+augjtgfyoatluixgc[atdsbsouunywohfnk]dpghgakdvfscbapsm[nkodybopavlbeikalqj]myhpkcbsbkbjfgj
+whzlsgvuspnzdunurbg[cypfmgrkqjeppudbdy]civtfkixnmrkqmchhg[ypyakrsygkyvmfmmyf]blihjslfkbrysntsl
+xeyyjiqvduxcflt[xiqxiqeepbpkkydtzxs]vbpbdsaivyavnfwj[rduzjulshqiluheud]inliammiyxregzbsrkt
+txvixsvhvmxxsomvo[hgdskyjskapgvyiqzsz]shvhmfrbpxbndsx[plvytalszauhmpkr]jyujmokrvxwmanzbxbi[mefmngrdhatojkpplcv]dttxfesvavgpkbtpri
+pproajkxqwedocrc[muhbyboayoghprmbtxs]odroemzznotffsaxsmg[ykfnecchdltzosnyby]nozuvokzntxrnitq
+rqimalibychumvzdq[siqhwfjimixscjmne]hkvxsavgjvpzkyay[nzbxnmxgmyuwcywvd]qkuzrfifsyvonaalxu
+rymadifucrlickzorqr[phxxuxpffvnjgofl]zqfbhfmzbvhbmask
+gzuklpopfcjdrxoekz[lwviuuoyojzggqjs]cyacdnvkgqqafcyprae[iyazavdiashvzwpgip]sztafbunqsyjtpz[fkwjsbllccbrrdpa]dijejdfyzqycvrdkl
+nhmayligrdtlvyeo[laulduejrclodvnaoh]frxoepqtmqdzwwupiy
+exzcpmjdjiagpvsvin[aontczoixbznfwsvss]hdlmrrdtbumlfvril[gcuizdwjbzyhttw]apadljkbcsylwgekv
+pujkeovpnvnleypqz[ecxuhbtnrlnzojsxs]eyolbkoatzbwvnvwxlx
+oefowwmlhqytnxaec[rdbjjilbmiazndcycr]dvjwgldyxfrzicw[fxpbshhafqifvyju]ygagsxtxwnsphgzqrpv
+lhbebfasigqbhndgsux[drchunjaqzkcmefjys]nzloazwftxoemnmifox[gjpmyydbftxggnggadd]onlcnitfjniiekbiaz[swjdwdaikyykupgyg]ltwxeordcvjfarrhx
+ukvzfltucnovohjidr[apslrphaneessxbpdx]cxrovjkruohahxshazw
+xnsrwrjioindnxhxrrn[mvuraryghmwxppnlp]mconcxeyryuvfqcoy
+opafehetqedyikso[vjnjwsjlbiknomzuu]pjurldelcuxkdlhehm
+kvpcbopojkvzykdhm[ldleeqmztdnrohjm]vejwyvzvekairyhc
+yrbrakwltaduyge[qwvsxbxwiretxirlsbt]hdnwansdelcvxptiou[uhibherodkibtww]aphfcrfnpewbrblyme[lfwjpxyosiappsd]rshmipxgjvorazj
+tsymbomuywfpmdul[wgulyfhhwodplfi]xixmazxgewasngsv
+ktywwprbuvuhmnpwfoa[fcuicnujrweusdoe]fuarbahbvkhqjibcfp
+snhkrkibygzndryeblm[pykdztwnxrawqbevu]wwiwrwfcwtirdkjh
+xhomjlsunzjzgkxc[qyxzsooayiqnuzljj]jftgbnqtumwipywdfrp
+mhfgzwlocsrhbfkdbud[kwtnglxzzdwqcfw]ezvrdgdyjjqfwuv[abznvdwgiisyqjxvu]khcfgchqbgwflioa[upibqontzrahabnpi]tgjaagwvmqewmfyer
+yfptdfhnebzhgpzism[tglibrfrnpfmydwbea]mmoqveuvvenorhnrw
+ljztcdworsemcoe[yloilpxuumxdzzxl]dyawqaacdnjlttcz[dxyytbozmlibkocr]dxpindavjlezzpogz
+bwkhzerttqexrgoea[ubnuzbvktcxsxednmu]zqjpbtbzdcfmidopdy[malphrsrebpeeuw]vwdlaafkntcaqmwjqc[abciktgfeaiptay]yqksuqwsuqtckkoyh
+filqrpdsqqfgkcu[obiciozcvbatglnx]sjzgtjuddnazrzfcju[svrswvhpfraptqsxolt]nfcphmwaudhrnxkzc[ysohuzukkfqlskgkd]nynxljuswasofiaarc
+desdobciyiqsycj[wzvqcbwfbneahei]svofzhyvvsrwasvvg[igvhymbudpcrdgjwv]qtyrjtghnbbtekl
+fygnlyiuxapyciwwnbw[fhwxcrwprlaoiybnkbe]fxvtiehvhfgfwtsdfh[mreawqbzyvkbcnkyftm]rryknthocegscrdtbcw[ktbeedxfulszfogwnqi]kqwtzaemzwmsloi
+zxroedxtywemimrje[fvzlxeqgczajhimr]lrhvziwtgglifto[buxquosscraxroklx]pryldzimioibwliygt[yvmeeklmyokbgexl]oqezpvcwnctcbskefas
+dcowzgprrgvczwfx[zminxdmdflugwkkkk]vfoltgijbqlhjdohr
+vtrfdkwipegmqbwrvo[kshaxjtaiuyicufl]zfkbjdxhihqmtjco
+djidszgreaxdweqjk[rdjzkbmqtyolitmqhf]plltubpvwojnccsygfy[mewadohjaliobsdwezu]vmrkkqgbtfmwemn[erlreifagjhqavlxxh]yplrasxtqcyowlci
+ctautcpnnufupce[qtydhgcjjqofrfay]lfahmjfjyppehyp[qzaxqkpopvwzqofe]rkcqkjpgptshvoucer[qmczzorygyrwbxiji]zljzfavjmwawfrfr
+mwmkedorswoukdumznq[hdujfmdkyiznceknql]wgvbskjuuwmwrsvca
+sdvjnkxypkzbwaam[jrjyjxcfvipcsfv]hqpkybfiuthhszpey[cxzhyjyccoulowr]bwjcdjlwidvcfkguaud
+wfvvroenfriclccedd[aqkoeakjbakjprhnj]ytucldefderfpqaibsn[gjukmqtaxbygrygukiy]xfreqhtftbfsvsjstda
+gmqthnogaadlkycgrv[qrgjpxucfcnthziuqmc]fqlchcfytukeoho
+muwfuurxmlzrcgij[ifojpmgnfufvhbmmeu]ezcruchallsnspos[bwlnhfxtqvwcdjo]lnfuojduqnrbdyk[jhfihfozzosipwsyk]akukjehglqpancmiy
+ultbxqkpivdepjvze[flhbwrxncynirgxwt]twqbnqiaivfwlqorpa
+izvobuuojtimkzlsak[moodohlaudrwsto]cxjybpccizkmeau[dqaajcusqoaatpbojuh]pxlzqhwqdgetmjcm[jmjesiihxrtbmgwkcck]ywajslefzjxwyfivv
+ymymmfpvyiyegjw[auyhltgyvzodazgd]twjkvzwomymmrhfthwc
+romqbwenzvevhyq[ewpxvrduvqewryaoct]wxgowmsdxrxjnyj[obazseiipwfmbyxhkdv]gjalmcoqrquvdnmzacu[abzkksqdcduhkizuzxs]uzuazfdegdfqjmmr
+frvysxhaafihjpza[uuwayzhynhgliyxcc]vdcjfobjuqddqibjef[iusgoufujvqkfjt]cejktzeuphymtswrxj[nthrscqmjniokzsq]tnsfuflhwdkvsrlm
+rrybzahzqjlsnrf[aexlsirbdpwkrfhms]ftuaymthroqwnjlhwv[gugocacufksbdyqsfwn]ptivpdoxkvpbwaohlfr
+ikdnaifadlcqtyfpq[ftwtatuewtwyxevw]klpnngjlhfuuwykwbqh
+jcjepxytivozlscfk[pdosptbukdrtforgvxk]wdghlnuxqjdaztviyiz[mqtajavotnicuxco]vovuvrvnwoedhflabai
+yaiokdeleeowglfd[qzhtllekpxcjvig]ohtsvsylelaafkxk
+qkopuespenokczipnz[qmncizyvbxioknj]piygfwazneqkamiq[oebzwpkixhbywqc]tglnlkwhricqqzzbkuo[azpshyiwubdevjojg]fqlqjwtirppkilhplu
+wpjdzojjjgthuvhs[ttvkvkootolwcilow]lvilrilboatpxwa
+sqcunkrlvqeapsseomh[hcaleossxxtjalzts]dwokbxvvtiocokk[ziimvyrfcpcagbchp]lqsdomcpacsejdzcxw[tpekrtncgabhvirc]nqguzphabzalcgqjbmw
+lchsqkntfaymwss[glcnjoqtmlubbldwxb]repxhlvahfruswno
+gvwpylwrbvedenl[bsexdkrwujurnrhirju]eskvbigiwdmjthvhrw
+uumyugkrepjyfna[clcqpswhmttsgtrnh]wnfqshojhbnuvkblcjh
+hcwvxdxtuptlajr[svvedookmmgybok]dgfqpjqcewcjwqcw[rtkptmdbzfeqcyiha]xjnmaukpdrlznfxvfl[phdpcpgmzzlbeplqeyp]xfxopckbwdpteui
+mxlmvngjychkbdad[nprwbbiggpyhrgjnox]kkkrpnnokeecsxwtfp[mscljzerlkqzmxsghg]mvwiwebrwurrppqw
+bdgrunylqufybegh[hwkqigrllagcnatuzqe]tfooqltcwxznzoaot[hvdskwgtazfkqlbbbk]zlqphymjvcvgybaxo[uvougcsxvyieite]lryismkbwdzxmprwjmu
+mtrggduulofkvbdmqj[oijictmaujkaxedjfm]kvriyuoautahkfmt
+ljywcelytwxtjojhn[iopmxuupcuvfcgubem]alcwlvcmjgwoksp
+ybgcqoheatckeypwgq[szypqmipvcfzxbl]obblmhvzjoiinqd[kvoyilelwmylaezhow]fforcawucbchzbjlrmu
+txgcosxcdgywyfhgjm[etzfxsiksioqtrir]czbkwziihsrtlceuaj[ksksgvozuazlcgqcy]tcottzfkvhsmrsyvf
+iggzhhbedhayxftelth[qznllaqmnrogfmdtbx]ualmvsfjwntzbzd
+dfeuwphubioymbzuwo[tucongmmrqerhidwq]tjzrtrfhgixyspdsl[tygroajgdzxudheh]oumnugqbzgyilbrth[ejcdurppfugoluctx]rtxzchnbmwvfewg
+kyzwhtfybawdrjkvoyl[fzrhzpdsmtmmmvuu]fgbiqggdekddtlpzvzh
+irtlqtjyzstyynjfjt[zrlqdodytcoqczaib]brhvezqcuycqmta[uaofbaluqnucifngqd]eeprilhhysftrhp[zmdzijhtuxhysuaye]bqokznpdffiubikgf
+nsrehcsbptmpdeskqi[rpcpoctimqyccgnpnfp]peakqjqlahqkqfgoc[irckfbpvcdodsmwm]oxnqnxhwmwflazjv
+iuanxnzepawwipojp[bzoxbyrugitmuiutg]wtsagitdstugmsssbc[dvxwzoncffczplwcaw]gifhatzuqdvuwnupmja[wncssuyvhyawbmfpbdv]faluhtnnnvuiwbbudh
+fpedlxzxifcuqmvxm[vrfcejeyfkhegliplkr]giqaenxejvscrlxbg[qctzkslosctnoamy]qyjmeunfiiuoxsid[xpbjwjejckcavehej]txgqklgnzqdtimmiqwc
+iwkrzpmhsunofgrddx[ecssnqrcjyhmsfh]yrmuqswzgcbxnaa
+lacpahmmufjghzen[zkbpbownspfqxnclzk]yjnyyjnabyhsrggji
+vgxbpddjqotuvzbakan[vnagjxrcehlhbxwdw]kxuenaclhrihntgwjq[bgqywyrrhjzjqdnu]eirujssxedivdmvlsby
+tsqxgzovbjzlwpcbv[rgaywjaothmsswcdrtp]owwnjohtsgegsgtah
+xzxejmuyfhjmgoxfl[hyafuepnewepjpy]lbdbsoxevfzdpnwpfk
+moucalsxxvhjiyoceol[gwxofnqdrtxzusk]qjosxisditclyvucbm
+bjgdyrlrhtkbqrjohwj[gcmcelqjvjadxqnj]tlupekhzidsrscrf[oqadjqqatohbjwxrneo]ykhccsunlyamcmmk
+vgihvcltopalggrjzsv[hmrksbhlxuzvtbnuss]yqpcbwauqeduyse[oojtsldylgtokmdwsy]intpovuqazkybvjim[qbqspjlovnizurecdj]fkxluehqgdogxdofnq
+mhwhttcwzcntsbufi[afretswhwxhwkptb]srrajfoeahmhecarmu[wgjragqlbpfbfpd]epytkbjxmblfnkwhlhe
+dgpphmjzkoobitcjyoo[nzkzbsfktzftpmgwdcd]nbezurwvzkhwskfq
+epuokjzxtxphttxtkz[xcyaposdqcfkcxhncz]hcupnojktsvxrfwlyv
+xfoshshomwdgssxla[uhshvhbfofuhdsqk]zbzynuiyfagqpemuplr
+hycladrjbjuyieejeg[ajsfbpoakutelvhdak]hjejfrmmzslupsepozu
+ksputfunecibpffwovl[xteycruesicuhzai]sqpunyzatnromjeq[xlzamstzzisboayh]gzlnqcjacsbkkmgzi[aonbwutxuesczgwnr]aflrcbdkkgoyumfakb
+gjgmaueywnbqdvgf[tpheftnkpnlyujv]tvnqzdugoyjybxfpx[lnhefqkhesyicqqgvai]dvdgtlsayhtscupgikg[fyjgjzcrucldwdd]ohlycgvvdatuyvduhuo
+emkefdmyurledfdd[dxzytfxcsdxgjcwxjzb]rqwwzvnosuhkcplv
+fpmhvozxaaxsyxcpx[yohzimahvewgvzucn]ztkenzkvcryyrmo[drnglpsvnlefqhx]clawabytpjiwgqflfbv[xvqqglnkzkxlevq]dhpydxfqbclvcjtdcn
+itvuciuufdkcgdqgo[mgwnpeydayczlvjegm]jyrwfakomakilgvhd[mslududkqwtcsojaosn]dssdnwxzapuchnxz
+twopcscmaiqhzsepel[qhydrqfqwvjjvinlq]tfmaoxgmccymtrbecjk[zkuwqiccdgoubccjoc]pepwccwqlxzlvuhb
+dingttjebuuxtxrxt[jmgffmivzzxvgvefk]bqxyaoqiukfungsvu[sidxinaokekzqpqz]hekuuswyvznavhuvk[lnmhqeaujpofmdzub]vcufrufbmgwvdwksqn
+mlgkvlqtkpwzcjbrr[yzhdcawedycuwdw]ncjgthabbqmeuji
+oqybrhgapxiiaxihexa[gerjxleappelousidd]dblyflqmoarwpne[enariawxfzzpeqdvj]lgjzpkhkrumhvap[rtcetzkiztcmyyjzs]adjuxkqsxrlyjgf
+hqxmuovloocgcgjlajv[hjbhghstuvarcwhfy]wldxggmqrrhiwdc
+yelxlqwqeiqqwwaitp[uservmlohjixnqtl]cocskteueenenkfmy[ehpleyhokmlzslrdlh]lyvwccjeqrqiofplw[pcsjxogpwmbhrpvvn]ncmxjsoxflyiderh
+znmujbypnozpjpkqii[iydnrowiwhgazihmxxp]lvehdleutcqbwwan
+lympkckqyhgbaumc[oodkeqjyhckceptyqui]ejkkqbitfscazcx
+sxvzcdelbmcqawvour[jgrjmuzvknqddwawl]cfdxxgxsviiyckx
+nrsjamicxprsigw[iywcxzvebsemowpdmn]tbmisagklgwliuuin[ztbbbdtyfonwumpl]cjmddkvsaxzaszisyy
+tllvdxtvmesnmauwk[qaomhmguwvmsjbwrwz]gvzyhjymfhmheexe
+jqiffwykdbqbfcz[nzzfstvzsrtshctbwt]uazcksxgiyuwlkbde[nvsnfriumhwznjfdual]beqjfgyanriagjl[mkwaqdkmtnrzfpszb]mrqgyvqvyqabnugoc
+kyvjsbdoorblnmy[wxackciwbnwvsggfoxe]pbufyorljghrayitwnf[orktaokqgpeenjyk]xdldvupmoyqwylb[aljdjuvxqagigdbti]erzojwkjcoxvuztbqw
+zuceocflmwjxczrua[gpdqtptmhzmrumm]lvmswwevpotdyrrztzl[pkzxcpcqxpbfmznn]zoaxhfddhvfzxmdreww[roilsmnfdmogsvyyr]inqfvvkesrzgzwsnwya
+lihowzmdtujxkokt[czwvzrilryxqxqm]appqwnbyvtxjysxkh[wpjuzvceldxgvsx]hkyptytryliycwhpbkk
+ccyquivxwnsmzvurzl[gatwkzfmiuzvlxqqyy]twruqhcerhppziydvey
+kfmpvuwkfbczuahpr[uhtwcsydtbjjfcyu]mltkvudoyovjipwmptv
+yzuinluayrwqgezu[qbeujtuehlcqhbz]qwvclzkjxuficbgqv[qrzlculckkjhunba]gemnanesaovxzxatvm
+ytnrkypitsppgols[boldlbadecdiaeyp]miwxcsnjabbmlfz[nmfvanenygvwqmgpiei]dqwnubvfbwzdptj[ormimocwondmsyrk]eptdchejhezxzpqimj
+bpvimxocqygiyfak[kocimiojschpxlmlbh]oeohxkrlnaramquwz[mvodjkrtgwsyshboxo]jmxqxvydlieugen[qsqvwfzcowdvxzeflfz]eoysyaomzucvprpm
+uhanxfxnxmoedczj[pjqlsouqdhqhforcuk]wgqlbagmjmtimaewh[qlnvfdicashjzjjmmwe]wrtbmpniixypmei[hnikhifbzacymvga]cueedmtiokuuauro
+rmwtcdtidmhhqvlooj[ibfeikfmamtpxld]tvqxdwcislwdijaa[znpzxccexnnkerzseb]cvyteeonwbckvkmw
+xtrkdnwsvlqfpzb[fyqeealbxbpjxohdssv]eomkcxpzhdzzchmg[rszbjedcqvxmotecne]arebcunvopesercpsif
+wpmgxfiikbeczkih[cjfseyjqbnprrzrc]vmofgvrwxiitjsy[cdbplfeqqrpvyoguuqp]gicntinbexxdcom[bhrrykkursqvyepyy]lhpnuchjkxczxxvqp
+qnaldysjxpygshfd[ggbsrjqdcbppktpfk]rfapyzecbxeoluhop[njlupwxmsxpopefrwl]xhmjoasimqrdlgjwm
+acajjiclnscuxdsyxv[axykpgkepnjhrhfgqvr]slbbdyluiqetchbrhrm
+ryolywtcfhaxzpu[cihbqzqvoqwayjwqtx]cpnraqtbqozlcrvoxn[ippcsfxvbyrodbacgmg]gfmqhdjmgnfisex
+etevnoklfebubfa[kjvpcomfcdacfhthi]nfqsxiilqrwqianlsex[ugqfrpggyrmumjf]utvcyluzwmzjygnta
+tvqkpekrujjfpzlot[kgoaglxyitdkwjmf]mlihujxyrtwfmzup
+ktqkqvqxohypotivf[nsytklzqsdqgtjsrved]beidsrlrqlaaykv[bhalrlzjhvbdtjcmig]awjesirwjnmfjdslc
+axgwliaxadkosbsp[hpschybkdbrmhmm]sslipdgrubjiifxzze[sptnagunoyiasvcunvg]fywdxjoeyzvwrpinmf
+rhpxrkwvbmiuoks[ynxkvorcjpyldmigt]juvdfreyownzxciopxa
+qlmnvnzbswfkadrm[gvgyozcjgthimuxze]ewpsviwopsrqszjq[odmqbtcagnixpgasn]cywfvmbtfcixzjmyue[ekxllezjdqxkqfxkflf]smxhvcoojkrwvuiv
+mrjroyadyadcyppfliq[xunpwmmutvwiewlkyye]ppcjwembftkaakdig[fycllhoijmljdas]ghnbcqzccvagpgplb[eafwmpftuwwwoln]qbxjdgsbyahqkxqzrlv
+fzfcqlltfzjujqeym[jeaiiecptdpgfsfccuc]sfsekysmcjtdxjc
+jjynfbiotihgcbrojww[vrxthptqnzbjegjxzru]yethaiycpixaqfb[bplbbjoveuznxlgvooa]izorgiwsvfgporxo[lnktkblkgpenjuqu]hsizqsxbuadccikdw
+qgqbnxfvfobowmipa[pgiycstlgkcvsbi]nuvfvhbouoykamjuttp
+evroxuhzulkndbn[lfllzavhyovpvvcvg]kihcrzllseowjwezs[vpvpwqtlbykudupl]qrmhrwziizlifhb
+zgnewkpulzskmghubbx[matncbjczcjofajeilk]gimvlsfgxcdovxelxsu
+zgznxyobzrrgfnipxlx[gsazrixylwsicyquamn]isxlagxgkbtgrbjknn[qxjewpiicycnpta]tghqdldoiwdennnuha[wpwsawddkuxonmxv]bmkekmujdpmibjrg
+geeoheswegiuwrrmii[hbthbiwayyxkftmbayn]olgnlfwlixhqjgjvgsr
+crxkwxwfcdjitekzrdm[duvbsycafjsvivy]ysrnkudiueyakhpydv[totferyeflbkxuz]nyrvffrgktfpmwsmaig
+shfruolertwzhwvfv[oaeslwnysponjvpne]lzvqqieleintnev[jdhnbbkdwzksbijpsle]svtrwqftbwtkzzixrlf[wzxzoplqpcybbhhfz]klsezcnzpvgvbxqeedp
+rodljmmftzgdnxxcufa[jgqmtuwqkermnrimyb]uouynscrkxdkjhrz[hpihpdzqgzcmawkdsw]dlvcgdmdmupcmuduu[xyjvfzjaypcbbeettvr]pnqhcmdgguswinpxmqo
+yrcxqglagiyyhpt[fudlgwwllpsimkfp]esvhuezhtkwulzmut
+qwiwjsxdiblovdjx[evezbqlggluydkth]xtoftegxpmgjsgn[dygxbbfgcnrlaebugya]jvcmiigduerloizkyzq[oyfqcvstibjtqcknk]sdykrdksunkdurm
+mlublposwxvdmcasb[mmvoctlqinqyogj]lblnmvdegbddxjuuij[vlkyfhcwrywyksv]epprdwoppwnazhbfxs
+xidpschespoxuwka[lifyliiagwhtynahwr]mophvutwbflkblhzp[ngfdfvwwlfuyujsy]pqgdfdrrwonjcsxyb[txlrkdplwmwanoxhveq]sirdziimdysnzdrzt
+khglmzmqqlgtsoyuyk[ckwowqtfatmitmx]cqsnmpgwitnlycvr[hcjwrehoqrluifbx]dvorwhvznwutwctl
+lsjtzcpwlhruhcyvu[ppankbohskraacy]xriyjykeufmypvpcg[khfkqffqnnzsskbvi]exldjyjnsnxqgfxg
+cwilddndcerivvgcot[pwnjzedgzbwjhwdngiv]budzscutbkzehgi[swgapyqpuwuqitke]aihrettehkbulnndniz[ladvxuqplmfxnwm]zovkncitewbtnxao
+nwkbypvbwxrhjccd[tzjkzmgvioaqorgsan]bghmwniqqnnugulkcq[devmzttwdxjayueapxz]pigrhvuthflwfvyghl
+zxoysnouzggrhhygrn[wvovlnwttrpgnub]tflqcvvfrhwiikpfp[fmvlpmktaybiodqon]sawjgpmqugnvancar
+sfhshdpjhpscqgmcx[elzcuconpnmipksf]qebfhzrzjddpkrwy[mtpfmfwynqlzlcavdjx]olgxbalbprtdnjl
+ribazjlrsqqorxkipi[rkwdafpcbgzcvveipl]jtutooefoewtkwcolek[pddkdpvzyumbkuci]qyeuvqqxiqrwuzygf
+eobvoofynuxzuaudo[icwrahzvyvejahwlbq]ewwnptijkewsppx[bmqxtgqmosyeyhcbsvv]ojsamjjroupnfxbygrm[yqqusonrkvfmwpiwo]nueolsbydgeyemas
+vdmbxyiptwawwgfxzh[kmxqzdwjfyspqkptz]hkkuurdkmfzivckdwp[ncwldxetviygsqga]oxlfsqrbntyltzp
+gewjydarttmsjtqn[zxbhrkxlalwtmmrgfag]ouqpvnvhrcsyaepju
+iogmaqbbnpknpihgdzr[xddekzhpwasgjya]qvqeqqyfgmcjqlljhn[yqwhbjjgtlspllovxu]yzvhuxwuqjnqqwu[mnqqonpvybsaxob]emyjayuxxbvtumvsc
+ompsdhuyibxinkeelcw[vcyphnznqaeqzcdm]iqpgmmktiakqfpiejnm
+ciowlwsiatdaewieita[sjaasprpfvlolpah]bpeqtpttkceukaef[rprweenazfnwtmfqh]wedhtjlhyntjrqw[hyrqbnvfdzilazmclcl]cnzbapdwalrxcbd
+duvtrfezztrbcbrpkwm[vtrqvfcxuueqcpbx]xmjukrhgfutvtcyd[ptqlpgejdqamrwxxbl]aavkmmqbqdkxyuwpllb[cvtooqdwzcluidljfni]pohomwwnjxhohmv
+ieozeqgyrtjpfix[opyearfnbegqcgjqve]ljeerzciyhyvukdifu
+awjmnojyjmqatcnnr[hdggsjlyjznqadyuwg]gvkbbwfvbtwwfjjnpa
+dvtdsunzfozfzmgbost[cvhhdpznusqmedy]ayllrpvroikxhxetks
+jyyboehdjvkufzixpf[ijsadnufldjduipx]zmcubrihovbjtdych[vtmkafgmqunhknoqttz]amdwppzqbnylhsi
+gblfvnsmtqowxewqrzx[kzyxibskmbrkunl]nqajypwcmviecsn[fvewudrwzvqashspitb]docgbflbdpnxxtin
+evhfjidivoswuxhsbd[wmxbybthkqklvtfekms]xnnifuivlakbrvkfaau[upixryknmsroqfh]tfaezdhmvigabvwfgt
+dvdsnwpipghloop[diwimibgyehecqflqtd]tnfzbffdhkvhfsbhq[rtmprhoebqdxppae]gczergujhbzsgdxupd[ezswzkaawaqhjcdgfl]jgwotzkgibphpas
+oyuvlfvippqkkfxsgsi[jkfszneoxbhkxlorzz]rmotcrnupuzltlqurcv
+olonicnsustzovmd[kkmgnznlwjgwkkytz]usukziqukpwigcfvxw[uveqyxukqkusxuz]aqojtdccmpwlluelsyf[clqnppgmfzwrtlfh]obgkzmtyhlcounaf
+bgntejhmisbzfrblik[nitcxhpegfmqugmlw]rcwxgxofqbishzhq[jyzbrgwyikdrbof]gdxdwgpsfmmqejfyodp
+suumjpqhafxvgmgdokb[lmpsinjodlukkfk]jhehvjrbweyoeivfzt[ricjsiwyhcomnsgltrs]iysygfjrdfebsny[irlxudmuuykkcxj]wndlninlcnixabgs
+xusauuaaldibtqcyn[hvjidaemmzaurmyyk]qxooscxoynakekchbj
+xilzzdiyoqrwzcnwklx[jzmgqccfobvufhdfgha]lzkfzklxafmroamh[xxdzjoeflrhqibidync]kuodqrpntknogybhh
+zfogxhqdfspdmvxtuwp[fshligclkdavscty]tkvaozljxenzeoj[txujxbzywfgqkyfrjh]fwwjvdiaceuyumeqscq
+iqqislvjgveszvnb[qbfceykxhcelnwes]mgbeubhjgaydsrrps
+unvvlzfszuuztae[ytbzbzacrvxlksvk]aeaoeugpmkydbixbmv[nzznffshspwmlkqig]hwamlnoeyfmzhrxmbi
+eyrqyerdzuptlwfz[pgehfansstewngd]vdlfglsqchelite
+irwhlxxczsizolo[mgrotoelpfspnben]xuboaosbbqvskeooh
+mvvsstnbgtaripcmiv[lqhlubezzcqsqoh]ofqbajkawszexqw[pytqrosnsskcgmno]ceyhqvutvgwawrao
+aehuceoazqppxdvj[fekwbrgjolkkssozjr]ovwtwkvvxtwlatlhc[anrzzudeipqtlgvtibj]djkyozdjetkxaxrg
+qdkosvyshtjamlw[nvupkgnksmlfyivlaqz]vzjxmxzwetvndab[rjtknjbarestnsqar]emeeqkvpkwwwbpbyho[fxsxkmlskjyvniynt]yxdwuxqranfmwae
+mpkajmbuiqyysjiqxg[gmhxmogelodamttt]aboupdcqcaggrmjwo[uqmzyshqeruzquxxez]agzfrbsajxlgzgfueb[dxxqiqrjkpgalcp]qcqyeyosztojwikdqo
+cwzcxuvjuongdoellki[pqzhljdqxosuhdgqc]qqxxrckatnjwvmdjvty[qdlnrwhhbeldxrirock]kzsfmkvvjexhibpjfpv
+xqxcttuxwhriomnnarc[hrkxvrjviqxxeih]ofnkwkzmwkwfbflu[bsjloysawmfoigzrsa]kjajcjknclhkjofvh[jtocrkwufebomaervq]hawuelpfzimwdnxens
+axhzhgcgbqdeauomnjz[hbuvuiuidkykmvbd]yjddakntyygztrc[mgxbjwjbkzwnkybcgch]orbyhhpqxylsrzu[mygxsbzjoicfneimx]jddqvyyavgguqlqk
+sstrdkfdyahmpmolvuh[nuhocbdkubnidqy]fnhfqdyorbtzefo
+youjjtvznztbjozve[vcsiywlpdylxwpg]saiwvtogtdayorhni[bcbwjvcnlvrcqbeexf]cxmaphpnniedclqd[ilghtvdoebmgoykzmjc]gqxcmtfqougbpixu
+jypsrripwfsirlizywh[qwqvrrfaltcifzgrzk]urwxtgxsivdxexc[hxqqrmnggugvdgdcle]sirkwolflgudrrwfvnr
+jczbvdpvkmrklaxdh[iqwzvnjtjhmulvo]amkhoscjxrxkvtrlm[nlvnfnszosucrhvafm]dpkerwgcehqnmxmny[xabxqyrisiuhudad]egbjvaumucthookv
+shephwsolmshfqhuslh[iqeoxejhscbjknjkgk]ytigxjcdexjgptz[mdcfmxfkyxnaaoixuv]ltysxdcxashhzrhfzcg[jrjzihjbmjzwwikgrj]zkrlixaauhydpmvpggc
+hdwtqxvelsuakiujcgb[vrzoeqcoqwpdvdxrly]fieebtoboyeztrohbz[unoqhtonsyzptmpgo]bxsxkyquwwdwyhpxcan
+wbxdrndbjpmgdewnt[hnmfgladivxjjrhgx]hhwhdeyhnhtngzasnm[eanqualmsluacqejow]wtycyvqujeitvrvtkhk[vfabcjjiloownkmsa]xqjgahkglpsjfcryzv
+psxpjyoleoctcjgpwvw[qkiussudbvamcbw]hbauvxvnrwhyupg[jbuclksbbwmdnddkn]phqrldjcwlixcghiau
+oeiqnisrrknnuqczk[qhtdnexhjbgdaplymaj]fqqywiecdftfcpfnkrd[lvlesddgirngtuo]mfvvfvlufkoqwpwl[hljsgiuexvjatvztcp]ixguvozijkebslzjaco
+dktnilosvtkmvltdwd[vznigqxsgvlquhbquk]uinsbypzarhkgsgce
+ljjdiiuiikwufjnnvjm[xjbujiikgaghrijcbsc]escofoimfyedoist[ltrrqmdcekykivhaz]xdiijidhpxdgqbtxue
+lfwumqctskgwsfvhl[sgtnklskhazwypsys]bvjxbzrabgfrvyvyv[rlityjbenmcoigrfmfh]wczyjwqulaqxapozcnz[uqbunpfwhfrvgqcozw]ktvibesxhbrooqt
+ammvknbggljpkwpr[vnrtrxiwcitskywiw]ubyickjafcfifgupssy[cbkzhebhjtdbsgct]cgefqdgpdpcjlzrz
+wzpaqedqkmltsuij[jjuasmpwngjrynzettu]dtmgfvwtyxdfqce[usljscrncmnvrbb]tnevcveidnyskzs[ttmnmxqodycaikjio]qfhvrqvqpgjhkaaicj
+apdywyijusgxzfj[sgbhrwbwywwisyg]ssiiosnfconncgiy
+grownnednjxvuew[iniatygttcdaelocols]iyzwgdboxuadbrbooe[tojrecocburpdzi]oelyopkilwnsejur
+hfdpohrtqqyfntpfk[trpnstnxymqupxjri]lheljryczqxgvqip
+iielceqagqfksuqpzr[ollobpkbzanfxcjuhrz]jnxizyaoygzbzciu
+njpftdmpmkjwcngeot[mocqjgcycgznvcqjv]aixpwfggjyqyemoz[fmklzletfvqdyvvg]mznoxpgwowvjjmus[prrehzdyfwwuxvhl]hqppujbqaizlzvv
+vbjenrifdqsyzlwga[wmjenjnqufhqohvgc]uhrzouilmqjnjigwpa
+vwooqueyzrusban[gjwcwiagfwpvrct]vfqlgxbhucjhvobi[bkbtechiapvschnh]vjzryzyisyzyzewdy
+udumujkujngtkcfv[klinhdudyghspdsga]gxavvcsxqxvaziqrmsm[htseffbehxafyhoars]ghilivgeuuzjlmih[vtjpcrmvldjluqdazun]mebwzbxywmrfhet
+cwkfdzyxoayxukcgdv[wamyytyfmfaucrko]dchdvtpdkeonmdqc
+zklwcknfrvlblaamoo[ndrnobufquyjknl]dnxgeqvqwezfwky
+zbqgtpvsqcteltrs[uwrmlyjkcidsfdpx]cgaobtbuuntwyuhxmjx
+lbbyafbvhsilwmjivv[fkftqvaahnrokuhu]dvgaejsxgjuwiemu[yqopsyejqtvmlfxm]gzuulybydsrzhigldh
+ficlcqjefsddeds[kfkmusacvnqualtppxh]drbsbqefpdoossbkyng[uvpyqnoidjnssjobt]gsheeufqtzrdsil[jbvevjzeugpmopo]nrgxwajuatycddzwr
+xnhrhgadoziectoigmf[jwudbvxzwdfuubhjlt]lupnypmntyrvwqzlb[vvfvttkizuxshnhhw]lfdrjokdrbrcldjfs[wawjpqzozodmnmah]vdbjaoofkmhkjbphx
+fsymutmdbqyguwut[qvxhywjtposhjgwuhxg]ftwhtxqxeicsrlfye
+fglgkrjwulmkxbzolgn[vurpqcvuydmympiyofl]nbzudjasxeknjid
+nbtrkgsywnudokk[vurfuvkjdvnsukh]vkmqsmcrotppqorkah
+iqccpqvhiesnaohkhao[xykqfbmojjnscqhdv]aqlxkvudzlrncmpy
+dtlwnznjqsixssrsaii[vkikcmtsepgtyqhica]ovcpoaucnwravbozsg
+nobwzchgrycgkxc[tqoxhzxeorivdtdkde]ctdtkwzsvuxfgjtjg
+zsknnbedctklyuxngn[jjzvkixpfmskcagh]fkvhsfuckghltyqk[hmygppkjpcdicxw]mnurqampwwoiiynr[jbkvqeqrhnksizlssff]xhkxiwlzgvjdfakjg
+gqbxrvghncjdllxtge[bjuwjsvewzvrgcujf]tkrdrbempmwqujk[pmbtbgbrgzpxeoqsxw]nfvaaumgpjysgtvk
+clfcvnwzcbfaqaj[prmpnpjwklodeukzznp]zukpytpqzgmlbvidv[qhfrkjlsbsqufgnet]pfhfcxzeiowmgiyksj
+vogrpuzrevmatdbqqx[qolpybjnetsxcqfcvbc]ixxogojluwsdsldl[bztslfanuylwdld]xanhrzxetowrgift
+dqrkbymiudzhkgf[spvsqvyntikovrefqc]bzltachhfylbrzl[znefllzixypjdkmfcxn]mtpikjxqsppxlal[oeyhdcnpxvhawqbmkzy]nxhshzdshsiercr
+xmgedfiblpeazvgkss[cwbtqqjoaqbrgbptah]clzsinbtqsrkudymf
+puwqcxmsuxnmneuzrhj[dbljkganxzmjvtxgr]ekmomoccimbpbieaf[khezmkkqdwkouzb]cpkfuyzfdfxhhhuhk
+thfdbnkmqrektilpc[weshzvpsyofygysio]bffomelkkwvfsdxa[owhidyrjieeietzn]kmeqgnvyclngrcgquc[ieikyuuoliuiczq]nnqhogvlhwqipvpiao
+zsdcvcbtwlzlzlmteky[nrqtpxoefofrjeaf]myjmnezlzkfcpmik
+afyxnybelqewnebaai[ddjgeajpzswwdrg]qfwfqryofesysiuznz[ouajwvymsxmxzvgdx]ryuvawdhfmfvikye[kuovduidpcdyepuoq]didoelcmjebmytdyke
+oopihddimztsopfcia[udmncuvhkvvbcmxzey]fpehwxjiczzhqcxxi[onmizmkoyhadrxpsemf]htycdbotvmomguwbttt[gjsdzuveiuvudbyakzw]ramxommwjmpkihl
+bwlccfsaovlozdqpsv[dniiqfcldfhjiex]cdzbfrecwehrluxzprd[xpyzvlqwekcyglksq]dncoqoaakpgnbagf
+uxoopzavjdqdkaz[exsbnpbaeuvusypih]qgojfhbprpoavcbxysa
+mailxensjcsuodzpd[ftitdguigzeundytyp]fgoitzvujhkjynr[hnpcvussglqshxn]debsveizfcuroqrm[yeageekyjhilfwr]ozgpzusfpbyanxnzuak
+vxjnjaguqlrwoxlhfbq[zlqpitkigwihrikvr]dysutdfrbljdzjgcw[eslbaxzslwoxscpgoy]sudodfmlfyuczzf[vsthktidtghtmazbip]jfyoxxiaowptvosevi
+lgxmivlggzfdpductjg[qxgoioxsurcwayndy]uwlgoodqsjoxsjqqln
+qognhfgzowjikeqz[nkwezojneylzwfdm]omduvysmcovvpvse[bwxvkzoqsykfils]jwgfmwxajhmggos
+pvuwgxmpcrqknzpbkg[qbpmfthtmbkmljnsqs]zmplrxnulurhzvijupv[tgsommhtbbujbjpf]qaxqxdxmpqwduwwxpgg
+lzlrgghqmetsmcxd[fjffxsqjqctkxnw]zlzlpvksrpnatxmh
+ayirfkbsdyssjjpqmi[vpkvhbtreetyxstwcqp]rjbuxsgsrlqrdnpyg
+ukqefgljywjmlce[nqjcndjjdwohtizoed]njfgjjqkdenohbwqm
+kdwzhrslryuexdgbcr[hmbcvmrrmbsvyaii]bqprdkrgdlwjvoiyb[mqbaokwptkfmxzqr]wcauinrezkhduhcktrd
+hbtuzqvyldtvwgyumzw[dibedlwdcjyfngungt]towfeyxyxixyxee[libuilcfsdkejjl]wzzxfhwcgawuhskreyh
+oxjkoqahhqqcxcoxksg[bouywtiajyfmanxcx]xgqpjxtkaejvmqckkuf
+prhqbaccndsoscdm[cuayhbnfywztddbvww]psgyhytgosopvbbp
+dxdtcskiowtdomepjp[islofsowtuyqvcqwb]pjhyaudkqxxlwfoo
+vdatepedgnvgpah[jbooucwxtveomnpmyx]ixgsuidbemgmahtlt
+oncdjplunkvqphbyb[uvivlundxhdiwjncfq]dvhypguriulrangqwr
+vipebvitwbccsnahjhu[kpwtbwddwqgyhnkjsv]acfaqhywmwbkmgh[nryplosnxtbkpwxtkfp]njzhnytzwlprvfcv
+csvlzvkinldedsxt[dbxoceaaismltmspg]yomriudrxzmlbbbm[qilkpyxcxlvtfzqmw]rhwekeawwpyngqxzc[akqljrphobjicoco]utlunpkuptawrtfcccv
+acfepkrkhnviixe[cvksybusnhacmfoy]tmqqmgfdharutrqvdpm
+hjehtfbextjkaxilhaw[qvavsivlumfavaafhqz]ahdjvprlhlmuneewyxi[rzeuqtjkiuacirxsw]ucmfkrotfprypzuyqe[rutydtgtkppegdgjn]hmvzjyquxtydoujq
+ntosjqtunrqfoboek[aogjyqyzxpdgopkpbx]sdvftoxtcjefotm[jivgsxjogxklwkhm]cahcjmgzepqebtn
+omkznbrlrodmtmnhwsu[ysoinknpnzrjqkf]ybiqtlzoiohtldgoaud[fbzfiajeahzmiplcih]qimubctnnrmtwro
+drdygweayxraomiblsc[oglpuxzweqpofwi]mbipxabkjqcdscltkh[axbvkumlaforzbqy]ircpsgstqyzpwnv
+jefmuplsptisjqguywe[lkgtuysseapteszy]wzcehypttzjhjfp[nkwvzebjrydcwfkqne]tnmaxtrhvwvdnrhpxne
+elfqfvbjutssktxpdo[paguttthfghhyktkjjy]wkpqdurcibsvviqfqpu
+suzpbjqdiebctwhb[gwnbzgajwrorqcx]qoqdgemwbkdpsqgjds[qgozargzosdgbgo]hbsmqrwnlqsdans[vhppwpwwamtuurulc]ylczevsobuxtdhvyg
+qfixarbnawmgjcga[dhgdmxcpwpvycmwl]mkqfghairqabhmokxk
+srjvnnbutjaeikkbsd[flieajbdmghmuzp]ieimmehrnixqjynp[rjxiepmrhwrmrpi]yfrfmlgakaehvqm[hucfgczbwdpxxuhk]bvgmehildjqbjdu
+qcmjtgmmgybxhde[fvpxdzdmzkhxdzjfkf]qfnaclxnryinmvpgr[pcsmctnmmrpxtfgi]oszbhmhynpzqvtxso[qhpljywydqpnksmwzdi]yqwxnvgcwsdwuluiouo
+vhvuumgtzbrbgazpo[epktoekzvomswsqq]bbkntocwjpaxaoc[rnlzbqxqcuyltjxepz]iaelcpyexpoqavcbepy[azyksbvkvgmgimw]kvknvptkveiacqnzll
+pkkcmeinlwpoupwpu[qtoyfabmibfrubvepwx]atgpzcehuidgikzn
+srwntduyxjkpivzkgvl[hmenzrmnnisxgodof]lpuawirahbvibfki[gazzozitxhvxixvc]knbuydfpbjzupju[emzrzykcaeukvec]grtwlnuzmqivnvknug
+vzlbpuiceftddittp[srespcesbfprkwuku]bslyxxcynfqywwu
+icolypvmrgrhuvj[fgpeakrskxaljnakz]bqxravyjmdodsvhf[cjyehkcrdetiknsttv]dhoghrdxmmzxbjtbql
+nowswrulawbgqkmcee[qsktncayiihoxiu]wtsjxnvcxdriviyn[tebqonpavhbfnwxvjc]tvpwgpgrozhtqtiy[lhagntjbctcsdejajh]aedpfftlvvtmaqneaxd
+phiopnkoxulhkaddkxv[ueqfevwkcjwpcmsfspz]zkcoexersqysbtqdpc[nmcsonrswjxvdtuk]xdrsvfxrrdrfdbny
+aosrkxvljnapvnux[ldzgwtxmjbynmlp]yrxxllppgosniqv[prtvqenfqapocxdrlst]gypcighnnppaytp[azueqhhtymzpujx]lsgvwvvgctkiyvlc
+rketxmupdbmrircajep[xfmnkumekemjnwki]zurvxfxnrrvkmkrhbxh[lsrwyjtfjairiuwbaw]dyvmozkzkcvmunw
+crxtvtdwdxejpebbv[xthcfmihpjqbhrvqfkd]hztqefpqdtgyhfzqsi[nlaeacaqscestvv]ylbteskdlwjfwru[morvntwyebnmswguff]othonakykxxajuj
+zclhqcnlmxsurcrqaty[stohpulyrzcbabnydyp]veajkekzuxjmecdzym[ysujzinvkawzoqi]hfkcorxooelnfididyu
+oejzfesyaxeittrdh[yziovimnkfkadiplm]arzmtikoiveyvlsdkwd
+wvdwkqqmnretidj[smwnemzwzqhclpkud]yzguktkwahnuabs[bbyhgwmhhbpbwij]qstxwyfjjagyqvdaexg[nkerjbdjlikfgdv]qortpkyhpqvvebjdzw
+apdkznwjfxwdrsm[fddlqepbyrbrfgmyeiy]fvymcxblcjkcvpcyup[szsfswjdzmcabwuz]hmutpmhknvwrlwbvs[vpfcztrelzjnqzq]gqbpttcrakuedsp
+sujqaghlxszzfxf[jqybozaufdtanwa]rthiqanlennnowvdkm[elvfekcowitcout]ntjaqinnbwtqsctwrz[axpnqwfjmkocafoeadn]aplpjbnhkrcrbebmo
+hzkbvadkdojwmdmdxq[ohmqkaainyaufipcso]zojzxelggufdascjz[zlxncckagxntpzqa]kindyikavjkmhopcnek
+yjcsnegfsmmnfce[ueladqjdaqflfas]wcifctlledgnvodtlzw[zqswolvsfhpyrcivk]vemkuyjebqxyahb[ydjhmgjxmruwwmq]cufuqsyyytlgbpwrj
+jkkrynqxqlgxukyfv[fugivxklerausdl]shcuiixkbmzymoxv[thtakgbdzvjsjsera]lmpwzqhthoottxvp
+ncmijtczixmeyfuhspt[ixlxgrsyxrebpupt]sdoinvpfizdezpc[xckbxvncmseucrzjo]rzxfgqlionzaeocj
+xmqnycsovydhyaqiv[iuvymmaguzbrtgs]zhvxodssnpnhajwzy
+rqqzaaswdepcnnmqfif[pzkyyjprisjybnnjcq]kqpjhykszghcripq[vgdhuqujrkqljuc]qhtxqkqygazsvuh
+qynvobsdeutfrvb[fddgwzhlhryauxzb]etznfbueibykerqfugr[rviezfaehsvigssm]nwhvctxhqvfdmgqe
+ihonnjncwrkvglabk[pnjachlnpyonivmjtc]uoxellmcbixrdsisuhb[nkwsdmhisjdqurn]bowvauofupqfmxf[liiytxrcuwwnimdurys]acluoarkxopwppv
+ipqsfckjkqxkxyuvxje[arswyomsnfueuwmcbev]mmlwwcviicdmllylq[jnqpolrlwmmccsd]nfobgtdlxveuuldt[uebjwwikiebtttgqss]ikdxnjdmzbrpqqvw
+zhjywcsrtcadzdrby[ynasiklerbnlgidest]xhzwkwypktpkqgfyh[fuuxtaekwjpobdjfvdh]jcsrxmtbrqkerkrc
+osahjtbzrqukvphpe[guutbgosbfkaurvuf]baiwluaouikebnlgf[cgssqcbscupvvadpbt]lxwmvxorsfcaorccxp[jcqzcrfdkncuoqj]gbgdolqdrauivfnsyti
+vvqcdtcodesyomh[efjjzleahiejvczmsd]naeosnsaltqgjrk
+yucpovujdwslgdczxzo[fbnfueoeatnphvv]gwegeafilsbwgor
+thfmmzylspbxupt[asfhmdmkqwnqppnmu]awoxkgkgtrkdjzz
+ghbifboivgelqxkfeo[gtpozhzqfntyyoodc]yjqcvpimanwiunamfh[aglylsuuakjkmqx]edfukuqcchtbhtblcf
+qzonwqxjkpwqier[qmrnrkkwruteiijirkf]xhnrnahamaegfla[fzshmzjiczdyzqhwx]acjlrknukkbewao[afpeaepzoljqxcwvs]dlvdxhsoljmqgmvzf
+mzibkpddgkilmcwcshm[sgpxutpcqniuckl]kqiwkwdgydpnjcj[exyhorurvawneziiy]njznkaphsmgisqyujms
+xgzabblockmothpuxc[mhiwwhtpmtbxowbnp]aucpfqmnquiggenklcx
+rnhfshqrlxczmrcz[agxxpteadztvdfeo]zogmjfpebldprrmqg[zppblhkevlkqlyie]mgovaojjsutbwtpzsm
+kjgtqizmvuqerhb[dmhtzazyzqwjhpn]knmrbytrwrcsonmshb[oiazannnreojooa]hkhackgpdqgyqsgnb
+orhnenfhsjyibqacq[tznvydkguvcwayiwmi]hejujxsitqcaabjwskl[qhpfmxgjdfgtgmy]ahilwlhjkfytezctsj[ewxepeeisacexgtc]paxwwhhpaukgjnafuwl
+mhmfziehhppfqoocvju[hmfnlywpplffsxwzg]bkhkauhasnuoglve[oytxewvmknoqchvy]fyodxbpsytyeltnfsl[wojcbkfsswlcuqcz]izcrkyxzjclhkfuv
+slabudcjhktddar[cvkvaakjffjjovgus]ahgxzdctihvboiarn
+degyynefmxidnbw[zcfgkvupltxmbhroi]dbnaezqekcegyki[tjrnhpsmfftiscppybi]qgyifwlhvccshdiqfx
+sxszfjmiathxoqnxg[smizlxpwmelqjlf]etoglecoddmflqma[hsggyxsxkhhshucgtnw]oqzadjxenphyexaqrb
+kqwjndajvawmwxs[fskyhhktkilzwjtkt]ufpvkdnhygmuzfsfiso
+iqdscwzpnnwehtqmwrd[fqbmsfrezrkhqcw]gqkpkiqhtrjpusoefg
+bhwbuaqjofxcbuxrqub[aaanhuielrhxhlzscv]fkgimzkootysfzwcan[svktoznaqxkkibhigju]fmqhtjgxbrovymq
+pjybsukpzvvyouum[rzeunjnideaseer]ltquzytuezonpowuhdn[wzwlbeegsgtwpzo]hqivrviswwfsdmpgnz[fhabjemewetsjrjhy]lgbwcozirgljoudhng
+ampiucjqxwrzbdtcjnr[ufubjvykdfixyzqq]mcxabdvjzhohlcmcu[xihctxapmjpmrev]mggwuizzzxymhypmcw
+pprbxhbjbnlqecvmu[ewuffgnuylwmrcvkbku]bntyrptthpmexiakh[lswyqkuxrfzokacp]rvkhcgbfnjivaagp[mnpbbcgrakjlmdqt]bujykhlbutiiqyke
+xtcidzkptvkjakxl[kwjzzydtkvjmqdz]httbqtbiyxwryblrfd[cyjwthdmalqkqvso]knfncfebbbueoqze[zuruluaalfysbnmf]vodfiptptwqpnllvbdf
+wtjthnkscjzzqrbpc[eirytrqekucxajz]ghycghnyntrthzkechc[eiylrukgxsqpetjfnv]xuiymnuzydlawjygi
+rjrldatkdhvzvgcux[iuhectextisybzvz]vycerefkzhnmdyg
+lqftkkvpvepilrmyty[uptcsbeqtmcljaziisb]himkwiqkrogoyhjpru[wxocqzrdgaclbeefd]mtytxwskqznxgpfex[whqbcssppfhqedhv]cbtiuzgbvptcticlbcg
+pbotpqbiqdjzsmpbki[zqcshqinikcszjm]xjxijypculvuoavvg[nltkubwokrppvzifi]dmedgmkonytjzzk[obonilwwerhchueuf]mlfqiwmaicuecljj
+exlndpqjplyfdbmvlji[fzzvnaszvmpwpdcovj]ymothxghgfddmzqtglj[wyfqyqwrhanponsr]ydpntagauckmdqpjb[icumanaybbefssdjnqz]owhsbdpufodsqezginf
+ukfirftsouqdsgbgmht[nrkpwksebkijlha]zfkumnifusjysuzt
+uyzxwkcgjfsekdhktx[qhgrmuyjmfmunghm]mgjbupndudwultdnnt[oczntpgnyanxxgdqx]oryrlqkmroilyca[xbevednhpnvzzwmrorm]bdozfrabvamfxae
+toqvrteazudmppbrxct[cyiebroauwofshvceeo]fhoxdufwnvmlwhhp[xykvdatsfccxlfmn]zpqqflqttorrmjs
+ltkcveeqyawjrryerqa[zxoihtpkswzjrhnbvz]cfpirvnjowhsnnbehd
+gdiyzvnydjwhfzrimq[lvieihnyxtdrgrbs]kpotvolpjgjtfiqf[koloumkhoyktylql]cxgmdumzkygpppqe[aywuzxkrvrevgnnihh]uplcpitzxbcqkmfgsy
+tskqojnfadpujfxym[xomwfoclpvyejczgyy]lkmawlhwgnpccotaetj[fvhbgpqqvasfykn]xfxmjfyoygcsbxl[ldveqjhkzxczzgxhbxh]tfpibohzhgrythjgqor
+xkduagbswofivadpo[mxlqngyjwbqfsszj]xoxngqbxwsttknmtcyk
+zvmlodxbacmwvdti[itdxiimzuvluomfxq]ymrkoyojdnsjqvl[dihqibcaznldgoteyx]thrrpohvatzogxrz
+soetmauqgsswblf[hlkchnarzzrgjawosj]zsghpkoexwcujpakaou[wvfxggiskbpgntosh]zbohdymojoxhndfr[qhyzatgvedhoibktw]iggjhmravyoswvu
+mwjmmmeiclpjmvishbx[dbmbrjcjcmbnqxq]mvhzexhgdmmnduc[yiccjcrvmzjvygs]uyvqfjmiyccasgzlz
+dsfwjqahjoozkpei[olrrkslvxvijsyopa]jmzojmvqtzvkhaxukkv
+kudhszsgsrenjqcrbp[ipvxqnbradyxoline]srcnihnhywqlietbgqv
+eklfpuufieqqdfrgouk[ycxgdyairggpehtkim]sdfhxncpiqxguzlqw[ysjhhepmruqaegxp]wklvpveoxxfyizmf
+apdypwjfmxhjgojtb[zojzoufhucunvjr]zjpuqiciaujfbjta[wlusnbuvcffrnac]ecaccicpvcmbomsvf
+wenmnejyihmxaxdqwqw[rckytszqrgaxmjpbqh]pngxudjgdtbshebyv
+ieyarudhbjrrevfodgm[grmjubbiqdodhae]mhzexlzijmzpltsxjfa
+byfyxjxqlcpjxbpd[pdqkhutluqjoelb]pberlwpeqxmovie[zkholwknvgbfxcyymye]askmwovcktpqhcg
+ccjcygsnanyvdss[frpxggwvfjuugdysypg]tuqczwtmobkusalqusm[ignjrlsysasfmzasa]nfpomrlygzjyylhvypi[lahpgasntfymdoub]rlvsrtudkvhtwhycf
+omuyrkrubieiduzegr[gcigoszvylmdrlrc]jtlrlsgqxiqtciehh
+hqeghunlieoqhetnh[unjtmdurovonejpsjtq]xtatdniykzzxpufps[ysaytzqvcxkvimhql]tyfkttaoythcttexrp
+ciyuspkrywyyplmlro[myfyzvlzntivldrquq]eighmudngyiwlsme[eukgbrmtghntxpacth]pmvxbxswfexsnkxmm
+gdbeqewbrhyfbfpeti[yvyiclmkwzelbqi]sktocytuvyvpcia
+gnfkqxrtauwnkhfoyc[msfhopavdyhpvpttg]ewuyaxehxbyziwmxd[iyqrfiudsalpmpk]smpmubdejyevdggead
+rqvcsivlxhfyboxj[flvvsnglektzosreb]yrfdzdgvkzgrxqoyv[rygmqeiccgtqqmni]frypfnzvhkzvlabrr
+idyqowifirnwhkk[vloivxhtkdzjrbuuzmi]beozwodgehayklyr[cptxwcsgsapmprrp]hfrdeefhyehwwvghgdq[prcadfsulvamytpsfo]tyodjlxziwyqtqmi
+tdwoqxlhhaqkdmv[cxayaazioswycmwj]pkenayaygxyrtqrqugi
+vtqeqlrohgalpwrqig[bewbjgeryrvhzwetm]hpccsjcgunkysntpwp[yefsyqedopuhssgo]jjkkuwoyvhzzcmdlvv[uqczrglqumshdhkdkut]dlfilxdlomkvtjhv
+fezgzsmmxdvhtmy[rrmbxexyopsrhxag]ezltorfyxclstzhp
+ytcnqprainktcjei[phwarjaicrgistkt]qdtijjhbywixrie[llwwjrzrxhaqhie]ufaezqgmmdhhzjzrza
+uyvaorvuqwbbexmafbj[tnpwadyyakeawtdextg]tiqechjccyyczpvbf[vaqfvvcbrowtjxyu]oqswjgtolyixytoj[ismczyxhizrzbbpscus]rtlaqgqrcxpjgmih
+jzamkswiztvnelaqnqb[iptcqxmvbgyaeiwob]xnhehagwcwdgsvpomgt[jsasqvgectyfdja]dgjdtjlzbkyyckvy[fobafodakfhhiem]thozlpiakivgzzvemu
+owfgxupnufaiuovcesw[jeskiymcmexnjbxrbp]obganlgvlqdczqrvwad
+chsvqakwmnabitpotyv[eqeyowfftbjxdkpyf]cflqouimlafrxuqvh[vgjbvqafqyzexrzhr]mnywvcxtgsaifufkcu[rtjuztroxgmpkbnim]xsqyofncdrvdpin
+kufzqdykjclolpveo[fopvuhisayecxlainzx]wvrhymidhtoldhb[vylhmdjqsdhokif]megnkxywjthliwepc
+cqjpttuijfdzott[wubeiefulpuuhweqv]cqxbaudhnmrvrigogf
+hkzaqueemmhessqjq[xofafbaefryhwyzzuoc]yyzaekuutvjrwnhonpk
+zsgyhvutvjmrgnmar[kbxkhssdsmefafntsr]ocjxtkpqmugcvkopvsu[dsdwezhcblqssurfmlx]veiioiyfnncyfrdwyv
+nsqgaufitxefakffd[brdfctppxqczvlohw]ntxmfmrsajxuqmo[pbalhistyzwnbfs]inapnupdvnwtlvvu
+krtwywfktmbdobnq[msnsspogynsnwdb]efcftgrjdyygncnqdks
+rrasplhwovftrffuw[txyylwsjezcxalx]voncsevbgofoiiolvk[axcouuspjtfzsekglc]qoutiffuqnorbpnlp
+etyvjsjqwelcdzpnjxm[eetihszvjrmccshr]uskafocfyjorzhdx
+rqfzvsuredndurz[ebgtddsixmgsugd]ilczpjzsukpyekhobu[eeciaduigoflustith]ohmscfdomzprzjncno
+jjjarldpnxgwvlxve[yjoqlmnvtslexafgvbd]yngfttqfsebrcwtctf[bwevtymxqlrpqqaage]wdcaqtgkvmzesrjex[svnkfzogwcsyfxoxh]hvrsvxcpdxqmlfhb
+ldwuplbjkimdskui[flisuphwbiqphsddaxk]eelzsgjnvecwedneyb
+busmmdpbgxvdiytw[kwlhqlohknjgwfh]xgmkafonkyzffqtj
+ngtpdikbtooilycy[dwpneelecozfzwwseg]kwkwssbtktxenqbnyfs[lekbaoqzpvjbnuvq]vhlbuorxxxxztocuiq[rscjyzvyznunxnun]jhipkmizwfpoxeuktk
+leghszcprzadwpwlakv[cauvyhahnjycqgmslqr]pisyfnajcsrgnvkhcmj[ozrbuuodecumxzbsr]gtqbofuoteafyjk[sodglraziyxhcpm]lbzccqgejtsczvj
+aiqnofheehbiqxqlg[wojpqldgrsrkqqpywb]dyxygexggvertuktz[iolnpmkijfefcsebi]okwjyjatnoyvlhe[zbfipzfoszigysxpwu]jitbvwjmknigdnlt
+tvxhyndcnfrobfrdvo[vwbjbbozwjpolbmlkwd]kzsgbhkshipoxtfp[sylshvahmztsbngdl]emwcmnpjzydlvvknrhn[aarrocnhsmnzqgozo]uswudvvjntlhqjc
+adbrrsdjlpyizfgvuc[qoimvkfjruwpheezeuk]gyjjepfgjpnyajypq
+xgkzhzjlkwacqnihyns[bmprkvdabnasxzqzwg]hxwyywhnuntidvpg[mvqpemdfnvvdlpul]ttqocuncdebtomizabo
+zztkzvwguaggryld[fgkabjmksknxlfhzpc]iysntrtaaweknzbxemc
+ocwsupvhvpcgwehx[vnmhfmgubwbhhrmkp]hqpkkwxwwefzojltpph[bvsvcgwsztazzzjoxi]iasiueagvwjgmcugh
+tkxywinosybkrutpu[eluxrinxkarduffy]brxgvdsoguiggjfemb[paaawmhcmdxneql]qtvmkmlldspsheyac
+vzcnrbtoegbsuglk[rqhhdwpschucsvlnq]hzjzijxkcoxpwhi[glryptoeiosdosoj]fhduvpzlbptbehtt[yigihwrodvsulsrsh]numkgigkznkushjc
+oexrobvxlwbqkrigz[nnbfhaheuublajo]pvlstoxdjdlbroezlbj[ykvlcsvqstxycpp]rxxgokhffgyioltc
+cstzrhymnqxwtwpnvh[dzbyzhzvaooswlkdrof]dzxgsohzaxvkiwho
+hftmeaqbiiefqtwklr[bmqfhgvsfrywauxq]brzoeoncrvljpjqxpjd
+vbnuypzeryxltunvcb[ldnuxdvgfcbbysibhop]ejgwhaxwgnnbfide[okhykghpvystpufnxqr]umdmoixuvfqgecr[rkwsaizjzxjgmmftw]czzteyolfgwkrnkxid
+nvflxkucsnbsltnp[iqhnmiyolnoxjzjzjvl]ctdsnjzjaflstsy
+glmwwqvembkbsnvs[skbkkvnoycklltrnyrd]irlewhaeagdiojbr
+gmzbjlrhyoqkiyrb[nezqwphjfpghjubnw]lflopkhihhamygznxv[zuecanynqmvceqxyy]kddyqjerkeuhuamjxcu
+kwneigdpqhtznqaide[ncindqlugpdagtfzf]ctutcducslvhztsii
+vhjlncnrshwikfm[amlxjsoevzrlkgoxnml]lztearcwiosrcmhfi[gkdbcfroyrgwylu]mwhzhimfdrflqqihaq
+wlswesjcluvzurgrnul[iehnkjghqwvennpj]znqbjbnszpnklctx[pkxxihelrhfkiqizi]dlmwkrxyjxaumvtlbc[icgjedlkxpjwmauu]cpbstqjtdebbywkf
+yxjwddyrzrzhqrarheo[dcayrrmkvazrzzlpqh]gkvbwuimfochtndis
+cmqdgywvwqpfkixkga[zkcmkmqoxmpzued]iaerrfcfhcaidkkvwvm
+uhwbwhbgkrzntdxrw[pchhzpiwclaasygyqn]oalmglktkidoijgyg[yugfmrxigwwqldfsfb]otdsjvxzdlsdhnyk
+ctjuabhainyjydm[axxsgakjkreoeifx]qaphofrkpiflusbeecj
+hdfthabpjjuxgoh[zskhkbvmwkfmqct]vmqfixzmyefzvza
+wnihepbftegtdrtndsc[wtmfxwvxzxorhbj]oqlfpicrqpjgvmo[zyvhvkalgcwwjucnxq]ppatiiiatwbpyiwjr
+ojaqpoarskgzmtrj[blfchukdercwzqa]anfsoaopkutqfqltry
+ofijvkbfofbyadh[xmlicvxwtnufzpn]jetnmprdolywrbmjes
+fosypykuipsqxaud[tbfwtcrdgvidqsg]tvmvfhrepppxxwme[qpmrvterftfxchiv]flnooydpykdzrtfck[omhwxcdomygkbaeqrfg]cwztbmysqwpqfuig
+lvojllusjibvayrr[izfttqfhjethscsrghs]egzyjonmwdatznvzjw[mfxjaelqslyvkaqir]ckbkobhykxhocczot[oezwabicsuchjia]ivolkjcvilnlsdnk
+acytktosnzjatmwue[medgjpfpvbiqgld]rjsbxcwqhrrklyfuu[xclxdxjcgjwkervy]mspnrnsznpccgcke[ptntxmnzdrorgoexbsg]bovvgignwezlpgoy
+wdefvabtqsgstwhdxm[otahaybdinlnszsaan]xgjagsgrnziuqxjasw
+cqkpuofhsousjfnlfxu[syvkhshtiyisqmrdp]vtvtzgdxigpsxcpdkt
+qwagfdeyxorxoaphzt[kijseqropygskgre]tnpsgfihigocogn
+nvppsgsgegzthtmpt[dsjjswqmzkoqtihud]toeoabpfknrnwqxk[hgyvhoktbvmdvwauue]pniilifxxtotvypye
+noijjdbzbeowhtut[tlfprbqoqtftqnjjs]fwqyyfzzbzjeykhoje
+rewfvmohscszlog[dwgnxketzlgefgf]fmvoxbzpxywaicq
+pvtakzfeeithcogo[mbktbqqelkzddsmn]nuydimwmhdyhrls
+qfzdrtjoipdlwkd[fsymmkclzvcdvqexr]yrhwcyjdzgwhmuijhth[zgturekjlobpmcje]eywzpwpfahsrwpwl[bgyprfkbmyaixrqj]fvhhmcltucokvqba
+vbpnikyhvhqnemdo[lnyocyrozyteoxalil]phhqtzpbgpzrusr[yygaktzkmithtegl]cskivnspoecsaoi
+obaxlisumjgehbkpea[ehzysfspgzssttpebuy]vwceybunjzvlqevd
+fpanvbmzhlkcazo[wfnkxffkzmxnslov]gtifhhnlnnxkeaolr[pwkmfvowikzjctrje]anfzfrtlihlyutaq[vbujdswyelmwoudg]lckbqqgkglpkfnhu
+ubsustsojocdyjv[obkxihfxtkbaeusurk]zmlqtgokothiokq
+fpgjwchgmuuwpzquwf[xtluejeypvgynbsdgip]nyztcugwqufjpakuxkb[yanyavbmpeqlalnk]tknqteuqrnnorhcm[eshuljurljirasr]supqastijujykowxxhz
+solyplfhwchyjtchjuk[wuwirpjuevkxulrs]axqqiqzteislutclbzo
+oktlpryceitvhqqjqxq[ufupbpapoxovifhqp]xgrwutvfooowfaxs[yxoxzdoqyhxsiwcxrgm]swmalhlzrknfxgnamr
+kmmguldgktbolgarsp[lxrqjtqbuhuthezfcfm]nhyafiyealodqrmagqq
+jfowosecwpywmrwka[rlvhxlrwehljixaggho]tadphuxhvtyxkgvyru[kdwmctblkvpkral]ufydjpceosbxpcy[qkiwffygsjragvq]zlvqihgbbhdojkgjgj
+fjnehklshlckrcdhxk[umipduxaengqrizo]obuxhxbrybwifedma
+dzeftgulomkuwyrrm[aphjorxpuphqsqmp]nnslfcfiblaexsbftwi
+eypbooqqyvqucqvyys[rcijvtatnyzpafpqhwi]jrpwrlhuiihzfwt
+zikyfwsyxwrtrgdkjh[netvaemiverwhfctosi]xwdoncumksuzsryj
+jxtpnxhjudmsotudd[lgvfscyjpngmela]wumifhvbwbmmticp[dvxmvcccimvvcrvpist]czyqdmwoqjgnfvjuxul
+fvmjytywcfdqfmfvj[nhufehmupvzkcrtewz]hyxlzunwnjccnnphrsg[hrfqmrewnweuyulb]hmqxiwaqfebkvxhv
+peqyzkuviznbwojhtys[svfilvdawzpmtygynd]fpfggygzketpcrrqx
+ttcupspyysrbukznk[rpewzuewspsqthbqb]yszbsclsnmbgoazsfl
+vwoufilgfhpaqfxt[dmlwugzgaywwzqb]rkwtuggupfsffridmux
+faibpioziimdefafugx[unrfywlgqlxqmwtxrb]owzarstubtqbwwjlh
+mvgbokjnhpcnsgcpm[vznublzcbsgzahkjprq]qdhqdlpftbetdzckvs
+dgpkamepjkfizyaknmw[ctdimkbvwctjqcbl]euwsfdqpvfkrxuwr
+rjcdwjzbrqqqqljqj[vsrppwgvlsokgpn]rxpddxouefplfnctudb
+lhbnntitpjdtprbd[cctbkujpuoegzrijpus]xbkzdntmvzbzfxljvt[brlovkywclhnnoyrz]rhixzndklgudnxkr
+byahaivirlqxulwdoe[otyasqivnfuwxmpn]vzsqfapigdecsmaqd
+myozxxksdnucpxq[jgpjjngigboxsoy]tidzlszxsdbqxba[lctczcenpuntfjnf]hzdlcamkehorgpz
+uoylyvyljpnzqimzgh[umieqlmcsmhnnxle]zvxwqjbaemhtoexyzr[gjyxtenkxacukadvhfh]kwagkgvaqklyfurjnar
+rqzfgsolwpyfzeg[fqbhyjayacblhmm]egufazwxlncxundcyyw
+eexntdgtjwjtizhlc[havetzocjnmfnpgzl]rmeusmuumcpbzodie[efuqzkuscnrbxwef]ehxrajahcfdggjyq
+ozakiysvzkycefw[dcjsobqhxqyxnvwz]yuoszalpobgzxqk
+pterhsdeyetokcbtzn[cdooadgsexdxfzjmo]xdxrkcynckoeirmjnlj[matsfmymdliwcqlqf]llnuahmiztvbbpise[egvzoittbupbbqrvd]bantcrmtkbvvbxi
+tqpfhtrunndzpsd[zjzqvvckxscqzavcig]zquncdjejdyzegvcm[sxxdynlbdymictrfspg]smgkjimutkedknlppsa
+byjykuzyigqofolpgf[cybrboapdfgimjwjm]oczicilrowczdlcy[tyaduotkhfvyatb]iklhgcjvfdyypdrdbz[dqkfqaadlcnxfofsvw]syuiaqaemufewlijxk
+flbmovywhikcuedd[xyzunixgypmuhyj]loihlyylswpxtenh[jadvlnlzdpmoghiir]xbiwlfkwxtthlimngnl[vgtvhphgxfsshkgkb]vttcixaajhdcjnqx
+xxxluypjxxutqoozzn[gufawigbmnhtmwhcgry]yaldvqcedheoocj
+seczijwqqpigqcchnz[snihttcoqeotvsvxtsh]zzgbjkslldiespjeejy[dxpgxigvppgnnddyd]hcwgvtogqdyllyhkqj[hbkamssyyusrgbg]dnnseuhlwkwnycktlu
+xeupsswdnrpzqvl[tmaszjcshsavymzuog]svjeaxmdkgbimlv
+dktkcbqwdeomyrp[fqaiihosklfctvufhw]kscgwrylrgbrxjzogj[hqvwmstcpchcqkowtxp]xfooorpnwwfrqstxft[zclwozroattjxczqx]uwnclgxymympirm
+yohglmwqjxpcgozvfc[ojnlrvpzwcwgnfbvf]uwjufnumsvqwxpg[wrfczzmahjdxdzhifs]psipfjeacaysvubcqqb[paeelhpmpjlvbal]buinqeedxmiijkxpcpk
+ficdlwimcpzelkxcb[kyizgumxqprpckyyh]lcwwypjwqbzhtozovh
+bycnifysnrtdseez[xombfbujijpsrccccl]tbvuubyduxnascxjkds[gteskflapsthkzigcet]otggllmgcgfgqloehf
+wvrrowjovflnwpjhhrj[dqfmznuqmmttqtdqnp]wevjmhhfmorcrvxvw[cnjtxcdcketvdidcbu]icghhdkudxptbdcdhik
+wquydkoyevtyfwqyimg[bhbhiqnxwfrcvqcsdq]hvcjbihyziwvmqr[phnejggzeulkkbdxb]uzpvcrhqhfkdkwvxcku[piqegxvplepyfjff]xqgfyfmlqqgcsnngmli
+aiufvoznehafclsi[ynuiezokzxlhzsnlnmw]buhvbbmikiczqjlfhg[qfqcudscoobzjdwfyu]dcqxfcrpnhywlcabobo[piypuleecpciydz]xiendyljklimrwaexac
+bmcenbqijebgornj[kskdxdmdlojqtjtw]kqpwfyitjbkfubsh
+wjivpitbdiigvkhfpjf[ijhxqgwkoctfiyf]ezeuczihdpeegpnppj[rdcsrurelstudtzqv]afvyxjglfxybwff
+rypyyznanxetdychyd[srdvpypvsmzquaeec]qzehxnsvvccjqbjres
+disgynuubaeuiwg[qhmjwkqbmmjhjze]zgunyyctwtucdho[xljnbisahxahllyiob]astxdjwqultlphiijvh[zmhdobafwbzdndlrm]hwcwvfxwjynbaxidj
+cdhvflnylxmmlsgo[oollmpblrqislxgmvvp]nivfytkylfpufcdxun[bocnmaazerwhgtzt]txxystvwvrsyoym[iafzkvskmhqjdtk]pgdgojbemypqbkofwf
+sjtahdwpdhuosbqyss[lopwkbhedbpxtcw]bvtrmrjxtncfnrw
+tdofrfbhpawcjokb[ynloiqgijuwanfekxsz]fdpwynqofzqumlrelfr[orxakqzzdjfnzlgywae]udzboibfngqztfguv
+huwdaehvnyhbowsp[kbskeavlxslbvco]sekeunfcfnrsjqgqpcd[xrfzxupwqfrobegw]ndphbckizbunwqmykse[qyoqnkrhdydzuir]romctjjzwxjbxyqm
+eyutpqnxiqygxwt[wxsiplbaidmlgph]vhlavtrefmbfpdfbju[owuuvbqjuailmgynkqa]setuzkegazwdjyzskty[oaqtnegjwglqnyw]pyizfgyjbebfacjexkh
+bxpzupefyifcfhkv[fyllboalhcmvoctf]bvfifvthhaovzixpx[vtppcxdmlfbfgvgolil]gtyweatzcejbwtse[prplzrovjaeczsyxc]jkylsdulnhfilbsqh
+eedtujnpvzzzdpgfrm[uopptnavfamhccc]qdnckczikmbwkxfmst
+hzpjojvdukrnakxzkdv[gychyosqibeedkj]efhirtkgyzjnrqn[egmuiotfolnlyjg]nbleytvfmuvypkpabt
+xadnnqlykhisnky[hvfudohkwpthdtyxe]xumogpuzbvdpbnapcw[gaavnafcpfbycdpvz]xlgtfefhzyskqazl
+ohnpejtztddevoitaw[hoixesaghtpruyayyzu]ksyuxpootryqgsfctcx[yoazsorvwpkcrjqq]allrvqctxxhldwwzil[rxxioewpnqttrzaevnw]tjgvhfbpninpzwvxtl
+qhapfqjbpzieybx[iobyolfvekomzeelsd]ygcprxtqzmwotja[pheachmbpziycyhykp]yhlmlzbdngqpvfcjt
+egcxwspabytsgsbam[hewsugjwdvnywgjhrsb]gbxbpxonzzllmmkags[jylmvbwwjvmvkkgvusd]fxckijyjjwfrmlzp[eiohquiromkekgsbp]bpimyywlklqwdpfasc
+iypuotjzbcsafzclwb[mudgawqgospvlepaexc]bsqftdoatnacbnpqk[bxaxwphnmcxlptaz]yhbsqduzzzkviyxmv[cfeyjhtefuxjqndg]rknngkyxrldxnqxfil
+epqhofdmbeblgqjcpan[tuffplppwdkoimwbu]yiyfzqemymmtzevrvtb[vzuuiqvvudpedkbdgq]qzkbzuuvgzujipvh[etjfbbzkhkhvlslkjg]sqkdjmgjilbpvmr
+cukbhochuhppwcuwwh[ziuieaxmtjrcovi]egmfefvbqztrinknvh[tcrdwnuqobusvhhhuw]llwltqrtuzujeuatp
+uegokkxxfybcozva[hwnrfpsyzbclsubdc]kxssypkvfyghukcsted[uvtzwttuxxztqwwyjx]lhlyeezyttvgxgtz
+vgriivdekqhhyzgmc[lkzxlushgdqezkwkbv]aqtzbkzcfxrkuwkw[aeubxxnhyhlolauhnu]qphfpphyptbmbvcyutk[xscabrjhmsfredzulrm]torgsvodiuuxkgcp
+blygklicgpngtpgcldl[melaiuchcudinutcx]fldhqlhwyjqhgthjsrb[qnvfdzzszgaedjqky]amhauyjuhdistfgbipm[irrhdtrtvlhanuhfb]cszydrvyiahzwegkdiv
+yrncnxrkuamoung[vteffidkspotxmwhna]lohvncugddeuevq[ueuixhkoouhzzfucs]xgwgddhczhiovgacg
+gowzwidadczncgofqsa[gzkezmlagbaetlf]oochwgecelkuokyunem[slzawxgblqhorfpezd]chugkzdgaukccbeoi[apmckbkkvlblsel]tokgjnxyppksnep
+zyqnagblhgoyiqihy[oisqkkmqfxdtvfx]qrpxcdxvmtlqbgvm[rsoqvutimhujjhbwaf]xtdayhoscopmejfxz[sqcpfrehprvngyagm]ecwgbravfceaajqg
+nntkrxodbypdodgtj[lnlglurkrynztgae]twtxdcskknbsbinlnnu
+meztofjunuxbkfx[cthbsibrfgxjyjawtv]ujhnboyhpoyjprrheg[qmjwvltvyjgntydrmeb]dsbnlksebapwyfrtr[aoyswieertsyvbfijuw]wfzftnldrfdpnmnn
+aanwuubqnptyoryyrw[izbhposjoffhknmia]pmpudrwiwouwspqnozk[sojpnvluazibqcqkw]veawduaoceyxmzwbgd
+aenjhairjysyrfylli[ksygiscororwmpcbpl]mdggayipjsxxfhz[zrovsdxuwyxjjbfm]vpmedxtfdporoono[zfnnenxocrbtapmnezl]odykztbwvuvlngxkwm
+aetllelassgaxxhspd[knioznfojvtrwjtnvfj]zmdmmmgudgcrchsuufw[qowcvxqgjaoptskz]qyrfhavolkmidaul
+gkevcmsegjotmpa[yjvykufplocymkaq]yhewirtmatswhjud
+kaerzsgqzwhdrlzk[fgmfnhjaylhdvepgdr]smkwpurhnnhaqccuho[cznwafhuvozqolaruqx]ktiyadiryeclynr
+qnfeguqpvoiadeipxs[tuodvfpmqdlndroq]ruumxxencwatfiv[otgvbhlyuhtbtyfews]swsjtpcysedmpsgwao
+mpxuvhlsahhdmtwlhz[saxrupcdkcfpmpvzk]rctxchvmeqnqsxqizr[isqtziiuucctgioof]vdlchnruvtuupzvukfx
+czxihwpinbwjaatnmx[quuiszmtsnqdsugbr]fhhhwhvrnenwekmyi[phwhrltyjkmdffqyu]woxrbiznmygdqbptf
+qwqniztrmqkkiyg[yvknzntvwmikawjlgh]izdzijciztugcknoi[mqpjeordqprhefbbsdj]rtwjvqdagpycdsxtd
+pyslrefucxvqpgtnfd[guaqdwpjlwhfmmyzxln]unlgsygdedtpfrpz[uxytlfxsaeouxxdpdb]ufpwpasnaiqyqnex[kiulyoykitwlllexti]cvxikzspuywpgaud
+rbzuremuvpunjopiw[evldkwtjsfwgvdl]unsafmnksqehiore[ipvgyeheeuobibga]ohwjoehyibiihubwuo
+zlxdszmzwikrjfjfh[rmzbjspugrnhysidi]impguvxjhbhtirmdihz[wlpaqqnimsearxzka]fftirrvfdqzoyusjucj
+yvzxaecltitusbcfqv[witiggtqtgarfrq]bhnbijcfbhoqpojeuqw
+peyeydbwowzleyebpqs[abxvydhobwmlksefjy]hntuuskjfvsfwnmh
+gxdajcawzfzzhjbzpxm[nxdsexkhsbaviwzw]kojsiljoybqxuvi[razmescyfxecbmzc]fdayjgkrzsmzngiszt[sdqgfgolavfqmuzqag]uzbbbcwcizcmhntiom
+gssllxegqicytbgko[imezntkypaaclprdo]hojadqftyszdiohirac[wcpiroednqmsrywvxsh]gkfmxwfuaykpwmdukm
+iwdziuryoqkhqzukcbq[qdoppjrevjmjuod]jewewfyupjnuydkn[ysbuocvxflmhbdhlb]ggjdqbzqfekjbbf[ubywismzabwewsrl]fufmyromzqrxtxsijkl
+tbmlgasrsqjxwto[mvoqzbghnwpunzvxu]wxnwrrzdalxjlflva
+hlalpnzdmwlhuwewel[uqawlldafxwhejwbxj]vkktsmliwswarsq[isoseemfosjusoo]bjbjwogehxaqhasloxq[oktpqmpxmsnvbnsubz]ekgpiztxkkuvpszb
+xfxkkivnffdwrqecja[lvgeafomwyqhlfd]uyvvthewoyqjyoo[dcoayhnhnhakcuv]sfucrodbqeqcqhpmc
+iqfduwigwfxgkhbge[qojiewaocberonshm]toxtpcpkallieefn[swenxuejqehdfutw]oaiceeyuhhzpazuyaiw[gqbyuetdmvtttffowv]neqopgkvwqemnrmauc
+bbwxyipchypnmsk[lefobpxeokqvfglny]rwdgvzdupkxjhppcqp[onrpulkcgonndkfq]eegboakcdoqrmdgfta
+yxeegoeubfjhijn[pmdjdggehnbtvfqkdk]ofdoklopgeznrvssgdc[jidbyndormgpitjsl]ucucnufigpzjuuxdq[phajlefstzyysdkdrh]vziqmjzpeeqnqholz
+pnlllqydepsbgkrhm[ltoscinqrrvkdyusds]qwwtxmmexgsfqgoh[uucslmiboquvlso]xmbeigfpdmodrodwbp
+jatdtuzlcxvgwpryf[dvyuqxhxkurrpblehq]vowbsishfgkjtvicd[krvikdxyqlwdjjnd]mujppmtqzmeviflf[ihqppwgfywzrqyx]aobhudzykvgwwhirfiy
+thmdermwtxojztany[xcohmubhlagpuew]lnlsiczemaohvjhhknx[spnegzrtgilojpnoxs]spnvmefqqzpdfzset
+jccjsrpjiyokryde[gfwdanjjnbycygt]iqiuzghicmveelbxp[tzugzompmkteyydyeb]bkvntycebtvjlgour
+rzskdzdoxsdqinbmjlv[fnwbduvtemtogsfi]oayebzmwazggkoo
+hzpsgtucyxemkvmfxy[duxikzpqdgcmkbl]bluegvpkqmjiyzibglc[qruyknjgybyboyvmrsk]pqyrdevwrpeatgkyo
+uubdyuzvtcfrrdl[stntntweakppdrbqk]yoiwxzsdefzihdnilx[vvvsontntjvgcvanni]sqdbtjoziwfolwbby
+tdpetsinuufpbezbgpt[hpklzrbaryhnibm]ucetauqranqexnfdstk[sadfrrjazeweeec]jaozzdmvmylzatlon[gyrmfjwewarvlpsh]wfojorkgrvraihwpaf
+sarrhlzjldgzhyuvefm[braqtukjacxtcbrgtx]rpfporiksxcacot[zezcjaonoyzxnbgd]jmrjkrugljonkzb
+hclqtamrzmzkhhwcd[hcxqnplterhqgbude]kduskujldxotldizi[ashjjijtmbppyhgxo]ozdvjfhxmojeqagmoa[dppzupkveblwydh]qonltaesyzvczgyng
+urvfscylyvpyvpqwl[akngblyladvcuwa]pauygcletxnisgriad[ovsqsgvuccmdzqcwn]jjugrvjyydebzrjghae
+ohvihbfwdsvpzohtu[qsxghcyyscnxwgnspni]kxlgrkvsbjeomgckk
+gzywjgljugwxnrv[mssfmontfbahkya]gfmnxglcggnbrpvuxv[poejydksxougrcw]tiqmbdmjniaqnqgptk
+hillvlrgjsewmjkoha[iighatessfoqwexqdc]iqwztbnauifcazihogj[xgovsowyvdafqch]qfjgljkcgkdmrnlrrmv[hnjcrfgkftyitryole]muemrwwikauccsregut
+vmdrttktgqkyovr[myycrednrrhozjdhiog]qrrfvxcqpthdfcls[nipthbalwkyqrmqy]xaprggoudqizdkqu
+ofmohzqodnueziyemx[njkghrspckzhduwsrg]fxxnmxloclzfmlkebpl
+naurkqfrkpbbfkmbe[cpttgjergcoemawxjtl]cdkngakkemsmtgtwyzn
+xtwigprawkooqitoy[dzapkodeyqhkixy]zrtxkzjqgqeuagdie[vnieacbchbgexzaf]ezbpshpznqosvuk[mcmcfwuzlyodiqez]bojvjhtatwvmxsxhkbs
+muiyjlnqtepriyly[cnrfxiwdlkrqsarpc]hdlysxsdtpqxquhnz
+clmaeawlvsluxfrhl[rayxcpbervctzew]syqcakahftovtzcdl
+ljjlywtzejfslouih[hmsyjqsqljnppyv]bxdissuzzauueguk[xhyiqeotzpbtzsrd]wapoxmkfmxhbykdv
+duvdnbsaqzqemzc[kfefbyefuptincfaw]jhuvhgdqrnjwmlfrmr[niprevfcbwagwvewhj]hdhrwocbqysjstefldo[uelmkdqczcnlmaefjms]bwszcueianjsjhiywwh
+yrfewhgpkihnhct[pxzsdirhdakahwdxteq]ygayoyiuikakdqo
+wjrmypbsxqajzbtwl[pvltruknhkznchej]ypobvzyforzyiihvzq
+pdchmvgzmxaspkcwkpp[kekolrkqgqcekeitv]xwpjbdcxgoelowm[wxdhdpqotthaeay]ovvuawitaqelckg
+fcqvgochyglldipl[ryndsmjdhqvikwnexf]smwbuebgfzzmfftrdck[ynaegesquznhgmisvri]hwbktncquitjaqs
+hcbbiznmlcfgdfjtgc[xqnepuustubktgck]jspcsloqtblxprd[mudjqeoagjqcfato]vgguzyxablhnrlye[rvzjejrpykdzzqcpgmc]okcylioamjhremephbh
+ihlcdgalqwvznxl[afsqmxduvmdjftmrjeq]ekvaovqjvajxfdutwhv[zolonpiqednbtfpsrh]vurkbqdeglqdsml[jivoaiwnfpbgbzzc]neycassstykebswqao
+bsgrhhzfgwsgzowrbj[mvkzjwkxsuwxnioolfq]yobngzosyzkmgrphxc
+edoabezjjyzijqbgxup[lcxkqejwnnslgykokx]wihvmpynxyyhaysxvrq
+wmbgvnekkdivugwirt[yuioeaoerarbpcmbwk]bdlohxkfgdbthtxlc[zqpipkuumpyyioewz]xssqnavbegcidoenex[xvcirztjwasastitiy]mmcxttawlbzdztesk
+fmfwtjsguazrodvdy[uuzglafbhjlwujwr]rjttgtqakbrloqs
+mjtlntwhjqjoxsbhk[adswsdpwqnvqtuj]uwzfdezklxcvhvhb[rzmgufbrcamkvsl]imtazflkqvdgqvfthc[pvktfhdynocqbhqb]qjtlmgsjspdfgoazn
+hfeiexxrkdehqttaam[uinfvckvhatgmlblj]rhksgzqfcizyqqx[ofgjnqhqhveobpzva]qaxdjvvaibeenyuzpzl[ktwkynazrcnewdnb]yzmotgipaelgbsahicf
+djhinybbfbbvidnyest[zougucdzxpenqpoi]vvxbocdotanwdrjks
+poulgwkphlvqfjplgw[enhvwdoftxrnowdy]jfepitixnyjgvvl
+agbtjztsonrgwzivf[igqgvjqttujviljk]pmqphqrfzfdiinxhy[hjpgkjjwxgfsiki]fqgfwrylhecwcoowxsi[fygonoznhkmzcjcpm]nwouwxzbpqmsxnfhedh
+fnukiqycmrzcije[optroggxrsbsokabplj]vlepcfzbmvrqptyx
+pdteouejbrhsicugggj[dipcyddhrktybch]rsynpfyiklwyhvlzoxz
+yuxxurstojjfnoft[obornuhvvdtcyzj]kivbosojivpliva[twgyjecwqsxjmgi]hbphkpnfffzpbwjgf
+iuauoxmsalkxobrgb[blehxxupivauaxkahxf]torbqoddhsksgtnps
+sjgwxpuwloyujust[psqoquaifhrgmah]vpaddscloldhahh[hditsfewhihijrpf]ofjdasdbjvfrwefs
+arpvdepqyadnevyphg[kbpdnghrphvogmn]wrzcskupnydzepdmxkp[beeaeyelchimtyrq]yppeqczzpjsntfytp[aofegesxpscjbehmcr]wkhyeeykbgemqgcynxs
+ouluccjlcbcurdpkzg[flulmqooipvjzhip]qkxrrgvodksuivbspr
+zfmcvmwchidwtgjmpoh[ecthaqwuytzvxcfk]pwvwrbzdjqdtxlq[fwbcqsvdosnolronvef]sbroultaoabvbtvh[ziihpfydzrkdqsz]uydoxylhbdlicydahf
+wyvxswplnabvdoeshds[zhrpmmoiilsleemryd]pgkwuzialwbqkiw
+ehkebgpllhheumhf[pfovxzqmiqoxdmywhc]qpzsvhisrjgjfqnliw
+bzizropqhokoukoxz[ahvweuhqlrysrwu]sdmyzgqcevcixtomzch
+kfyocamgrbgzslp[bclztdzvmbyetlgjk]llzxtjeauatwnnpkrvp[pxshjlevsleipkfkmf]xblovddfkfhviqulap[zhqfznscbngsaej]rjfncwzuuqwowdhfk
+biaunelzsqaxohte[zyqygmhjmwigxsfi]lmdfmblocglcxaszya
+ngxgqwjnobiygnm[jnhtcpyfpwpwkxapib]lyhgjgvcuwgbxgxwn[rovvgibkfcahiyn]dyojmojklujquiqfsj
+tqdbdrqgfyumjwktbg[weesraucasfagyailb]ilhskphxtzaqesynmi[stfgxrouxicascniwpo]yfkxnhvrwkielncq
+twgbfgwbpygvbfnyy[xhwmhyacxxleyadli]wffogpkjkmysxzlmpuv[qnjizoqydldcwubtux]askyjzovxsalrrgo
+yunqqhjmfpqqycv[vamwyuzotttqgdzgj]lmuivwjmlbeqkay
+qhquozlhiohsyzwv[utxfaionxyjgcnpulf]nkmfgjxfobxmrydyic
+wehhwiznslzkyncnkc[dzxeftrnxfhrwprllke]imknddjnfrzanslzdz[dfqldjhkxhowubxs]ojzmgmludytadwespep
+rbkqkcqoxrfczfwte[poemreldxewfaif]vehqkzgxcwmvocban[ffpechryektpzbdaivy]emfkcgsqpqkqxiitol
+eidbkaxexnexudiembn[xyiztwlbqvoavomnlwv]rrfwfdixzpzvwkhwlw[kjinrqheqjsynha]pilasnmhghvvgaxor[nrgzhlsetahyskduscq]uazoholzvqjdaovgjr
+ynlcechniybypvzubo[fupezmnrswguyjysfj]ckmilshpttvobgoux[hybhkdzvvhelhyvoynm]amrybybroexntrlcmvy
+qpmlcmgstzjfincjh[axvarrnhwnkyucrz]wbbpucxtqbdjxsug[tutypessbhpshlyt]wwlkakvsggtbzcz[rypxpzrrmmohyowkja]aeuhylvosccpatslhp
+hrdlnpgexbirsepd[waphktwkfccnylxg]hgukjgxutuzfovpazhx[jzgspycuftkivlpx]bhfazqqagtfpljr
+ciyqjrkwqlwtuhh[lknvhwchhuntllyvjb]ontiepkrlphiydhyir[pdcojzrccoatarrqj]rwmyqonvfiexmbnjy[nhknsnxkwatatfhwa]qzlqiiovmuukmwypy
+tjxbenxjlgozxrtqdp[fqimqatlktqjwjdzuoc]fedjvxnqivqaxkvcw[lskccrwcsxulkabzp]orszzlxhimwlzfawjw
+yufbensvlqaxthui[vplidvdhajkxfkledbz]uposqezqxglywtlxgg
+wacgjknueqomqccqnkf[erdhexyxtcmmvhums]bnywbavxkfzbqwlppv[bwdbqoqfxejqnsgjd]eafoepuyabzlznxw[etyfwvldfchsrdsjyec]apzomripffavakswd
+conwdmtawpjnzrjlkrs[lfssaruafijkmgdp]izwehdqwarvfgxi[stkwrpsrwwucxlrpvd]sucqudlqvvklrfdgac[gelbgtycawlilemxamk]zmdjppqtsdlqfbhmm
+ufwwjiajxhcorfa[hrdobejvqrdojftlnj]vamxyyehcgnupky
+eonddfixsvjssautqun[kktlnrsxhmhwisd]drpflrvwelqqmdrcleu[vefzppqxcrtevyv]yeayirahatkufcjvax
+gipuuaoxlxfkqld[kytubcrnjxvhdxjto]kwpqrvvtjopyigmq[urijeznvkopxtgkd]infdbnklnolvaqwwvo
+bdqprkxthvsgqlp[qtcbdifrlnjdpxrb]xqmtwugptmssrivqb[zlkwptpsqnljxxod]esxomobcnfjuxxdmsmc[tifraqareavetzrpw]dlpsxjssqzyqwhd
+ylwhvgowletbcqjgr[tnhoxqhrnytlbnwifx]pyzwjmotosezztkqd[ejfcslurfhiompqindp]kvbfdwfmwkiswfm
+bqlhxpzchtvwcqc[jhpqckkyntskugvua]ylakfwmlerklrxq[wjrmeexzlljednrxho]rdobmdgxkucmdrk
+ehtqwbiyigxjvkp[qujbspkhxogjrzskfm]qebesubhovwonqudy
+sjqrkysnnbgtkhwe[ibgrjvqztrkknsr]mnbkbbxvfhsihzkbsqz[hxxhvxonqzrgcant]kbkvnbphoymseakbxjf[yjkdvhsscxggtyyk]tofzfukarcsahrmvs
+ndepmgjnsgfsttp[rgrcqahcpnsyknjkd]uablhivltavxssnx[uwjmrokgisrjukeoh]wollclyotaektyjg[tzbziofnztlojbros]qvbgoapfzbecqwjsq
+lspiukvizecamzh[vgaxbxgipyodtbxb]qpnkwuqxsgnihgd
+khdzfhioeykvnvxuhic[lhfxiidbrwldhvfav]rwxsfwhshazzaxvk
+coaljuoxfhvirzhedxp[femqrflktuakhveiiye]iabhkrebiawlktxmbr[pzvgzzcfzhswxitunrj]kqpbmoluwjetvhdcr[tyqdtrnkdmvdpuf]skrdeadiylehnbiyvws
+qimxmesehwdrqskwitd[nvgxgwksihjcplpl]bxnyyafyzxludvyehd[hswtrhxmggpcpcvew]cucgudrfxfbietibgv
+moiyvifvvucewfqu[wuzvazqcictmsbtq]nktfnkfjbsejorafo[vfreizeqljwshfafwdx]xrtbsdzcfkdmskiiuwj
+kchuwlbokzivzlzvib[izbibinxysyjrvtapis]vugjoxtigdmbdqjn
+xbclcahcqnbzwpvshao[qkamrpzzmssylpxb]tjsufvzaorutvdu
+hraytavipeznkuoi[jmllyjddfakuxwfsx]ofoxhbhnucmiztrtcji[vebzprplbxwqnzllu]peaegqqeqbjikxff[jxzebruqgpoqmklz]liakpsmvutnpufovqlq
+omtbdjlfagkxdlntz[mhwuaqvyldixapgoaec]aghmtjapinrxlvem
+kbvvqlrdswbturvx[qpkrbbaxhpljnhlytou]xsogoxibyznqcpqgygn
+orqcxbycauryvjxq[ijorpddboqkyznnnm]rvildjpthqvtdrzcq
+hvttzyckbqjbyfdn[lzeulxlidymszjl]wbbmixifmqzkvypqola
+eizqnqqixewedcvcit[ohtuntptfbovbsnl]uuswevyvyulevsfnw[etmfugdbznyzikdtx]euprxmmhcrdoefvfjg
+pvxjhbwdlshqkth[gwmtamzhtucvbkmwacs]uyephbahzeptqmif
+zitdlkpouvntzndz[iluwraejfdnwafe]fuevzmqlsflfcht[suumoqktussjsze]dawzltubgawnahpd
+krskxctpuowviqiqxu[xunkhvqyyqiqhyx]rcdhdjoqrutobnjpimv
+frsjlbcvuwydaobhii[bdatbysbolkcpzcxoyf]lwsfakbmjilithjrls[fhozecjhruquesmkca]oorqtbaamburjorhy[occzlzfhekgspeep]lilnnsqheytwakzah
+ragajrztetigfkm[egetcjedsnrseahrxr]cblhtdmtcnoaank[fzhqephlcyygbwt]uyqlhhlhmnfyfcts
+nklzxesmrrdlzyakdk[pfexuhulnvbmndvyat]xjvspjnesqugmkngn[vmzvdrheaknqmzyrc]xfncycggjiaqvirfvnn[aqeinzmbaijlafd]pjojbnvismokshrs
+urteecaminrqiohs[rskgnsdfpksfznqpphc]yaxixbacbtysdrnwixf
+ibvmhqpmnpzmghdtdpo[djdzntakacvezlr]jtdoweayvyiaskblc[qhwimwixemjmqsu]rzekezftftlqqovnq[hzeyrnhbrrducxz]ceiqewhcqqmqluro
+joqwthpcrccoovxrvq[qjlcrltwaxkjenbbql]ovebjdqfnfkomjpswn[qhwrxhvbaattcrkvff]nmytfcchpqktagojhtf
+jeeuutsrxjlqegcdlrm[chrtabpzdcoetzoopc]axdhgbwmwhhlrvc
+djcujdyidkcgwygy[zfpuoobkfdetgiifrpf]uxzlkhxzqgiuyvuc[gboovijloiwizfuuye]wimticbreszjcpsls
+ylpbdnvjaavulnhg[novahskycjcruokxbrc]gzsmxnvpupgxwhx
+qdarjsoimlwxduyp[nghlzeghibocgcbhqb]vuoixghxxsxftuztlxs
+ikdnbajyzpzbtzjdey[fiygpvlyluerdjvcdc]hheswtvpmtvjochdsih[kmjnhhmbpokaxsrf]byzdcdlvgyorjvkujyl[ttxlhbnifbfgmvs]onytmkodkklacgel
+rcpgwlbaskiorvxhgsb[xikxwyiageqvilea]rhkkzuqtuxbhuygcxya[prteqotsqfyypus]mpdedamsijgmdktn[ptlcxgtlxfnvychnwe]mdjujbmrytfbzpslad
+edjzqlaktolcrbwboup[bvmtkmfmidimoohq]kpsgyntrgidclnq[ohqjnvirkjlmztem]smtywugfaobbpvmzj[aksdrqczxftjrzuylmm]ffyrsvfwtqlmwbw
+rkgutyhaonmyick[udryocpupaohqhrmmsk]lmusznhxbkbagotha
+ebtiyamyxtfcakoku[tfggedpatfzjvirou]iwbguywvekoline
+vjyzycrsfycfrookru[iszkkyvwngsskic]bnnqauaqcfxctnyofoi[tlegfofrqiuqlgkld]biryppugzufezftpjra
+neipbfcjvrnrmpijwhq[eppjsmrnolpscnfowe]crsmezklwmkbysajb
+quwdpyfsllgkwtj[ercxwsjcfkbpohokuc]isdjfklflnudrjetf[fuxsclqmfyplxxvao]xflfujjqnglxzxlxz
+vfxrgmnvontljaodk[pwtwiqibbceehlnhf]lwzkbshrmagzhwqyq
+ecfthornfevsngitzhb[pblbvztbbsbsxxuwec]jtjnnhwkekrgjanoxbe[osbstvuwyjietzx]xiordmxphcsjnzfnrwe
+tcnlllsrvzoxupp[ficwiahpzqtauuk]whxfguillhkpxitoqq[ovsdwbddmfojvkqrxb]bfagfcimddodrtb[lghczsmdqufswoayezk]ctkmauzrnhgotbibbb
+qahnaxgypnpjftgu[bghbgwqxwfnfrcybzd]qinmtddfxbpkhqnna[rheeshzhyxfbcfxkd]awwsrosrkyfqcvtx
+siffwvlfljwbcndns[cawuqwatfhgwsphjn]twfwwneebgzxmqyrhbr[awxuvozbhlohuaxim]dykizkumcmmnwiwdx[dikxuxtmacvaxiwih]mscklmepmcgjemwtvv
+nwnwxbeggraucwj[ygdjhwgskclfginltdy]ngfxeqsonadvobrnwne
+ceulusceecbvzesfpia[etyucdrmmbsstudbfo]jjzwvaqsiovrgro[msadpldzcxurzije]mjrrrqwmyqxpdgmp
+aiwctbwfathsnst[ymcmlyeojcaokgf]hchdxsyquapjjgncfq[adzpesdwzpvcksioys]rbfqvkxsicnkphd
+hnbounecoxhinavuro[tdytxmzudgjmyxmm]fovpxazijvtvirqfrup[qbfsslqkpyioabrzhlz]htlcbtysbfxurnuqgs[nybjnpqgugmtfculk]zxdfwtbtbvhxyrtcodd
+ecszlqenzswzeujn[aymhmhqkvzbuabtr]qasueshfbfducoit
+bmvypnceplfbhhsko[eypvaebyvggpcmzum]ycwgnjvrjmdrkiao[hdkledypozrgbkexls]isuydppzigzqtfo[onvsgjzwozxcvgkukez]uhjisxtizfjiaebue
+ljvtminczzipicxg[eqfvilzenlbztef]hpdptelqvvscyfqjbk
+kofmsmvngqzdobeg[atcxvdptaufgfpec]rbyvvgagylqgryjmdz
+qrqirixxxpivzyxidp[vanhxwefpeffrphvwm]awiajngjmxhscxctxt[hnmowanymdizdow]lqjbxcvbswqatxyp
+baeknzdxlkxorrfi[tiqhvwvqoyavllfk]uqqdkslrjsueklu
+usgfgiqvoudfsdyov[unqciexsmnreobavmoq]kcboezrfdmoqrgg
+xrqjdugnwddstnr[gbnpzkldpjyfady]edvtrvipwheribydmaq[mwzdiuqdstogfjy]owanzbjqvaqgsgf
+oumjseobbaxvipit[ukwqpfaqohsabpd]twomizennyccksgi[hszmrfksmdcycyda]connwmiollbtvgh
+skyizttcnisqncq[lcxdhawnbdbcptj]ocvhdptvtfnwqcdmjff[sqbbfcaufseolqwcjt]xlnlzmuciirvedlni
+nwlhzupppktailtktkb[bzdpulmwswdaqrv]kncfgfqmxoohevsxfp[vgabgahytpqzalhap]bbubtzxxzeysqyqp[nhpmkotpzfifrfpmk]fruxnzwuvonfoxc
+yedymyfylbzvjfwst[woezxcgsurflqnrmvt]qsiblcwatgywwbktdmh
+gnbeeaxxlvupyacdpl[dhgikxwvtnhllqs]dzsbgvmgvhcbygjkxz[qmayyikkpsqdoukt]kdfbifunpwlbhsh[qrqskqnysxtloxs]zudxossasajrdeanct
+rhftgsygepdspzqbewd[lcmdbukbzwdesfroixj]oblwwxyfconxmhefjow[fvutwgcvuaemgzqanrz]xtiuegikggcimaobg[uhqwmtpowirexexim]txoyjvcawbfxprxf
+viebpcquqeagmuavf[kxfkxsoijrjklkgtahh]gdxrwirjrvzjcykax
+uptdisvspkluwgzkti[omvlmaxnyxyzwuian]pmieocovsvpfcveurx
+ejmnzzuuduhzoze[xrdlxozvhgiofrc]sxtycslunhjmvejtkd[pakbfwkagujukiybe]adudpcxmlamtkwak
+lqyqdhuldmtwbvydji[okhzffzbmlvqiko]wdcicvzpzkaowwqnztt
+imnhospjiqsxihx[utoykmsvdetrkdxvzti]zgdfvtmfjggwyjef
+lwsirsmcseswkfxh[izotdhmoodsvpsp]jivuksxahorpwcgxnn[plncjtzvyamfyxzst]nnpdtmoozfzuemdcenb
+puavooykfwvhwzmkglt[xutftanpuhgsdznc]rvzdveoxydbctczqu[hetpqpdgohitmgtgyp]koiwybsyijhmmqxesqk
+puivygxavmlrxwkst[qvtxsgezqcquyae]brdptsxbxnobkvcqclm[ibxfeuecufosgtzhxg]vziaqziqriftdfrpnll[bjfubyvxxrbsjbqvi]nnlbiuncvdtnnarm
+tlzooyjugzfsomi[robsmcwkpeprtatddr]taktjvhztdlygkj[vbjvzeeznvmamus]sformulcgeirdihntt
+zbcyicsjcmpicotmt[tbrfctpfnqspmvnv]edzcoymhzfqwbuyuyu[jhauxxgwnguurrviws]rfkagjqfdvhjiavoxtf[zdejarfvfodyslh]pzjedvtgzwflpduq
+dhbhmlhsizoeldofqs[qcypvphfozxibpjdo]idntecorhucvlufrwu[naoixcxuqlgsytnt]ehsyusyugbmahyrn[djtckrolqitsztwtuq]urantneyeodhvorgsx
+cnsrdanbfjubsdd[nwynwjxiyygvgdlx]gyyuqjjvumvquvzib
+otivcdfzmsjivefwujc[yiveblxrayrkmfjwd]mbwaroznwihbnbmjp
+fwanqgdmtlsezhtvat[bhxmmztvspchqvhovae]cnjyjntrcijkmnjwnlp[rziosbsufkiamqmqnmt]mvxhzoxxibbkezhzlks[hfessxjoefqfbgxhc]kdgmlomxtdfgdgku
+ygxiiehdqiqtqjzj[cwbddmmlczrgdgpibge]tartaeajmndarksakye[qnurjchyeijxcsdpc]uguxoncwdrojsyszsib[mlwwasmjacumzfqr]sguglzsozcdjzlooexl
+ytyzugjtaxtnwxkns[aclewmcdbbbwyyu]hlfhrgrigvwsdmdethb[osohbeuazmmffxyeq]ygmbsfwcmyqowdvh[pqpwyutdqwwunfqt]ppkundibovmqwjwyll
+vcrftmfliijtpaqsoy[zcpypxlyshsruwbclj]mnwgypyvzdxnnie
+fmfdmvxkdupjadbxh[tauggdjujfbeogtsgzs]pygzoyudakrlrlba
+ysxiybmwpoygkyle[xaaughrlqulsertp]iukezabalczvwieegzj[wlycqpkbqptraajl]mjevizxosnolkxnfwxc[veialybabbpytrf]tpgpqighdqgphcwoysw
+cnxnptbcjhgrxrtremt[tjguyerqizvuobq]honeukqpcsoiapswdgs[hcroutdslvvzypfklj]owxcxqehkqqyeflgi
+ypgeqbggpntconrgr[fmsyjvaninmkfqekne]ykrmyjpfwlhnsvgehop[gvltviftpcixosamy]xlsyzevtwaokuvneo[nbfcynlfsbmmweiml]nxuzmhrwlucgvfy
+zagsvkbkhcrkvnukl[pyfiiavqjgonrarga]antgzbmtohtndzgf[gkvovvdgppcnyjifrc]lxdhpometcwlkofze[fpxwacqdussynpwd]mymrmftjovoqtkuae
+xrtjipuirgczdlrrlnu[xdczaqvzsfgavmzq]luocuzuztdgsyxbcy[agpcmbiyqxfntvnmzn]atjschwzmauidumzxru[gvmmftvwtfsvudtd]vhmononuocptbuvorau
+fzozmcmcymohndlq[rnrgxsywctnmxxd]unfjafhfgeexfykym[xnldroqvnecyhhcwel]wagagwcqljxduzebjeb
+efvejswssxdrqggx[iqwwyhgngmwzwsw]dlkdcjxurmpsoceomp[scbledaqpgsgynjo]rsdxazcyjgcubfxlbb
+rlkrgjrxefztgtho[tphpsircgzsauqfew]ridnbmerksozxzwx[lcqwhfgiihdzgtgudp]whskzgdpjubkztb
+qbtcopfgkbhzhhglhh[ostebaqylyggiyfptkw]bbuaatfqlpxstpgwg[nydgrdgyazzfwlagrz]fiiddplgxeyyntyeb
+bogowskdtwkyhtdpzw[uxvrferconwfnnj]eukencoekwwahhefvs[xtrpjeahwpxbwgogfmh]axqvtgibzojnfcku[zhkpmdtwlogmypeqc]jzqywlhocshrdrlgd
+rdmpdlidbkplejoikjc[iqzadghltpndooanzp]ltizdvolnhagtlvr[rqcrkoaqwfwjpsrj]rtlcwqisvkznpvrjrbi
+ndbtkvzkgjsuyfibsn[gbfhvruiotbnbtvuxaa]xihrrhcnbnowthpdge
+vxtgjsiuodbsuhg[updgogkqrntiedefvh]xwgrhmgmpzsxyen[tbhogopfepprmtewkm]fmrtnudhysikudz[rrdmqrctpwlcykzr]lpbvstnhcmvnfcpngja
+eoaqeiqpsqdqkdvia[pdyuqgwuhxfiukmpvw]wsjyvdabhrdsxij[puikfklqhrmvfrwomu]zvbbuuromxgpnmpviw[fvfilnspmeoxozaba]yaouxfprxpkvkit
+qpaksrcracxnyuozqc[evqvzzqomyzwufkvxx]vmbkqqkzjskcxbmbbp[alqaapbcvzuxchmaa]pzxrooiyfqprfaucxue
+jmjvvyxljzznmaarmau[piytxuyakxaropkfnfb]txaaoeuvlqiwynhqlt
+yrgxyekmldicpvo[wqcvsbptigcqvzoet]jjwvbjbshgmwttac[ymvjkuxxoojchqomnj]tsapoddljyrehrxrke[ajspkmvbrzxrxlpzw]hwymrguaqnefpsza
+dmlshfvkrzncuuoo[fddyurlzqbpqdidtkrs]kcewmacglikdszapy[fltgxlltlvysvylrl]rgovwrvccixdullrof[bqkrpxjupbbrdnahf]ebmiiwmxkutltuxwrds
+lzklscqfbovjmjbo[rhwheqhkaseohohelh]msyobgeiybsbyucus
+olbjozztfeowxftbsx[oefyqpxsebyfawerwwb]uyfpnsvujqenwouagc
+hwhbihujnzgayah[euifzicfxexpxir]lpgjmexgfyseevwjpqo[nniwslmnmrgybuelwb]khkudtujoigkyyjipu
+okiwsdqqwbijptpjzl[ktibxjcdrjvsgxzlgg]cimquzswgbhabcf[gictypilnrboctfwls]oiofteanmgnauid
+hdwokqbmfofrujxvf[gcrxxfsxmycedcfr]xwcmtasmlcvfmezvtk
+gcxgyjgbqhtcqznfuoh[yitqnwqdcpkgwzayq]oqbiabducwietmxira[kuxdaeohprtnmpfniab]wddlljbeofkomijydzt
+gnxobceomvkecom[oedsyavphnrvulwlqfk]klkcrpigniietqecrc
+bgzhntrrxvjvhyqhf[tnyvbggtjvjfgratfo]hltqszvzgcutrdcvddq
+sgzcemtrlzdjijht[wtvzogdoomtmhxcwckm]nmvftmtbucjnczm[hkqmnugntbrrsphbmn]yfvwwzebdqjkryhm[ydcjwepsqqrwnhkpup]tyssdovqgkhvvstvd
+buhlborygnuuklh[haftitnpydnilqbqabe]gemzbfstwlhejmjoox[awjrajspxybgdkbl]nrkncxgvjhuwukw
+suckcafpmeixlavp[ehmqotytcsxzagjq]vfwmytywcapfwlljl
+vblctxriewmbbpxo[xsgdnvmcmfnuejlrtz]iltofzajbcezlpy[wnfixwfqqgseisa]buystfqzokvletbzv[woumxjkmiqqstnt]ciarbpnsahayntnv
+cjsgiueunqlisps[zurvijydsqsdtktm]xhlpspwgqlwqfvx
+bobcmszgphpejiwlwdm[wwjrxebfctqobojw]hyrcpguihwihhpmr
+jlyvxnexbisiiwyjjf[pxpqjtfgwysrewmrv]xcfaninzgmdidqswt[spnysxcfdiwijvfqitl]wigmjtxvsmwlquxew
+qqtluuthgrubwpqzr[kgebpbdpqekehnnuyuh]onnyuyxeqstunzueapk
+sizavpqzmcfexfocoxn[dwcfbufvxxousaeah]hymczucocssffcj
+ldupymvmttlywlxbbs[vsttjksdhwfdxclitx]hfvkvgmtmaxtifvo
+tbgqiatbujypfbjha[catabtthtrydcjbt]aujolgbocqymyeqfr[apsuwlktuaukokmldw]qllsjhthoqdlpykgwz
+zqtpkzchpnnmyzygsaf[zuokmkcncefsioenp]ynympbineurlgzkdys[nhrjzpmbwhwcsuowx]hzawgwukxrerbljm
+navcmnriavzmexm[xdvtpfcjdxlbsyenvtx]byqzubujbhvpwfcme
+kookhqsmbrpgpsbctfp[wlbmttbadvipoyrojd]cqmhhdfaunlqkre[gqmltgpxfyljdyo]zvzerdpqmktqmezf[npidrfvvtdeqgzhojn]hzehtqonmwoahdakvve
+tanngpmswmpddgfpph[egmymqydmigpnpr]bymycsueiolsfyfey
+uddmrzbeefaxbulsm[ieevtshivgygbvsiwpd]lbxhzadyduakugey[sqywcrjzoxbbgadoqne]xngapfdfzbwcrkd[gurtymibbzvsbxtpypw]elpexxrljomuxnybuxk
+diqvdzizaoprrpzrovy[cbayiwiifklhjkw]somecbyhptpmhjvkrba[gczcezgzlsyowteraem]xkjkakyvwxbgmybzj[htxdiogfsahudae]hhbdrescqujtyeyo
+kzrqpxxtetqkqqfxild[tenlubsvlvxwjgokm]zxfixurqybohvhfa
+pjhbxnktknirbwjp[arlmosnekoqwtpysn]hexsbuespjgsrzbvpf[vaacxsepjnqxegwqq]owuxuohhzxqnoqepvha
+pumaevegtbjlzsijtf[cjpsnszjnvoexufcgxy]dxngvevsnjzsbuask
+azhhrcrptkuqsvxa[hwxldisbvxutspea]tiqwqugkmslokmixx[wzqlcgyfzacbyoguk]klpprvhtplelelsmx
+dumehssexnwcppac[gucpccbmtrdgoee]zpcpjjuztjtgxxhzroz[iizviarbucshvccj]xlypepsxxhxphttgc
+deujoayipwnugheu[nnyjneomcvpfrvfu]sfspbwylbnzbyqh[innsmlncnbxrbfuhu]tldwbficslnxpkzlrtw[kyfmnucfyrwlvbb]wedvxsifdxaysaw
+lcvkjzckpkeyzyjgtwy[osncmhyofupofwscd]rysnhkmiqoqulyu[lqwjsxrgpkpkgxnvhf]ftmywmwfpckoadd
+pixbxvhtlxjxzpm[nvmqocftgaxxgejke]npibmenishbqrxtavc[jzceumsoxcyqbfv]qcdqqbwcueyyqptc[egixgueerjonkmigr]teecwbxvwhgavdfjxi
+vhtgslxovrpmlojcyiu[pngyxboltgfaskge]eawigmpxrezdxtau[osjcsdhppmqtqxixkg]gkxhhsphrnkjyxgmp[khnpkxghpkaxnvgxqe]zpedrsevlishcdbd
+ixnbejxsfmcjmqh[pagzggnbjxxwktstf]hcjdsogfetpzoucuxg[gsnpjjdmrqzojcozi]csxsgebagjjgxqjx
+mekdjtrwhgafduvnmwn[aaphpbnxrwwkhzxn]jqzcqvefysuegreqcw
+wbpogjbyzelmxqeaazu[djdqdlmpfmezzehvjl]qdquppvgjweftqvph[equcifktaceuqwoakk]uxemheczqpboerwq
+objhlxsujoqunmhip[bxpjvcdqedgvqrv]rvycwulyrrllbrxlbty
+ckxcgnosnlskecyq[lcbisjdelotgldlea]edcebpmpxvvgktuxq[pewmfvnkiiulfehy]electgrfvkbxiic[emqhtmrsqfbebmykzv]jfdpefifxcptpfzvovc
+leyueicungygchlce[fbclcyopnajqvxey]jcwvhehawbpflgddtn[xlozeiujqbiinjlvrt]ljmnnzlebbjbccao
+mblrhofhihdiotvy[nfatavuoewnlsvc]gtuqdhyxielngaci
+eyzlvgyolwwobcg[vaeslqvdrjthzho]zdakaychskakuufan
+ukqgdhxdohzgrdfc[vfxeqopkydlzdehao]cormknsmtbidhgml[ceialgwruscjsapfc]erjsjeuxzxjokxct
+szronkojjdgnfzkpqzq[xpzmblnarrtycgglkw]cixtddybdschdshenjl[gflkqtgzlxeesrfvx]erpfhhlwbsdasjljnqh
+crndgetyvbvxhujqtu[svhcpjoxbaacvpqf]ohhkqbbwhtbcatwopz[nzfqzdbjhixrtpw]dpyfzrpxayfoglzji[aynmktzgxtegbucrw]igvfejgptghxddj
+efswwtohurobgbpvlhr[sbgfgmsrjsrjblwr]xkswzbsgmboecxc[odmohossczkqjwtrdi]gvdjrovgilpgrdgt
+qihgnzozzcedhgivz[wfzerbwlgrjbwolsz]ehnxlqolcgghtdfkeus[isyrflbjdelvbgz]eblyrmmkbobefzo[baowrnzmyctfmoylu]bzhtmcwxpcqhubyws
+tjgkgtykbfdogfa[tixjoqenpxjbetz]oybvzsgugsucpvid[qukesagikwrrpuesq]xodwkyngdrxadgqz[sigwgfluzksbqqpvueq]rlgcptipyfrgihzn
+tbilszajwwosrhs[rewcahkzssatddmv]wtusvesduewjvissr[efusbpnhwnrdjwgjthd]dunuqtpzocqwyqbysak
+spvqcisucqxihmincf[csjfurernawvtia]vzarehconlkvnhbpsaa[mttsrsqoluowbizxrbk]pewqfgipuxqzsfj[qznswrhnuvmmqtbq]mbjqscwfpmkejjowy
+eqeycwhpzzryclb[mvthqzizihyfvtdgon]maeannxtfakrfmg[xlxbqdqlglfspvyqrx]chjokbtqngjjsidqdyf[nnmqygvepumttyp]zipyquwulqtblevg
+etutgnamoiukjadrf[phwftwicxcpgdegzkr]lafqcmydwbvsxlegc
+kbwfmffiylhmwisrb[wvoulhoyvagzmgxmp]heupruovkypjtzkilqm
+hjgmjhzizaeqewp[fepsjuqdjujbjpnooe]rnovsbmzwqtukgy
+rlxvqkugtcovejm[vqlkivalxqfohnwz]afmwxjnymstqmem[ynyidmrgyujdkmjq]cliodisdvotckoatva[ysfxjtwokboitvhi]xfxomfghbnfnkobval
+oxsmqxhljzdjqtx[eavkvuusdpcbrlwmr]kkpbxnnmuqigfvbrf[qrfzadqfcladouu]irmuceccvwsazcydh[kvkeafmibmbgpjoc]kgmkohjtzjqnfwxkv
+hvvzujphepxjyypzp[isabpxdneywzpzr]rjbcrfhnidqlywbgvxf
+ezfeilvlhanyhfvd[wgbqirhrycdzzbu]wpwvyghpwpfykgdt[drvcvbpndcvrcirig]qzcdvhfcxqdxubat
+hjkktoruvvqmuauitf[dmygsosigufbzkm]rjbwsccifhzyhqk
+zazrvwupbrzlepfcc[nzlsrlgeovdbndxwqv]yhjwjlnravqgraen
+fqjubgphparanlll[avwevtaigfdxgjet]mgftlttzuhaqlvwqn[cnxupkaxahrlnjelty]yqgaieunjkxlhrha[xexqcuvkacjayozydc]blhjzcfcoyiozuajqxw
+nacvyqozsyqgnvkvw[urqhhtybjqfpqqcrex]pxfufqzfghzxinnnlq[vbxhmpntjgivfgzgmq]vgsmxbkpphhjvzqdirx[mrnmmtbamdhoved]zziaxsjdqjfvqzq
+hdrdsknkwrtejdgeqg[wbvycsdyecvuclhi]owhsjsujsqjachyh
+jwfxtraepnpxwmziud[qhwoewcswwusdqcvfh]czaiemhwpbkflzqi[yntelahhkwcytedvpe]kpkuxgqygwicxoh[vuifmbkhbycxqiv]cfyzggvhpveafhduk
+ngiytctkauehibctccr[coszigxgcttxzoqrhvn]hfrpsylypetiwrggzg[xwnfgwaxrjabzmsqquj]gxdqtprloqdojdthh
+rhhicddiuxdobco[ihkmummwydkeoqp]seubufqphohblrkn
+sgslfpeleveakroo[kgpoljsrrcfwlwyzb]zeacrfqqaortgdv[yoipuknesgpwoscvguw]ubrzxeqpijxuflgsgpt[allsdtgmdlnupofjb]brnjhlzxmijpicty
+vbcaptabloujxkqwnsc[iujlwsczjefkoewao]yqwmtuetinhedenovhm
+fcswktnxobrvovrjg[qsaxxwxgrenkdcpfvx]bmivhngglvcwxwgjz
+nhmxhadaretplflb[eaaitxsycuqarue]zzdsqhjjnebzptm[znupjbepvjzujwj]djueiauiobywmclemio
+lzgmurmbxidxqofgvy[nhpkiprmeusixtqhfid]zlpmcgmvjfsqhddfzu
+aziympesgvakqhltci[qdofqedxvlvpyqat]txvwrspujxyuqsn
+ezewtaywtinlcbrn[idtmhvforhdxgcdy]ohpcvnchsamehoewc
+ayzzozmdklbhitpd[xwlznwdbvtciozoykoy]ainwvvxkreuvsgdatbm
+kvacickhqbjjwkk[fryxetyntagtppzorb]gkqgbqhjykyewipbcj[zdaanxpihogooeeqby]lxdkkpostipynvh
+nzngguddxyeihkkyt[wamdyvzgrnofprps]znzgitnmvvvrrzsb
+vnbogcvphumewlx[cboxtlpwdmfbtfegkai]zlxznqxwahbghxz
+stwxjgiqglghaaot[gdxpnepcgstafgt]psljddrwgewawdc[snbjvfbagexsbpyh]wqqhsxerdjilgln[jyqcqbxxikzmrguo]sophymnkilydvivcdk
+kihnifnjfzhvlinqrqi[bcgxtjpdyxtgejzrdi]avzbrcqlbmaadrrvazb[ntmnrjhiklfwujlg]pifpvzbirqokamrmd[rbanfbdlrtmtkxca]udilckezqvrehkz
+liradbqjmqeaifibll[yrfnryjrscfrxgazpzc]vxmlibidbmcwgoygn[ojkunzztsdudqhma]dvmtamzfaanvyivxqrq[yqypfcmwnezorcnbzy]wytsaklpzfftqat
+fhaxbfjherqxbzbrtg[nabthakgwjarjsfhj]iokwyfrrjtwulhwi
+asundudwctdvninxpag[opdvadcnjnbxptahj]scynlgwnmzdtmudu[bupcfcyqmmcwsqfffb]rjargbcgxvonfgjco
+zwzcwjnudozdektxh[wesqhjkthgohlufhrf]mwqrvudkqiysxokugz[lcjiemidwqbdnohpd]psvhnbkuptpjicdmb[vfoerfpkymcjmhzicwm]pwykcpzewskfmho
+zbhxhhqfeurqurm[buuctguwokorlkfq]extdceaqdkokhdaxzqj
+qcrnmtdrftlnyciul[qvtjesglscjradq]tcoobnfosubnnrps[qafsnrpijrnjkemz]urgzkcxptagwndzug[olhgasghsicjvswx]higdtidzwjfzlfkmxbf
+ymvlttwormrtliwoy[wrcafamahrcipugxxgy]mjzzpdkuowbrbqtmr
+swwktdvpgkbbntq[jujwbyzbmzktmpag]uinhisqwpyszittfqe
+qrlfgtcrpyanzwfeuhl[sstllbrafqeobsocmsc]gmfmnisxdoqqctof
+znfoqfwiwmxdiixycul[tsxegdjmxscgpfllqvi]fhwwrpconfwceqv[gqpboszvyuduzehsun]hmydskzdmmifotkn[jurqmnkixknhmwj]vcjomeocgzfhftqq
+wukfxspnkhedqdbtfti[cjcrwokxqxfqbvfatie]eaohmttcidinhxqtcu
+usgxfhglhuknqauzic[jlhntqhcyjuoywthv]hbskrwccmtzgyby[pijipgraqquvxhso]hehkqohxirecivlxnvo[lawgvpbmozisammvpcx]vuchsyinsehynzm
+dgnciyptfimtrbmfbcd[tedeoxadobgoobffh]iucidwknmfofwia[bbtbzcwjwiphlcruw]ukwczycabezutqdcc
+huxitbsdoqaffnlyxyn[vzcnvdddtezaeymzrr]bmovgbcqswsdmjacezx[jjdtfpukrwhiafcy]fwlhrymiaolokojdkx[ftqdrarkfhfbelc]yfonqpoegjmmxkwhz
+ldedcblvfbdacsy[rksxibwzdatluua]agxedenvctglzyvpu[qkwulxegyokwljso]akjfktolnkzwsnn[lfhdwjomyhroqkkzk]mtkhpnffxrrwipsrqet
+ajwscynjeiagnubeew[ftyzkgsmsevmdkpyv]ufeszcwnhqpwsep[rinrtwoninoxbqvlgy]mzacylokxrhxtbyut
+rdlragvdebqlteu[kitphkhhnrssleu]chisqrsnofxmmbegi
+sjzglwvefnntfgofuax[htbkuezcjsfgohzynlp]wquzxtqerwxlperau[kqnbhymijqtvtzxbra]tcwbvbockcilgvn
+bdqyqodloytjtcylu[xgwgnadrhxshcyhd]qshqmfdqpzbruygmmzc
+pnwkymgknqqdwzmymmh[vcnetknxxjvihfrlvq]cujdvtwltkpkzwkc[owjyboqcsymigajgish]bdklpwzslsjvadacm[mmimdikciuetfjeece]dxwoxjenzguercr
+vxgoxslogbrjaxbjg[qyyckvarfyidktepi]odfkcgodqdusnjs
+nmumnqunfnuhvtucy[voatnmasscuvwjth]grckxjhdzzoqtpgwm[qwmgudaltzavyrchqy]bmxedeqkwkgoqyrmlx[uqzdpkjekjgfvlnfwh]tpsfewpellmljsakhea
+dvvwqujegsgarow[rkjpzfvtrtlpcdlc]kvpqbvyshmoemkhvq[hzbtnbzhmgaufkfvwh]ipdgirduhpdkhcwzfid[jmxetzvqbkrhkices]yzrxhfcakriippr
+xyijrstjowvehnp[ylbnnbclmipxjtxtbb]dtynyczfzgqozpa[rmontkapaesmlvuasig]qmuqzwqsoipzutdwz
+bdwyvvnsxojfzifhkr[mfdopzhxfakffhoudpz]vqnrhwzqbahbztlynpi
+hymeoolncfmkblqrd[ifbyrijjwxsjvmhql]vgybqqlmoilegcrcp
+arqsuxhcivbxfiuf[jfqqzwkamooqvyj]awbpyjrtunzulggzmh[iipnlkhwzzmzcdi]ktvdnpdmzmkrqavxsxy[dnoqbxknjvouymfz]brcemvbpovqjdvps
+sxhcuagminkkyodlma[zkcpbofatowxfdddhv]iydjxsbzyvvptmrivf[thuzxghsyyrkqbjozw]zicredtdvmavltqgeg
+qgvauvsmewyfypvgx[bkzpxdkwztxbpak]ghwmldmcmotjcmun
+ivnbdeggumwedodrru[ejwxagdnszmvpyxtsfv]eaabhawecgtctegy
+nylnblglukusyetuly[annmbyywmkzxoxcubb]fwslxffcquyfzezst[exsgjgeufpzlscazuw]rebffdvzignmrpriw[qwsiovjdtaimkun]utobenmeyrtxlorxjx
+eivxnczlgqbmybivjx[zrbbxnnjprbaknh]gtfbkkxqoowynpt
+botxfdjpvcayvpxmf[jysydtitavnzahbeg]zwkgkehpvxtocktco[iodpobnripiqifmexh]zpnrcxntqwwwucz[nwrxbbqtsqmkaiysi]pecfziyavdcfehr
+bmfbcrmibywamwmic[npcluivjtbtwmwxmx]mxyepxnjdabcuiexhwi
+kezzmzrmfsmhwxfhy[euevwjfsullybtlul]edrcskoqqmtwbhhafnl
+yywsnxvznbcockrn[fnmwrszfamgerfhocoa]uxfgnvtphthtmeuyy[houdomoboxleqhrf]zznqyqwslypolnqef[ttbcfuirmlnwevhzw]dmohemntzpwivaab
+xfrmjbgozdwamlqe[rdrfdfobgryckvow]gzbnazpqaqxcjdro
+vdxepylmqqekuqe[hagzuweczkaioxyz]sndgjumcegndnuwwukz[ymkpvinydrrvfare]oplwhupwenqwloy
+paikbyhegnbvcqa[kawvebmxrhzszrncq]noltxgnszsqxfbxbrk
+hwifnlppmjawmyb[gulsfllyemlqkcws]wfopsunpcakhzkz[fcpmxchdgicqido]tlvnxgdsecuxsux
+yogujlygnpdyhkxpdf[bawcwagtpbuwaorpa]noyoqlkcbsytnzywva[zvdbrjsxhozvyrugdnr]yyehxcwcnepivtjntex
+ukkuxsacdvwqkgwu[qfhnxatswcchleqaeg]qynrnkuwuynramm
+srvnvdghsmgtyvvli[gujzqjtjtrdfeandy]rypduscceqqfodndh[bssbtbzcdoiygtdse]klhkfnjidkombeom
+hrxpcidpccertdnde[iubpwxhlmbnofumjnk]tzjinnaqvzhuqmjgzqs[tbpdksrgbhbhscpnns]kgaslrsilgklgukanif
+xhrwvvblyiyyjithaqj[nxzhuqjrftquwsq]juvsrstyudnsyjxqpko
+qjjtuuqdjaovcgs[klwmohvmeyujgvauez]faqyixqvshgpkrgvac[hzjbtsvreecwygo]vluysvnbqjuroaondag[qqaysmxakrfjdrpvj]lteebmjrrlysmwocpg
+fkemhtixlciygti[babpytzqdpoovfy]ptjooannebsdcfrs[ismooacbkqjciwrfw]wsawvmoxxzwzloxunq[wrjhadcbmeslujxk]zckevlidqnpsdordy
+ikapdixlczlrtpab[xyfywwygclrvxmc]tugwitpyopgfhucrrp[zjnmpndgvwlqnsfnemv]xeahjahtuyjwjwxfdv
+wjbljlhlkfhhkhrz[kfhvlihkiqprhjno]mhceaicjbnvajugy[rvkrsptmdupaylqsbv]nptyjetdstrwmqjav
+nqcmyiscwhuiafdyg[njnrwedfdsnzkyg]rsxrirfayriqxvyqthn[alkdpteuyfothxvyeow]smfyaybytdibkus
+msvwpibrptekclckgdd[gdowictxfvmjmdtyimm]nlrlpatlusnrqcydh[zqiivotvmzapjjdzhx]eqxxguxozcbzlfkktk[amsfzydattcuqolcoaw]exjpttscqgketzhe
+uqiaugsvrqenozqcnry[hcmsmwdqjcoohwlu]morsyizcifxpoyzes[tdnfcmzkcxkltvom]jbkvbwcolkcpkxdlhy[joounotcqahwjvx]teeotmpwnuvnrgdxscb
+xsejzfhwsziaedxovv[accbrvbghrsomiv]glmkioydimjfcneh[xejzphhekszjpec]qfetmjhsfagbzjurrr
+qwmyiuonuwttopaz[esdvdnqxftkihzblcc]xxfxmkdxigfxfwadl
+gnvhardsrapmlpmlg[gmliinpyvjenkrnnh]kovjprgbyfdknmnbfme[nhzmroniytmwwfp]falokmiuiibxhheszok
+zcczeqrlhunbfsxu[ifzbbveczjlfwppp]pvtsdxzdoxrrlukmqmh
+rbgkskquxcvswaf[xihgvfvaxkptizohvn]tbntgfbhclvkdael[zuxdeparbafjpwqvg]cpfuexhjmkrdurlbnis[vfmoasavisksmltggm]hsnrpmdkogfxnprmvxu
+abttallvhutezhtr[beucmccowruviwqjxlo]slskvryjaodaowc[vqtmaqykahuvoqc]valnulizvgiciruetx[rbhcdafdupnswhn]bppfeuexkximknecfq
+hlnjhkjucpmxmguhb[gtoyutdhjwfudqnra]pipjkprnypqtglf[phovsbawbyxsuwsyopo]phkewndekgucmrrbw
+bikqggafubkrtyskep[eugvetcxkbfuajpuz]drgqdldmenwxyldlwd[klwzyogvokknfwdqw]ffojmxeeurqxasxgf[qdjndihaiuwjqie]uaatdignzrdeyjddxzg
+ddjhxhnkcrmnaztvps[crzhufiibsjerulkslh]snirbjgmmerlrucjlv
+ckxphmsmljtplee[mbrperwqumwnitb]aikxmbbxmgsmsfgeni
+zwmouppnlfbatcigqkh[kahnxdhbhongbfgmtxy]kfictxvtzrwlzvxees
+gfrgqbgweickiocqas[urgmzzgkrwpkfhpf]aazsfnctfvvdrrf
+sgndtkclbxdovlte[ylbolooanippjrmyi]lfydwbjkfsgdrecxzn
+gfypysbhqsgyoxrtxxp[vdfjphnhrphzphdia]ekhgpckheqjkjinexuu
+tagvhpldzimodoca[odnlmmdinuwyazwif]hsresddnysmuldvv[zpnjyvabzrktghfvtfx]jbzsfhvzaglqkstj[leniqywipplvkues]zumzesiphmejqufbn
+qhkrsmlwyoxfawk[egspgdlxbrdcwvoeje]pxuytqzjiabwebbmu
+wsxvnbuosiwcutjct[nzthycbqcazrnqppb]keasqheprjcqwac
+jyiifehztqkdshfuj[cddnloevonuheydyle]tftddpechuzfagnww
+zyicuknwqxtzzzy[mqgzslkciigsugirbcu]vadteaxyvnpyhwbec[waifsdqtrcbdnvrl]dygogwgquwnouhc
+jltdbxzvwoxlherhs[vuuwuslxdkthbcs]ujzniwntplzaaldguqb[zdcnhufvintzrxm]cunexbzfbuzomrv
+huikyoqqhcabtgosej[tqbxkfxeqyclgcqqsu]thtunfddczjfocqmr[vddedigjifexfqgp]otvsknxemvtrpbxw
+sgukpjkupqmgtmj[qmvzpbebkypfmje]howlgwptfegdnqp
+wnomkfqdtyobjkmd[goockdzswfoumhiavf]noshgjhgufjxgxiro
+ivzlyzlnqpslrbldxqw[qmlmhingxmcporfx]bccugkqyzoqaqbv[msgojkckxyuihysrhp]hdmzempetgwwycoy
+xzyacqjyialgkmmcj[aqenwwtnrupdsmitna]bhbicwoaervlixo[cggrwmpqsyxfoidjm]yawyxhdkscodboohvvo
+aoywrlzjkqkzcmmicvi[lhwojrkhqdearhac]zwhrxrrrmfpkjvrnd[zwdpqkomjgjvkcndhi]cxpctyvgnthrsarfhx[clnierazieohvgsy]eydbsvaautujuqqsr
+zfozpdjsfxmbwyb[ignvlhfnrdhybkwhxq]qfxolqnfiyokzcbdy[ohvvpuipajnqwml]rybjvumgzqgzfveqjvy
+gkvxesvhovzoekxbmgh[hjnizppxqxtlkdj]mqvvrcdepnalllarg[urffyistzzqlhimfhi]yhndztrezwcapskbkz
+qbuqvobipnbazji[qypkenwigkvsjhfdhd]pafhisczyaozydialh
+dkocroswvahrephwueh[qtiawejyhzlhsnlaxz]yyelniorfgcpgfxtle
+uyuylzyqivmpinpi[nxooflqcmtftzosn]vwxiscnnmmujalwegzl
+ewyjffqwxipurwkejav[yxcfacgyuuqpjqxgn]bsxufukndbljizkbo
+lglancnskvgdozzuuy[eossyfcrfjnpqtim]mvjbtylaisjdcgyn
+lxrbvlmepaibubsqlc[pnndwclekhualwxbpg]cxaynaselbcbisw[evtpqzovucquqbgg]lsscjpanobjuqlpkhtu
+wqcqpnmdhfupmmaa[qawfetitfsotgsibhg]vanugoxziwlnbda[apowiuucwbqxkcxry]kithnvgmjbuevopx[okzohlobuxbbjxeul]wrcnqenrhpvmxzp
+qwmlncrpjifxmtyxjil[evgtbhnhavfwyih]ganxbqprffolbtg[pxidrhwgdqsycynecqe]sukgwvxkhbzolomvx
+vmgykxaeppaasupwolg[pqkilujgqcoxpzys]vtmypzwtqecvidu[nolweceicrhwtvov]uevlxruhysbiedfibc[ytdalspbuzpagzjr]yrkwrgdaptnoxcqqr
+fgwnpezirnabdiwcknh[qnwczufxpwtomgr]umwdzmivstlmecryoh[ogyfrrqklslzcqoo]yohswnizpisqpvpyu[bmwnspsfofxvrvqkc]itdkhtuqsybuiom
+ynbnpjgaoammxaoagp[xkivkmwwiejjbbgk]ongbnbtqtcxqipe
+gxuxnshdgyttcjzvk[lsxpwpvsoquxuazidye]mfihmxgxumzfhnm
+ngwlkbdsfkoopeugbf[zkcrhoyehnzszjl]jwkxolilixmiake[kcoazkmvlmmlxhlip]urmeqvldopqdrvrdd
+hnlkmhqgkitizzp[dgtnogdyumxjgnh]gazsmgjzighgwpided[vaxfshfsqkmebtkceye]ndxcvfbzddvksncrr[clhmftvehwzwljbp]tooichznleiqlksnv
+jgnvwreomaddorfbnna[oedwzjkpxolayry]wdkdtjlmdviveeog[tkbjzabxaqxvbnasst]lqttnyqfnirsajb
+yiuwebgrrtctqhvq[dmddhqpukxspoiaua]egktbjgjcfzhltkjtyu
+sbfvjniiethddwbjx[guajrdwgcphepysv]qntvmggllbcquzfu[qtlrmikwlmlzfpqufgk]tjwivdcycoacfcwwfyl
+mxbvlmxjhiorcnni[ubvkvylqtxbchszgp]kzxkzbjtogzujapfq
+aezkzdgfurigqcdxt[kkjkjuyowyhylcxzs]maogxmmqteaectjv[aocufmtewquabwa]wlidntwbxueqzbql
+gngwphszdvmcnjj[qvbontopydlzjywvaiq]jbrgkevvbwzvkcpz
+qtdsnkqlmcwenkzxodb[wqmskmdllfarzicsce]dmubpplnmipygwqjim[yejatlbffcwmlyrek]gsvwxfaeblczgpdvhhm
+ktshrikjzljpacyux[omqqrcsqtbtdqsupfvm]bggungenwwenmztg[kacviemyqpqmwmiivp]petgeydeoygoknl
+lvvozapyfvdohboxrt[sqedcfculzdrbsafvg]ioohxzwwppkserbkim[bytwtckhnlhtxgmes]uzwrmuczkofyfgv
+ocskfzkwwmnkize[wnjrhvmcynlydnbvn]qbykllzinrgwfvod
+eqnrivojtcjljsfcj[rlxxybjowtdptsg]rnnvkyrsxzytscf[mbykscjmwlryaiictd]gmfcxwtjljrpihljll[gxrwqhtelbnpguyvw]lpbbvcxyokowlqfih
+sujejaymvqavyvhwpe[vzobezygmsxvqwnnu]dmuyhdixfuqfbnehqve[gwdapthzmbpwtui]hxhsorcfmtmrdqqrzf[dqrxkbkttpsjkqpbnl]qsmueuwxsrnejednm
+vmqbwehpqesssnps[jkyzwrfofkfqkse]glwxlfrqaamjejrievu[jhbggigitejevdzgqsm]sqxbxgyvfpqtxrlbca
+mlbhjbelhzgprdshat[zcytqxmfhuyriabyr]yzhvmpjfzkhgxavltdz
+ctdohoakygysybf[loxbfdhctlnhggxpoq]bimosyslpbihbwqp[fahhvvdfkiiucdf]bbgugrcsmoasoxyymgz[wjhbkirawxanrqf]palckvdfnlhficazmwm
+qoetptacgfcrdrstl[gpcfptpchpeiicbmfd]vsjqqgbwiqlndgmop
+dmlzhkeleeqkgqvriu[qxzssbjfthbzhdf]inuernrmyomwyre
+pcezyuyfhpyebmvanp[jccebfvhvicqksgwyqy]nssvudrlhkckath
+mrpkkivxuuozfbxejfm[bkwbwzhwwkfqqlupltj]ngrlyucvbmdilkke[qlzntmxfkeapmlbumu]ynjqdpmonwypyjpalvh
+tkqhdmjsbnhbvkdgo[jufmjoypjidudkbcvy]olrsjedkqdbeijypjp
+brnhsqltbrizrohj[dlzumegwwcbonaa]llqtbxfulkgjeqw
+vxjgwcccalsesmngkbk[owvdclfjsyhgchpt]zgqonnjsnsqxxvqzmqs[wsmtnxjpvzcdpobat]rkgwlaecswhucndgv
+wkjmaneymsjdyjd[uvgaxovnqgsvamsbz]naumvynxlnbgksk[mmjeguwrwppdwmdjlm]puiytitjsyskwomrfqj
+fquaiztteofhvsbcba[hvstcffflwbvchn]ntvqaedorhoikidi[cpypurqddikmaynmxzx]qkrvwfsppcglqejkn
+cpjplvpmbumvgsduald[sowmjselnjpjwhav]flufpydujtzuzusyrr
+jfhplkijkstxymvwgz[kbsytlilpsegzanvlee]ywcxnydvgcxzuibxvu[ayieqmzukhoxmcli]rsyubeqkgvobehe
+ocsbswhjtvywugym[twhemgyfgdfegogpj]xamojomgxvyedia[rukhjizwdryazdtdsb]fdiecwglfmtfjqxocw
+vywxxiyjfwsjhvjmk[mwjsyhoifeimjqtmx]ribwktjvuvxakqqznf[izcdtybzxfbyubfbckt]aocntguubagirsgvz
+ursnbtivqkjfkcbls[ckjjoszuogsdnficmhy]wwzjkspwdvilshnzg[gzuoexgingreqktak]ywmfxtqooxdgqaa[bmucdllxdktiifoqp]pvxrfcknwxdjivyym
+ebtozyepluaazxsuoi[mocwxdgmeyxmoulo]grazonsbnsnczptl[rusiwrrcbqpybtjfxt]ewazwwjculbvwjgc[jmoyjpbznvzlvnzu]ghwsmgrsqjgragu
+cmbehdhyvukkufctwpl[toklbggcxvjerfqozbj]wqbacnegquxmszdul[ggzaznwywpswuxmlmg]swowxuqlmlfvxmznm
+qbebmodvutfozxt[macysosjlpjhykkb]qdewwbokbiqofejcsj[ddzpouyuxgogajwmuk]iukkhkmjmrrkefycw
+adaobhuodvmkfzrbk[ucroxtaavsmpvfd]nvrnzhxozidrgvf
+yytzgmmuqrfqegalpow[eyefbjmsyximixd]sgxjxpfncigzmft[zuwduxnhjiidywvsm]qmdvambkreelttqmv[mqhlvabyxnmnjfpkigl]vuxmnunvxclyhkxi
+qdgaknszcwxvyhlrfsr[kbbxnitytjopwtruar]ucanrksrycnoqlcvrd
+nqwjdcnwfxkdglllft[gbawkxvzhyiprfenf]ysybkzwywpqwerm[cwsthmeytiuialllzxx]plcctxffnigyhdfmndc[kyyvjcfkxfofxfsrw]cwynasabqneione
+kqthcqbvfsncuenmqx[rpokleyrpkohzefrw]txvckiapuezhimt[rrfglfzarznwgchlej]vpnrufinbaqrbjtu[hypcxgeuiotonfxvuf]cfpjwonfyqddtogr
+aaxuojwascuilsqjt[aqpfsummtaolqpdi]qoqnuhfpinypgxiex[peasbtrzdkneuriyt]dbhohenosanaxkqqxq[fwvbczhithdxtbdpd]bmncqvxnaijxuexu
+mgiepbqfrprbaqd[swsyfijoncrtrigly]bzdkfgrsmwamezhp[minqrxxklutrtrfxps]dacjpwxdrbxhumh
+shdjdexuhgauroqwtmd[jpvifgjpgzmjlrnuyj]svvjpufybafcjsoppia[albycpxsvxdykattdos]ewhcfugwuovgnepvovv
+ldwjwyzaqxwfrelh[rzkhymugnnpmowx]xufycgvikehdxxggp[mykgpsmatnpimovscqe]cpdwiemofukofnauyh[iicxbleijoxlvml]dxzlvafklkbfhqke
+cqdtbwoinxghfrwulij[wwuuffpfxzcckuf]zeayaofaskxfueiq
+odegrvwiwncavmxd[smgtzidklnmlnltytx]psknhjsrxwqdqlw[kmejoinwatytdkz]dfziwicdcmfwawwf
+jzioqoutlwitjdcb[furuyivyebozkvcny]gfhakdfpfouliybsvk[vfrykghujsittpcxjnj]vjekmvdvwkaffrhhr
+rclnyybawbizurp[cptbsqptpvcuchcyncy]rlqjeblagqogxwy[mwexxfjhkiyoihog]slgmmhvjhpomcvgabu[xgipgcmbydzmayywci]tptdbfqkemdnuzvuz
+junsrcleteqbngabdh[loajbjvuielphzeel]yquxjlecdumepsr[lktbtwjmyeqrurys]ralurzrcthwtkenjtet
+zgykbezaearyhzuxhta[pqtjhajbyttwqzfozi]dzodljvnchwsytat[wrdvidyboznzzbgvxc]fnpmjaiocpucgucwh[kiqymnngzdrlcncpw]xkjzheobflinqcxu
+kbaghyebhrmquslcfc[ukdaffinqagmwhvhl]ruyaqrvavvfrzwiyit[jdhkzojqtxymxoaval]qfxsbqwjtsudcet
+obscoqxaeartfjmeue[dtceaealpasuxsdoo]zhtpbqqfonksrcpu
+bphcztpaoqfofau[wlhtxjzhyooevsax]pvktnvejsbjwsizugxj[aijfjqhoxneawmq]dlfbjynbvobrkyur[swgyiujwbafngtiql]nepaaduwebbpsrew
+fsjxwoamqjhjvyyr[johjhabbsofojaxccga]tqcnhtvkimixbyiqt
+lrasfxkclqtptlt[bmwhuwhzvfmwxxwla]xghbszjpdbdykjmfvhx[cerzilbrtilvfptwid]nkzdvndlbgkwkgzwatw[njpjupthwiwffesnct]cipyoqwmxtiugbyfmk
+txfqpycfderhwnqtrp[cvtdbizqhlxikkw]nuxymppbyfdpayjxt[sfsnmgqrjqrlfxh]dgwdxoveamltzalgyw
+ntfdficysbefpup[fvdhtaqmjosqoxosu]pwrbdoceiweqrfyrx[ftlwubetphczbxhx]jolpetpuszxjkxuupke[mbcbzrxeoqpibuyjsgg]cpdzzdzkwbucybc
+pwwzjoakzydrvkyn[xisfgbgguunevtbg]ntzbwgeohmdvitrtdpj[fzkkujhplarmvzckn]whvdpxzietgdyfhok[hlmsjxrxxrdjfrzncyi]xvvkjroullhawqdj
+pgazkqglbbjzrofkpy[mkeiyuwlxlmgmeugcbb]oguzgbkaasscxhict[lckibbhqnkatvzlqcw]ulilgiydzfsdwngr[qcrozfdctltxaatyajh]ojyzengehkhylgh
+zdatmhxwkinjiumoy[qwhfmokowsvzgcngeax]uqebryzrbawakjz[ltilidihghatuhi]lljxtazlhxbrnvwsrc[updgoblisisvpdqngzo]tjvlrlfopjdoyoisim
+tfguxgdgurymskwxk[ngtycndepeqrcif]gttrbjkhsbrfczdwxo[xulqdcmgztpjgiajnkn]pgwsbrzakmvblfsvlsd
+lclevdvivjogclcmn[kpxlegarknivgdvfymk]kygexxjbzqppiywvxtz
+zadpyjsswjcfimejbc[htbpkbzsmbkfeqww]ydwbivnpofvmzvw[archeurcpsapgylrf]teidjxdxdailsbb[nmoqxuhzymlxxqykol]zbesrnrszqdpsbchg
+ykwptdjfydxfdue[svxdapsdzsvmsifz]omdvdqwkswiktcwkma[tprmxhwqpdycftzlsz]dyfcmpaaokppkzvoa
+adfqjdussbzlxfvlg[hxktcqjmyqctyjnl]ouyrbuvumwwygdc
+rrryoldbjkwnauaz[uarnttzxeuurzokpa]clkjazjocprwqti[krkcdnwldqexavrpo]fdegufvailefzfi[izadiszyerlbhwd]myayzynvrymyobbfdc
+krttvoiaszqvnme[hlywolnuxbxjhzmnt]lwcvxyuuugaqribebi
+yrznsouskotcing[jnttzbfwdrpszrcqr]dhxidpojntnwrrsjjc[dlvjkiqqyrrougz]bjhjvlhvrefihomycx[veomjtdhecgcvsshcwo]iboybnggfhdhymyukl
+qtvgzpyhogqojzi[vtbmgswqkcpdzhxwzo]jsmnjadclhgsofgrq[lltxvswaeqdbvbyqj]gvrdvrgygzhbetbkjq
+oqmbdnnrpqmjasc[hzdfeapdznngjzjchow]fdoxpevjbqngxrhhlhj
+ujszwtyancoxbcga[qzpevsjkmozdbeqf]bdzegnfxtazxdna[wyinvjijbvudlvkwvg]mrgzfijgyouxyio[qehebkkwomsmozoojy]sqhbhyonrnjocbjzfl
+hinhkyqfttbnnou[luuiucbkkrnwiuqbwb]ujfitmunviqwhkiziy[wqbetolmyaceofd]wbwbxudxttgmtuxjeo
+schrxkylmxpwphllds[iijplekwtutqrdkmsrt]hvejiqeylhoxdpkxz[gbhczsfvoidbktsgbqu]rtfwgjnvhjhemkkvbm[lxojvsbvcnlbuofvwg]ruakyrabueflgsnict
+fvqtupyapfmstztmbe[zxtzrmjxlmgshjlfywb]tdihozcziyvstvdtvd[ifzqxsyyhgstjwlr]xihkbuvismdtqtfm[xtxunrrzvtuhjlzoji]zotmlgbjircyvzgcxkd
+shkjoyjuiufvxbluji[saofjqdwpwodltmra]xldohzmyameybbnw[zwaispolnanumhtz]hpobrxhytzqmkrkf
+jgaozdtecqmpueg[bnfjhfyhdndzlkxrcb]esbfjomhfrfvzgm[wqvhdvpvrbsazqzgnw]lkmrymdcupndnoktuv
+mehlgjudopvrolla[ghqzncojnxbdtupn]vacvkbpzsztmzhz[tcvqbgfvrehiycr]unpokrfctcwqexbgo[hbigocuneutkffaka]dwwclmxsripmvcluve
+rkdurapdxvohktm[idaisubzmlljyfbblho]kkkxhnkaiaxxyivjsna
+ujdjbvlqoavnuoeeilr[tpiehldutfyewbqv]crvmofwdjdesxrl
+ptyvtwbbmoujjbvsf[avhpwnutnjkysjdubd]ysgpwvxugjswjzhw[fvgohaphbuqpbwzr]sqvpubqxxhmfxvlw
+sslbaaxswqcqfln[nmdfjxyyrexvtxv]wavnexwpbgnrbrwyrf[deouszhzjkbxxrhvkn]xtfqfjexnqgdiddxh[tphqtpimimjxxkkndng]ncngkkzdnhmbqohupgr
+kcowklgmyivdmreahg[nhhhjuxwoafzwur]jokzmfbbnzsobiahlhi[qgzkumabuuxqhki]ubnjasaqscrxdjy
+ccofivnvzaxcise[erfolydklxltrildvth]sjprbxbfldbsozha[lrbdfwialwqinprra]wqresduonlpwaamhj[nmlgvtrcuqvsirfhwi]qjtgpekylrqmxxbm
+fugomjlqyofxoij[prndifttmowgenapio]jpvcsgonnqmvqrxwo[yuioijkmnwkyiba]gtosuvsrcszwsotg[zvtndiccjofwagevdcb]qpdjgtopkcimpfyqw
+zbzstwtngoozwdgtkme[mrcfdmgpywwvikyrto]ktlmqekphuekemo[wenupyuqahrgisu]wjyyqsuatrkzlohmo[judqmuzbdrqamof]qiovruvlcreoircteb
+yyclnzxvjfymqgrzup[koyfzianzwtvdjga]jtfmxjxehvwejfl[xbebzfwcbmjrhka]oqnpqgevsokznwo[briagugdtzfswfbq]dmnccxrswiebtkwao
+muxweanabaymbamknkz[abtqprtejlmchtpy]nmrtnrjxewbqynvbe[rtxnzbwcjbtmvob]segkftbvlvczkgubgp
+hkihivjdrqvywhwt[xpciwwigazxeddp]vkaysmwlighihfka[lcyiuojfjmmhltubrj]spandymlggnmqiact[xizoxzguscxtsut]cmjecsmmjasgpvx
+kasrdhbhmrlwiczlyp[sfvdefhihrtmmgele]voszgwzdjlvkejvrkn[ahwvipvknuyzrzbrmkk]yuhtxgfpaipuupqep[hezjazdypaguhxkwud]bsfgurgwdetewwg
+mkxpacxlrpbfqio[axwgpntpusujnovkpxp]afzkmjvcysdkbfeli
+mspmqxwmjhzxqmbhbj[zniufuwcidklzfpuoxs]uvlrvuhbhjhudvx
+nrgtmsqbjxlnpsc[hpbskrvswufaucjmjv]pkuulesksyygynxyku
+kmopgjfjwvvrfgvo[qsigvjyusqjqziiuwxf]ewkbjkiqfgdwhkot[tbrynegplyfllxcqaar]cybelgkyrndjodpf
+wjzkfwmrsnyjitglauy[jnncpybddtktmehxz]hluaspiawjwywug[ujwjjttoevainaxqmer]gewchllvjclaahplb[haewxwlxjjnfggtg]uxmnawcpzfwhfiefo
+jogfshkvmshdacro[anluswkewepuhbemk]rwfxbxtmtfgxatwj[lwqompcrkgqzkajgrqg]ckjftivpzkflgbifzx[autylalyokqqlxgu]chewqmwkwewmwoby
+vhqxmrwadjsfoprv[imclvgvrtvqfbcllpr]kmgvgofdlkarrusoo
+kwkqhpdsrkdlhuq[njldfvflplvygnihg]hikxtejykexrghupbqz[tanglgtyodyncabh]ennzrvfvgcnlehci
+hmibwhrmzhcxvzgt[vrdwkryugziqxxfv]tcgmqhirboxwvyy[mjgojhlpjolsjtcu]tphrqucjxjpsdsi[ahqidqxdgeucevqinms]edzoyewnqweqkla
+deizsskvkzcsohdf[plhmdlimpiduxfdyzv]iaodhxioxasudzv
+aepgcwcwlpdqric[xyxiplpunvajsjk]dkragqziaqxgbwr
+keocoxwzsscocdxcf[lvdnlggndlqzvxjo]cajmnvjxphmfopy[bxfnemakuysdjvhzv]ymuttirruskkndjlpw
+rrfoglacqhfucnjkhsf[ejgwoteprdneomyqphi]gtsffeskyegnxzfkssz
+awgoetenjdtwnpw[hflbiyqshareqvcc]qxwgczjnzceffwk[eumisjskpmnqfmox]dtsifzhnbdvlfaqdkwe
+jezzkwqvkbbcskih[cxqpssjfttcropqrk]eqkohazzfagyqpjt[qveehpentvwwdazsmdc]enufhtsnszihemkf
+zqokauntjcoqolc[kfjplmodgrkaeuuvq]fqicoryxfrkubee[fcncbrofqpyxdnejn]yebngpgxcbjnivisgza[bpwzrwupgpmtbhg]ufxyezblslkscovzaqd
+vdrhbvkjchpslgpwwdt[cfslokjhwrpogwmf]qkxlvkrswbbbhudgk[ryazzfichahhigijhc]xbxrwruzjhyjlwxf[xlulxjmhxnhmkflqw]xtkuftnstlwxwiirwko
+qwbqncrimtxfjspgyyn[ysolszsumngdzijn]stfhvhqwymtjpauip[lnucccqwwzenxlytrb]aumcvdswfuucagbkel[skoaaxgeqadxehwvjt]jrjzozvfrrjrsvmov
+akweexwajqyahlpq[pjxilukjsvzjerrcdcb]qsptnuxrshmerfccxhb
+xbnsmtgyhitmtounl[msqlrxysydxdydbtyho]varxjhsmmqlilsprkq
+udmbexywtscnesd[azofuoboewwundyif]mykxybobvefathvqkfx
+gjedwdykwqbxqpsb[nykqvlfsckqcgfhvbd]xdactphykfhbpjollax
+tinuplnorykjcuete[qqwstzqrupgcliapi]durprlvdyucmbkhceq
+zrfmusbfbogbrsin[gaayijtuqfbfnxb]cgjsibujnswdmuhfez[rhatyymizrxrqud]wpvajerbhxbtrva
+tpjpjlmhvuorwnd[vnwdgopuigazzwytzbe]uaplhgdvedfaiboz[rqkafxfjjzjwbzwung]cqwjlakbfpqvxspia[chyrracxefgkuznb]chigmcxzjqnzsdn
+badqhtkxeokdbres[wmdthitngyoujdumxfb]lnafdeqakaggcdttnq[acuhhjaemkakovqq]vfvloofttmvvolbpgb
+myaunxirrlgywdtyrlp[nxinrircujeyezto]tdzynxmmbhjybgz[sxbjlwhbkhpplbveqk]oplketzgeeoczpadvhj
+wtqjkfmtshufwfiux[njjvqujaetzgcihtxvi]fapfzhffwqovrvfpatr[hwjfoqsbiothjtrbg]sfwifkjkimjnyzaui
+milzoncxkgtbsgtxgb[zvskfgfsgefelbjckwy]lrdralfxvtlupde[kvvibrstieyneglniu]pfyopkpteyovtkahwby
+sjwqwumquvxpwokonnd[wooozqoxtlhwsfhtcic]tgzecomscwuxgazattf[dmaxzgxonbkehxgymq]xbqkxgbziuumwex[csesnsjiexhypqrxjj]dbscxozezqgzexrwci
+yqgpqvteubzxsmjb[bntiezjqbiywrsq]nrgpewzpshvjwdx[qifsblzcgkiqfmele]oypyewwjmytlaujp
+bxlsaiblatkrxpcr[xxnilxrehixaglra]apwnnbwgatzwgmr
+rqsogjhjijafydmr[krhzamyodyfpbdv]jkjdjxgdszznhiv[ywihxdwlgdadayqm]cjvrvelwbegtiqswzqr[toujknandbegjga]wvdikqjnnxpuxtijios
+dqlbbhlsllmcdejnme[fchpcehhwkjwkythfc]shnipixrreczdblufyb
+pljkshxmvbpvswl[gbuflmmaywvbjwibfud]mexysgjrvoxovxtvici[svuosbkwxjzhvmztiq]cvfjfnisqtyomho[jvrshoymwbzcpgxtxl]ysdystgkeioszdbora
+ooyljflrcdoujmfajfu[qvnbylveipljcmgrvl]cjfvbounfvjfpsxmbnj[mohdhwcdrykexihcgvb]gfzxjkkqdnspzbqb[jkoiqbqtbjxgezxvsgn]juvveztzrtcxhyp
+ebfbaesgsxjbwhkmpxp[dzkhyyykwhayaztjt]xkxdjdlfvlzpqbb[tjdqvwygsgoldpffs]uwccbahfnjkhbfzcocf
+uayfnudukxaldfgdvh[tshkbhbydlzzndsc]wtjmhgayuizllbngcr[tfglywxclqmgpeatsva]riocgxwsethrhbh[xnerbhkafskywvgxbdl]yzubvjedgzbpqqng
+iensavdsekzfncu[frepnzfzbolseio]thbtyqsviqjozgq[mqobufwdnxkzqvqtgj]woxdzihysaypdxamitb[llqsjadcqlogalbice]xwrmwjiednucqqfuy
+lgmcluvxcilrgacyc[ozvsjikotkgiepo]ximiftuuulbsghmm[ykwtdziaokecacpd]bvhsjkjycywcuitep
+eoefpqghlbkskrhdhv[wkzmafhoocaswuz]iyiulabsaueugqys
+noklaptafpgtvzb[hocgskfdbisxdlcdbq]sgwqzdhmwapbbjox[yyjutkzwybpoeea]xtnvxgftzjdwqhgh[nqgarhtwigpfriuq]etonjczcgfhclbf
+tyqqeyfkxjcnjih[edtgzfrlpapwoyrnccx]fmsegnaucwnvsyrsj[lptzjaxumqhbwhmljyv]rugwpouagbvimws
+enpywofbxruqkma[lesuqdferlsfxqis]tqkchirhakakvbgf[ytrxxjwygqwaauwjsg]ncrkbikcmvtbtrabvqb
+nticpuumzthsihk[asrmrtlzizgsvnvcxny]wjntjizixwyedcrh
+yjkotqgkximxcbpa[ttuenysknomggwwvvhe]htzkgoilhlqrpmbcvh[zucaclqaevmjqfuy]pfkvmsbcslkjxyydhk[obfcguogfxfimowk]eczitrwtnkfqyvxco
+nbrsaktghjdxrhul[kmtgawzkmntyypqmw]jggmopgbovomadux[pkwngsqopjftulu]ymmfdmimjpxufntd[hnovhrnfsloivbbueip]oreyglwcjkylphqtwl
+ufynjbkocygleqwskw[yuykssufmvmdkdntk]opbcqjxsioqpkzbtuhh
+nkxtoheqxycxqbp[nmjgqytppiuscyylrm]ezhiobiihpmhkqjc[bewnvjufjzxgfwhy]hslvggdrixjquaigzp[dkaylzejrwivzcl]mxzgkigdgfhmczixkrq
+fgcsqpmignjsbxxzt[zoatnmdxtjwltkazbep]wiadjhqakemepgfh[csuxhgjcqjsztsrwb]wdekgrxgngaaqcequ[kjlsrjjtidezpuitng]lhibpbcwjndstunhfff
+ozgymklbikxnhme[bbbbemtxaxyxnnazaxm]jszcoclvxluigfgdlq[bkkxgjapnrpvovq]tdsakecfolgpiynztiu
+tytomipjwhuqwshlvho[ewcfspufoolvxmeyodk]wrrxjaexfktctmwrkvc[fwdrputsdfepfvglfq]fqhmqffdtqahfpyelce[elfiaqrgaqxwpjbxcig]jmlxcfxgjkteodsufs
+zdfxveufnuenptljiet[bxzgimeczdpygyen]ptmmjlitdsoncpjlwh
+yfyzedhbbtpqiwmri[uqxjtkmjcivoqatycbc]etqdfgffuplikkgrug[ezipcwmudtfakrrif]kumvfsiqqyfrbcbvgf[upsfgrzgndzpzxhmx]aewrwjwdquhsagmgwah
+tkhbexdnhdkmlogvk[rvuvfkiqrvxwewnhihc]yytysizvrtytoqznokd[cyxenputwxkuesw]qukaxyqfxbjvgdcy[rfvlqyyapixtzghha]sjazfjtokjizlxiim
+ynwzzgtnjmfjhbys[enxaumsepjmyaapa]tctribvarqtdaceq[omcmnkckmzjjdhjiwvj]qlkbuktkubixegud[bbvvgpocsbliknv]nivyswbiijvnvvkuw
+dwncikgxhzvktwgwa[nwmhqzwlvntxvjv]dmbsieiwdzgwecq[uvutvspxpxwfafv]vauzasizdqputolg[ncsglnqbwjshyxa]dtgwditcpcuncdcxn
+kupmpwwjcwmmrhum[aakppoytxqucqfncv]gpuyruwkndprpqjqwup[lrcoaodsmpmlhnhnyq]zathwgfvwmumcjwaa
+ivdparkbqlazewoujo[tzfulakdrwfncibtnza]titrajiplrfpbsar[rnjnbtkpwadofahdfvv]uwobxeoluadvnxyxwl
+kkoyqwkjdgcvqaufnj[qucvzomguivuynsg]cbhahcwrhchflfuc[czlxnbidfvtovgdl]jmyougddwlejoyrfsfm[kcuqcjogcjrhvjpxx]khnizsdkqwzdzehlpe
+wzeknwbkawxgvgtq[wmypojfjlgomvmk]tfwjzxvhrbxpkuyk
+ivalkzrbqzhiqmjo[olluyctvwisrwwt]ndrunxditvvundvd
+zezjmfpqesoftjufk[tdueprzpghkckpq]fnwlbwrhqmmayee
+jpmhszgjuxnpjdsbtk[cpzosccgpfbvzuretl]nfpjzsqdvzkcszid[csygzwucakziegi]laqibhadzxurnulc[otxsegwpopkabmwbxzd]ymmsoiqsjnlnsvlsq
+srgtzegqicrsutbpfsh[wfdoodrpmioayoa]kfqtpkwcfgyvjeyhvsj[yzcyshhziwjudxmm]xnmgrqxumondortjbye[nyajdyykzhnmolyv]zbdkvkbjavamxrafhbl
+ifwabdpxckluvreesop[dsyliwtgkelyyam]hqwleigpcnogipr
+bpaukztdyuwjkjrqj[dnslgwpwsanuxvtyn]fxkjtpifmtqzrlok[vfcgvkrunowkiilyok]ypgxcltrqbuzwiqom[ikzgjcafxhxmtgril]btdnvecxukjskjkndz
+nghqjtbvhviyatzaz[guzxivxizjukrxwaf]vtggynfcmuttsnrvm[eqvzxmtlkaigaur]dmfhpohcbyjikjl[kxaapmbxolonwgbw]uektjdecblphouwitdv
+fxefzaiaeclqyvka[srznplyazbvctgfdr]xakjubrnnbfykcep
+rwlthwstbsaxphlsrz[ihywtcvcfdeczmy]lpxfewmiwnskbnv[ripgyxpgczfvxkzp]iltpwldaivxkwwcb[yiejtwqmnnnzywks]krnbkndouhoakztwzh
+mwaxggiakwqnbihaaj[pxslpnutqpgdfvhvwgp]nhhnvftzfwdfnrqisfi[hgroxibwekbugif]btrhjqipvkpfvcf
+xmxlpyuuqssmtmzqyb[ybwrbnrgkansaodfap]cihlwrfxgbaxddtja
+fahbkbakvcwwazgioub[ouuvcmqsmykbkhfhj]gntumiippgacbcl
+hqkuhmrurcqtkzusgu[drwgthikmebvdcjapw]vdxfpjwqlcvwpgsflb[mmaxekmyvkxfxye]nlusofrecbdvhbruu
+tjyqhrxlyrubiuwl[voyszxwudonuwiptjoy]xggibveyrclwxsq[aolwexwhfxpwcuavvwr]bwkkcnpvsiynoeikmlb
+cxpvpcjhfbokvuh[sdkkaewwgkvniqymkrl]emeetymmtcbrivitvn[bvyzmgaorsfbsmqoka]vodjpeovgjpofkq
+nupojuxxbgjvlafg[uhfrugmmacqdsap]nxuunqzbasceyiz[ircwdmgmysazaya]qwsmsdywyhklvniiq
+mxujioozxlybxvyjcmj[afimhsdzsmtxszd]fsckiqksntizegvxgz
+htyhhcuqdfhhniloe[iqslmejacjbynzkw]nenyirdlormvppyym
+jbphnkbvlextsaqnid[xdebmjhugwvnodt]spdqamgmvsuftfx
+mpdupjaxozerpkit[pcivcugsbsqynoz]zrxxjvwswbpuylnxi[tjoxsullllulompfxhy]zobcdnaypuabmzfn[inubfyjlhoysdjath]vufswsypjkekcrb
+qsbiexorinxuevkoad[tjzedsasyapfnvwa]qbfrkhbfmaxcgmovnif[evrexsygnumrldt]serpxomgczhbzjix
+ukqzagjymparwzqvw[lnkduutsjulfxuqug]lvupmgsyiquqeepmgsv[ekenewopqmddlcqc]rhnwektxgccickla
+ezrytvzepmzxbjapim[knaxuvqciriixgji]epksyimofrrkgawirz[tewvfyplzorvkyeog]bwnejljtelcigsqfx
+fngkrmmwapuutwtn[pjrinpthoymdxemoe]qoxhlklweoscgcagw[pyrevdqrznakburr]fnsowwitbsxsdsdv[hzbrhpemwokvyhpohjw]jppmuxhrsdsmmprl
+wfpphsvqgdaostxg[abwxepvuvujjmdbhees]uxitcdrdkyaqgtyrdr[rqdczpmmmisomtmop]lnqpzuqcyrdgzrcc[cvzwdsaeorgdzzklrx]ekwjqzkeolvlkkqtj
+qzhiltifnugunsngzg[fxfhjhvijjnhnxkbl]bbaftchmgjrfuanns
+isducdmcjzbiacltx[jvkepdvzknnyqegqte]zbuvzcrrsbjsqkf[dowjjsipssfisalqwmk]uzrmibeeevzeuxtb[ajzixsnzrxwpekzpy]weogtsmtsuxvjyhy
+dnxhdwkvawccsfvncy[odsmukbcbpfyjqeau]ugusdxmjuxjosasg[ouwrwzplzttepynf]avhgcbmjesyqkzjgms
+pwyizorvifedguhjqrg[zsafqttsqlygzwmqv]hxilzjvsuyfnyck[dnovwvccguuzizrjw]qgbluurgbxnollv
+meqzvrprpthaebpd[htamsljskphtldx]riagbpmpasjnjefv[cvpfevyvpivbals]tgxiqxmhvqhhmrr[cgeamacqfrlrhaoz]vficakheeoprpbows
+okkhpeexympjqvlamxu[mvjvngmxhkbiaygi]pnwoitpqlyqaiwdpf[ryfcbkcyzbvxuyngw]xxgknvjauivacqxr[tqmanixcxxbolxf]orhkvkwpyrwbymux
+ipwcjobowzgrgzmnf[uahjinxxnmyyibzp]badwoisgtafnkgnp
+bcbwbvyvqpozfig[twwsbwyhvfaddwo]jogvkczzowocmkwwlla[yedsazzkeklftvohfqz]tghtcjemmehumuyxar
+bevtohpxkrlrjjen[jxnohlogvkugugmk]nrxomawkgbwlnqwb[rtjoeivssknwelkhv]dihcnpigtbnwfdlxhm
+upuufvskhseazwfttq[kkipejrjmxwmqjsh]xquyqplziwgvkkiyv[iirqohxpmcxsjryb]ajblnptlfnukvae
+sijztjuwnyftelgytm[mgirqlkcbaigiyx]wgbeoandnwaudhgvd[drhbrumogcajpxnvqov]vwandmoxgzsokgfs[xwgtfizcmyjrfzgejhv]nhckviycimfezwefw
+gfgrgtizxajkaicjcc[mftrzuftzrgrwilsv]uckwgxywnamzjglbnts
+znbgncjrhyxaxgd[xyyzkorhakwqubjzk]wrsdvjsrsdorwkgr[krrqukxrdobhkzmr]mdebvnlirbtdbavpj[adbczigmaoreudvgns]yqxeoeccdlpuwyvf
+ymjcaobrviuqtvxjqq[jwpvalizcmbpfdjk]wmxpzhqvcavedvmhtn[llsefbpkphhetqhbj]qryznzcexwgvxni
+ginmrsljkrcminltayt[iarzxlzixokzfxiazwl]aircthhepljgylm[wlorimkebaxcvcwanlh]bihvjtofcsnvuem
+zdegfhthlaitfojyj[bltnoljmwcfdvle]gnadpzusiepwthtv[ieuoyrprfkwonhwjt]wwfphscvjchvrab
+kdnddjueyrofzhjdzcs[asdqcpbunitvxrwi]usylnhwfapvczeb[ozrrpkegwtbkftyeusg]pncbcdrovovzozcazn
+lkksyjqoayppxtvns[csiuzvhklkfijem]xpsmnkdmivkitka[djmnmzweqxrkfomzqhr]wkzmhoiasanmhez[wojpalkldcaopeg]murhvjrgpwxpbveekq
+jawznxjorxwvflmkk[gafmrermlounwjqod]nalazknfqhepgnelal
+wlszezwacdeehnlnoj[njlzbwkfnvnbwim]fydgpvvovkuardng[gqxvckevjodockykp]qsbtvwpwaaeatbd
+bwwttxctuzuezxfdz[apvuanhzemgcupc]qcfxkvevimwvwpu[zhhorxgplrpuyabae]gzabsprhuhwrtkd[sqhumhfqwdgxthu]fyebhdninkahfyy
+hhttjuhgvcgkisaqof[obpleewrfrrsgpumz]umcmeaytqjlqkyrawp[rhkhciyzmxciiysv]kszzqcmcylslhlpqjag
+fnevugmjjescvvmbmt[bjzdquqohnusozz]fwlevkwzllmptbcelsh
+hzqfveaxrqycvuolynx[ztsmaipixbuhbmv]ebvofyoeponbpip
+utmnuyowmxipzhde[yuvqwfsuyhonciiepq]ynjvqvvifywnecwzdk[httqooeiilokkjghwjq]znixikpswkpgxcchuyg
+goojhvcnizyiukzgmwb[euyvjdmnjjrkjwpu]puidllwqpsddlrhx
+ysglduipsofxegb[kzrbdzimejxkyftyuz]aekosjomszyegyy[vpkwocloupebnjeo]ocdaynpnnytwrgkn
+anheyoxddpkmqla[isqzqeuwwitvtqy]jnchwevvrgyznqsomum[kribzkkrxawjnfsmiux]mlerrnvwcydnfckydfm[hwouaafteeabtgflb]acwwvgztxwcanzizha
+kaqernqhzefzthuc[tiuifctajhxawtoi]kyqdkeudzkihvfsn
+vwwekuavrftztxb[aywyoempmajrdkxpsc]eibnjbszsfsapujqn[rxpcsihuzszefcdzl]gsahdvozzgxjhontxk
+ymjyffbcgimsalujegr[dnppglortkqlowskj]wxwtxtdaaopcyvp[xfsnsdrlopdotuqx]sprrvphwennltlddiw
+lguyxqxdnirprljpkec[gevtjwbiofgesdwil]phnydixjjjcprpxlpj
+mgjnnftohavesepu[slwhvezajhvdukghl]hdhtlheqzqqrsqmfqyz
+iapqmjgrjnecxylopbo[pnbvgmbhbcmcnpsf]opurzpqoyxdxfkud
+efuoofbuyjoaqjd[achnmlslfvovmgt]xcuyvikslsewgqlx[gjxolnhgqhhglojjqhy]iarxidejlgphqwaei
+uxpcurtzqgpgtzkvp[mibqtgwackcedfri]otnnsgolldyzdpbew[tmgiijgjuvjykwahml]xxgjgzmnicxmywdubrb[hwhcgbzhuoankdubft]rxqzywfyuliatahn
+uhmufcxuptehmuf[sygthxldinztzudvs]bdxukzqaxeavvrbqmuz[wovugtpgwisttusjlet]tpfbcndafwhdnolv
+kwknefvhmzbtjezkh[zcvncbptzekirhqo]qvgnyfkmrnxlgxzjjxl[twxzjkybjlrpurfmufa]lclhwuylibekjjxc
+mspxottklkidvlomd[rhiachlbqgpdhfnxyc]ekkxgijnueonlkpfkm[dnwcjiihmpjqtmb]dkknlqniolowydd[dyqofryhvgracxeuivp]pbsgttbtgksqqevytrb
+pjvdfpsdlampeztecfq[lpqshzeegwiouas]nwxqaoryigyvbby[iiddsczjoxentwv]weexunkmtaaufurjz[meywmosucyrxzlgxi]huqfmfpxdmcmqfk
+abbhujqyoaphnruaih[yidrkxgrxeoarph]fvryghhzqrobkbsck[dnokdwmkbktlfoihxl]ttptfiadsswiwsfbvf
+djwqivpbexyvdquh[qmmdydhjbmunyjixviv]nradabzesdavhasjbjs[lsabjblhocebvyhfee]hwbyvnzltgezasg
+maxofygcnygnwefsb[gdfccusdbseqsqfwva]cxdmwhnjitaazhjftn[kcratndpffdnbopd]wocybndplnotqgctr[ymceqbtulsezvftsi]eggtzhqojksdjapnv
+lzihlroqvmeohnun[wskcytlimfagjyd]tnehibbupupuhepqz[hschjdjtzbvavum]zstmglsltkovvckpmqr
+syzoikkgzplleoaz[ccpsffhupzpuhjcw]kaswkcoyhlrayhikme[qnjnztjupvbwyns]ggmkqikeziailzpuv[ugqgbpunztgvsxsp]mntxaumliefzkpnia
+dxnkgspqhyejogxstsk[jfgckouqypxttst]axtisjbtaviwafh
+baxazxlkzlyzvbdvtlc[yhegkwrrluxcnaahyl]nyegiipdjrnjobyjp[ulhbizabyukfvhmdg]hgmxctzxzewckasi[fuvwuolxkcfdkmtcngk]xvmvoydeiuaeawcz
+bkomgyefwkmwwpsayb[rozknmkljogphrqywyo]vlpasefojmrzbpox[epogjnrjrntbcnzha]okfkagkfyagcszueu[gjpfnuvnazbnqylfm]busunenasatqeieestf
+dwlbzijjdujfhotvj[swplsznswlgnaud]bgedlfxgjbwxekq
+ffjhdorivdezjdb[tqkfrzxthlxadqstmqe]ttmrscyvbrresartqnh[rfztsxgbedcdecgv]qxcsxdqhshsqtjtl
+zwosebsoogknldkh[mkcucbphbvnaqyxjope]aibznttouadentsy[xfucuvnlnchuawcapcq]jqherkgzqodpzydtgu
+xondkuknycfwyenkceu[ugjlxueqtcyhyhni]bbofydvkhtjgxxnyrc[gpnwoarvjltzyhhe]qebolgjnwnstokco
+cygilweroxmbmbmx[hopxissehjarmezawol]exywzaffjuhehvmbm
+nbndomwcaauiluzbg[qjxqxhccqsvtkwm]oazwbouchccdhtrbnbv[vetwfilwgnxxxrhxar]mrbcnwlpciwpizkxj
+xuabbxdwkutpsogcfea[tgetfqpgstsxrokcemk]cbftstsldgcqbxf[vwjejomptmifhdulc]ejeroshnazbwjjzofbe
diff --git a/data/advent08.txt b/data/advent08.txt
new file mode 100644 (file)
index 0000000..e6aa6a1
--- /dev/null
@@ -0,0 +1,193 @@
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 1x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 5
+rect 4x1
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate row y=0 by 10
+rotate column x=5 by 2
+rotate column x=0 by 1
+rect 9x1
+rotate row y=2 by 5
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 5
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate column x=40 by 1
+rotate column x=27 by 1
+rotate column x=22 by 1
+rotate column x=17 by 1
+rotate column x=12 by 1
+rotate column x=7 by 1
+rotate column x=2 by 1
+rotate row y=2 by 5
+rotate row y=1 by 3
+rotate row y=0 by 5
+rect 1x3
+rotate row y=2 by 10
+rotate row y=1 by 7
+rotate row y=0 by 2
+rotate column x=3 by 2
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 5
+rotate row y=1 by 3
+rotate row y=0 by 3
+rect 1x3
+rotate column x=45 by 1
+rotate row y=2 by 7
+rotate row y=1 by 10
+rotate row y=0 by 2
+rotate column x=3 by 1
+rotate column x=2 by 2
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 13
+rotate row y=0 by 5
+rotate column x=3 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=3 by 10
+rotate row y=2 by 10
+rotate row y=0 by 5
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=3 by 8
+rotate row y=0 by 5
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 4x1
+rotate row y=3 by 17
+rotate row y=2 by 20
+rotate row y=0 by 15
+rotate column x=13 by 1
+rotate column x=12 by 3
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=7 by 2
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 2
+rotate column x=0 by 1
+rect 14x1
+rotate row y=1 by 47
+rotate column x=9 by 1
+rotate column x=4 by 1
+rotate row y=3 by 3
+rotate row y=2 by 10
+rotate row y=1 by 8
+rotate row y=0 by 5
+rotate column x=2 by 2
+rotate column x=0 by 2
+rect 3x2
+rotate row y=3 by 12
+rotate row y=2 by 10
+rotate row y=0 by 10
+rotate column x=8 by 1
+rotate column x=7 by 3
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 9x1
+rotate row y=0 by 20
+rotate column x=46 by 1
+rotate row y=4 by 17
+rotate row y=3 by 10
+rotate row y=2 by 10
+rotate row y=1 by 5
+rotate column x=8 by 1
+rotate column x=7 by 1
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 2
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 9x1
+rotate column x=32 by 4
+rotate row y=4 by 33
+rotate row y=3 by 5
+rotate row y=2 by 15
+rotate row y=0 by 15
+rotate column x=13 by 1
+rotate column x=12 by 3
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=7 by 2
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 14x1
+rotate column x=39 by 3
+rotate column x=35 by 4
+rotate column x=20 by 4
+rotate column x=19 by 3
+rotate column x=10 by 4
+rotate column x=9 by 3
+rotate column x=8 by 3
+rotate column x=5 by 4
+rotate column x=4 by 3
+rotate row y=5 by 5
+rotate row y=4 by 5
+rotate row y=3 by 33
+rotate row y=1 by 30
+rotate column x=48 by 1
+rotate column x=47 by 5
+rotate column x=46 by 5
+rotate column x=45 by 1
+rotate column x=43 by 1
+rotate column x=38 by 3
+rotate column x=37 by 3
+rotate column x=36 by 5
+rotate column x=35 by 1
+rotate column x=33 by 1
+rotate column x=32 by 5
+rotate column x=31 by 5
+rotate column x=30 by 1
+rotate column x=23 by 4
+rotate column x=22 by 3
+rotate column x=21 by 3
+rotate column x=20 by 1
+rotate column x=12 by 2
+rotate column x=11 by 2
+rotate column x=3 by 5
+rotate column x=2 by 5
+rotate column x=1 by 3
+rotate column x=0 by 4
diff --git a/data/advent09.txt b/data/advent09.txt
new file mode 100644 (file)
index 0000000..3ccde78
--- /dev/null
@@ -0,0 +1 @@
+ORNXNQJQ(151x7)(5x9)OFIXU(27x3)(21x9)VDCYQELDJQUAFZUHFZVSU(34x15)(12x10)SEDIUUVFPEKY(3x9)NHR(1x11)I(15x6)(9x13)CMNDUYGYR(40x6)(4x7)RMNG(25x8)XPDSEYNCWFQFAKUMITWMBLMIK(7x11)(1x10)N(109x1)(101x15)(28x15)DYKYFCKDLFYAIHXSOAZKTPCPBUTX(18x13)SOZMWOSIQHVNMRZYYM(1x4)W(11x2)AJPKYMFRDJZ(11x11)SYIQBGHBNJL(26x9)(20x7)XLNTFHRYHLOYBBGMRPDH(269x4)(2x9)ZG(79x7)(24x3)UBTEBZLPYEDFINUQEQZUSXWY(3x5)IUH(15x10)LDDUEEJAWVGNRYA(3x5)FAO(6x3)ORDEIO(47x2)(1x10)J(2x13)DW(1x8)V(19x14)IJAAZPPGBZPFERJGOYI(103x9)(60x11)GKYOEUBZWAFDXEGWMPXZEOAQCUFCTJCXROPMNEFMJUWGBOUZRAXKRNHTBXHM(15x15)BTYXPHOQZXSBUVT(9x8)JQLNIDKMH(9x5)(4x4)BQRL(4207x15)(1464x12)(305x10)(159x14)(71x12)(24x14)(9x1)UJXIVHSUD(4x15)MAWK(26x15)(19x15)YFYDUJPUZQCKGVPOXKD(2x1)HN(2x6)GH(20x14)INJNODCLPWICQFIERROI(3x11)JUA(31x14)IUDVEHRATPGIEGELRDOZMBKZQFONCBD(130x14)(28x15)(22x7)(5x11)PHVKR(5x10)KVTDO(88x12)(8x12)POLKYDEX(27x8)(9x14)APMRPIHKQ(6x11)QTLLQU(1x4)R(29x3)(4x8)WBRL(2x15)JU(1x6)Y(1x2)U(1143x9)(364x14)(262x7)(6x9)EEJMXK(100x12)(5x1)RXXSO(5x2)VTESR(6x2)SXXSZL(49x1)OFIFQJKSCOXPXTHVWCUJVQMDBQELBLDYRKIGKHOEWRFNXNRLF(9x1)XRUFFMDVM(29x5)(3x8)VPW(6x3)WWFWRC(5x7)XMJEJ(46x9)ZBWGRECVBOPHVFQYBPOBHTPOMTYQGVZKQMKYEHCJYSNRQY(50x1)(10x5)SFPYPPQKDO(27x10)DNMTTNUGOQNAQLRBKDLNRVGRMLJ(23x12)(10x7)LCQWCIMTSV(1x12)X(15x9)JMJMKCIELUBETER(38x7)KWZVVWPBHKSBWMQWBJKCRHLIEHZSQBRAEOBRHE(130x13)(123x7)(75x10)(9x2)NUSXXITCS(11x2)JWHCFBJNEYD(10x1)QJNBNHNNDF(5x5)RWBYJ(11x10)GRRSDLTEZAW(35x9)EYHPPDLIWUITRPLKHXFBCUIQZZMYCDKWPNX(326x11)(130x1)(76x9)(9x10)TBCYBWJLT(4x8)HTQB(35x8)FUCOLJQAFSWAYTACMFRACVWDLZYRGSUMZAY(5x15)ZWHCN(17x14)CRUBDKGWUQCGGAIOS(10x7)(4x12)RWFL(3x9)TFR(27x13)(1x7)R(2x14)VY(8x2)DZMFRMGO(94x11)(61x15)(1x14)O(25x14)IKECWOPRWQBVRNEDQXWFMVBOI(15x10)QVTWMBNCISLOBJR(20x1)FIVILFBNIPNRXAWXGAMJ(32x8)LNPRYYKSLCXOEXFWZKAXERCQKDACFNYA(10x1)(4x14)WRAN(292x2)(168x7)(10x8)HQSTVLQCNK(89x4)(9x11)XCBGNGENA(22x5)BLUEARYFSAVBWTDGVHYWZP(21x12)KGRSTMCVPYJXIJWXVXREW(12x5)NKTUQMXCLFNL(17x10)UPUPBQDSHOXKHLGCR(10x12)ALIFHIZXQV(10x1)KEFBFHAOCG(100x2)(9x4)(4x9)MKGZ(80x5)(20x3)DQCKBWWUZDJICWUESBKY(14x9)EFXIDIWRKZTVUM(6x15)JRDKSE(2x14)AA(9x9)MJFTTZMTW(5x3)VLDNV(411x4)(397x1)(390x8)(46x4)(18x7)BLBFCJNGQWPSJGPOVU(16x7)(10x2)FFZWESCTXC(6x3)EUNIDH(56x14)(28x5)(2x8)CJ(2x1)EA(9x9)FLKGEMFED(10x9)OLOMVPKTRZ(1x5)R(202x5)(88x9)(6x3)VRZHGK(20x12)KKZGPZHKVMLDUKNRPDLL(7x2)CBDBTRO(3x15)XPR(23x3)EHEWCFLEUPCSTSISPKGXIMK(32x5)(16x12)KENYBOSVRILLLTVM(3x14)DYH(19x4)(7x8)FGHRXWB(1x15)E(39x8)(9x11)XRLWASPXI(17x10)RNFIHAQMBBELSLNCT(49x1)(36x4)(18x2)QKRMYMDFPSVDXUXXCH(7x3)SBFHWUF(2x6)BD(2x6)HN(1047x3)(450x2)(10x4)YQQDOELWCI(48x15)(25x7)(8x5)KUKZDUYU(7x6)(2x1)KQ(1x4)K(6x3)INDERJ(284x5)(92x7)(86x4)(13x1)PSVECPHBPYEPJ(3x15)JEY(35x8)RCTZOHPJAICRPRVAYZZLUKRZPOOPFCBCPAQ(4x9)TETC(2x11)ZV(179x5)(95x6)(8x9)HUGVMXOT(9x10)MFDYGPUWF(12x2)PSBNZPCWSANA(6x1)GICWEI(32x9)JCBCGJIMZTQUSVQDRHWMSYJYUHJIVYIV(71x13)(15x3)SXTGVVIWXDWZTZO(9x2)RASQPEQUN(7x10)TPHSDTV(7x15)EPAHSDZ(5x6)BIOZT(7x4)KYMJLYA(69x11)(63x5)(3x9)XSS(37x9)HTZKRPESNZRIWPGWAPHBOIOWAWFHWMIXWYQQC(7x6)(2x1)FA(273x3)(245x12)(39x9)(8x13)WCKBPVRZ(18x10)(11x10)VHBAIPPIWXD(2x3)XD(1x11)Q(6x15)WCPPQC(167x1)(23x15)DYHQGULKPISILTRIXNEJZAV(65x12)(2x9)FZ(14x9)WWCTYVLVAOZDAG(15x11)CZYGTNAELLIRKYW(10x6)IEXFBJJCLQ(42x4)(9x14)XRPJHVVME(6x8)XAVNCD(10x9)IBVGVWIFUD(11x7)(6x6)LSMIRR(14x4)LFACCTXVWLEDWE(287x5)(280x2)(273x1)(7x14)(1x15)U(109x12)(7x1)TPNMYVS(46x8)TWTINTRPDOQKPDPZNKXIVISRQTZODBXMSPPZKCQFAYCJCS(5x11)AKNKA(18x14)DKSKSQUAUTPZPNHIWP(4x7)DOMY(56x3)(6x6)JBJORX(7x11)IDJWUCZ(26x1)XMRHHVJEZBAIOCBKTLKEWRQHWR(46x3)(6x8)JDOJMU(5x6)ELYWH(1x1)M(1x13)Y(7x9)XRTOLWT(22x11)PXZRLOPHTRSXFEGYCCCKOZ(1x6)I(4x11)OPMW(2x11)ET(1244x13)(8x9)(3x8)ABP(1x13)B(188x1)(6x9)(1x5)H(161x8)(115x15)(15x6)(4x8)YQCB(1x1)L(73x9)(2x15)GX(25x4)NTANLQJGDHTCOIRAFZAKXQHVB(1x3)R(10x5)VDXVAGTAGQ(7x3)NKCTQVK(3x9)RRQ(1x15)C(31x15)(1x2)G(19x2)OAUAOISPSPTMKOGJEAV(4x1)DQTV(229x5)(2x4)EP(124x5)(117x6)(109x14)(16x14)UDUBGHIWRGGHYVJU(2x1)DG(7x14)XZCOKGR(4x15)XDVD(49x10)HIHUJRXURZHGHWJMFTGUQUBGCJVLZSGLDIANTUIKYZWXHMAZY(84x14)(6x15)IEUICQ(13x5)HXIRLHFWXDSIB(2x13)XU(39x4)(25x10)(11x14)MWHAQQMPPVR(1x13)R(2x9)UL(786x5)(38x10)(1x12)S(25x9)RRXFLAJRHOUZPDTBWKIZHUNGA(471x12)(54x8)(34x14)VJZSILTGZWMCZLOJSZHTQVVAZSPWHAKVFO(8x3)XCYTBHDX(221x9)(60x1)(1x2)M(17x13)PIRWGCEZQNSPPUBHK(23x10)YJEVBSPQYKPLPDOSCEHYSSA(78x12)(2x6)YY(21x5)TMWGVWVOZDOFGCFEZJRJR(32x5)ENWXNGFHIYQHCBWQEDTMBOWQKJIHAZHY(1x1)E(18x9)(2x1)OD(5x11)GGATR(32x11)(13x9)VZVAFSADAUIGI(8x2)JOUUXRCU(1x11)I(8x7)(3x8)PCV(75x3)(46x4)(28x9)PJXDTVYIRKASKJMXDIGAXSQPMPWK(6x11)SUYPHC(4x13)CBMV(8x7)QAUWLDLP(83x8)(19x7)DDNWFTSHJSTPWECIXWZ(6x5)EQWGSJ(1x5)O(20x6)(13x10)MNFVFUCESZDMF(9x15)(4x3)JZSU(7x12)(2x9)UZ(228x2)(220x15)(49x2)(1x10)C(5x9)TCPJZ(6x7)FJSPSS(4x14)FYQF(5x15)XBWKH(75x10)(5x15)KTHBO(12x5)LLZEFONZKCBI(28x5)RGMNFEEHBHZJKTMPVEPHIOJUXOMB(7x9)YWTZNCT(60x14)(3x10)DAN(15x6)BHOSLMFSEQKOGEX(1x4)D(17x11)SULIDVKKLXIWAJXRK(2x7)PX(4x1)TKPO(9x8)QFXUEZUGP(2331x2)(2323x8)(202x13)(10x13)(4x14)GFSR(178x4)(101x11)(21x9)(5x9)SWRRL(6x8)TYXYPJ(68x5)(4x10)QMJZ(19x15)APBTUGYPJQFQODZRNAC(5x13)YIVAO(14x14)QHWPZNQSRZJIEC(63x2)(32x10)(5x4)EVMQL(15x12)SAOYGPDXFSDOBTB(6x8)(1x5)C(7x13)MILUDKF(144x5)(3x8)PLQ(129x7)(27x3)(7x13)QLVZTAJ(9x4)JNLNRKPXA(4x13)EEXX(17x9)(11x9)SYQBWQASJPK(57x8)(29x8)(15x11)CFVXGJKXAAKNRRT(1x15)A(1x4)C(10x5)EFFLNXDEVJ(664x6)(357x6)(82x8)(7x12)LPCKKIX(55x10)(6x4)KXJNIR(2x4)IH(5x6)VIUMV(11x10)TCNXEQRMQJZ(4x7)DREZ(2x8)IV(119x7)(21x13)RHDEMDBNRPLOTSZRKZSHA(47x2)(22x2)ZADHZNUARPTFHKEXJKCWXY(7x6)OACRTYP(1x15)P(31x10)(5x4)VSWJT(7x1)IGAMFHI(4x3)GOCU(26x5)(19x13)(12x15)WGYBKVRPMWJT(15x7)IFUICWKGGCLHCOO(83x12)(62x8)(20x10)TJBGZCIWVKOROYITLBUA(7x11)UDSMGLK(6x3)FWPTWW(6x4)JECWEE(9x13)CUQMJOFWT(292x11)(68x14)(61x13)(28x10)ZRYXMSXXTLGDYHOVDRDVOCFJTCXJ(20x7)HZCFVXJATHXTNPHWFSIS(65x4)(11x6)BETMULBEIND(3x11)VLU(25x5)UYRFOHJXRRSJXEFEOPROCVNOA(3x4)GQJ(95x8)(81x11)(30x12)FXPGOAGXMVWAMAKJTQKJEUZNGCKDXU(10x5)YFDYGXCFTD(10x5)USWAFQFFSA(6x10)ZFVKMB(2x8)SF(16x8)MZPGUBATXFXXJOJS(17x4)AJTTIOULZONRGGMLK(448x2)(28x11)(22x2)(8x13)(3x1)TMQ(2x13)IP(5x6)AJJXN(290x1)(109x10)(5x12)CUMMS(7x7)UEWYDSN(59x12)(2x12)FP(26x3)LWFPYEPAANDDLIOJQBYCRRQYRT(1x2)O(7x10)RXDHAJH(14x6)(9x6)PQLSJTFAO(124x4)(56x12)(12x10)DOOJHOYDOTLM(10x7)VKUFQDGCPT(6x9)ONBPUY(5x5)CMPUW(5x13)WWWWM(16x9)TOPYYTZBFGFAXYBO(14x15)(8x10)FPVBQPNJ(1x15)O(18x1)UTQYAKMVOBJZDLTOVO(12x3)YHILDGGCGZXZ(20x7)(13x15)RVSYRCEYESCUC(73x10)(21x5)(15x4)EHQBVPUAJWTOZKA(22x12)FIWIHPWFDOJTMAXRCKCJZE(11x5)(5x15)PDHSQ(828x13)(1x8)P(161x8)(154x4)(11x3)DAFIIEMOBYZ(6x1)EGJWXU(107x7)(13x2)SRTDQRBOGITPI(6x2)VWSTKU(23x5)GJXMEBCGSIYQNMFLISIUFTB(1x2)D(36x8)GKPPJHVMOOTOCTUHRGVVQUKNHRCZNINYLJGB(6x11)EFSGDL(327x12)(6x2)QAAXCM(5x9)YVLGN(86x1)(10x1)SVFCLDTQEO(2x4)OA(17x15)OAEGSJHUTEFJXDOTD(7x7)HGXVBHJ(20x15)(2x6)XQ(8x5)KDXCQOFM(90x11)(14x15)(9x9)DTJSQPKYW(25x7)(12x11)SYLBSZEMQSQA(1x3)S(11x2)(5x13)KWHSE(4x7)MFSC(7x6)(1x12)F(110x2)(10x1)UIIOJNJJJI(88x8)(10x10)PQCUFWXHMC(15x12)OVVASAWDIIOZYIT(17x3)NLLLZIVNOIVEHGXDP(19x11)CDJEUHEPCUEYVLGYLTJ(311x11)(165x1)(16x7)MUMPDQFLGFEGIYLU(9x11)(3x11)FNP(1x14)U(60x4)(4x7)KDWX(4x1)LKMS(27x11)MIELWFKZJUSUYBARAGTJAZIBEDH(3x1)LDI(48x15)(10x15)DUUYAIZHKY(5x8)KEMNC(14x10)HZTAHRSCICOTIR(4x13)AUNU(45x2)FRDBNRZYFZLCAIEVZWSAIMLGBCDSBHXFPWRPYJRQHNWUZ(28x8)TCHELUEWWRHMIGBKEUCWBTIEVNCB(37x10)(30x11)(6x9)PLWKRH(2x3)PL(7x2)MAFSJHV(6697x8)(172x15)(164x10)(1x9)N(151x2)(7x2)MOYJQSA(24x4)BSZRAIBTDPFAAHQWOWDJJRCW(34x10)(2x15)QB(1x1)T(4x3)ALVX(6x7)SQFSKZ(2x11)JX(54x2)(47x14)(6x12)HOALAK(28x10)DGCVKLTWNKGAGRGSWPVEUGRDAGWA(2577x12)(88x14)(82x9)(48x2)(41x11)(4x5)KAVK(15x4)LCMPETDQZUWBRCL(6x9)CFZJGS(7x15)PGVNKAY(9x12)(4x4)NHID(827x3)(259x9)(153x12)(27x11)(21x4)PQNSUYEFBRAAVCJFJPPGZ(13x4)(7x10)NNSUBSG(70x11)LOGUFNQNLSWWQXBPQIWNJIEDRFUCRCUAVANHFGDEMQZRGSITBSBLZXVWJGXPPDZEXZQCEU(7x10)DTIEEXA(4x13)DDNZ(44x13)(37x14)(8x14)NIJOMVGP(17x1)MDXVVVWIZSXMSGJMC(4x4)ARFY(31x11)(10x14)RVZUREXEUI(1x7)M(3x5)LXC(170x5)(114x3)(83x3)(19x10)UUCHMGESOOTJCTEJVRM(3x5)ZCP(2x10)IU(25x6)TNLNLUTXNPNDWMXGVVGIPVWJL(4x12)JAAA(13x1)UFQFFPMZGZNNN(1x1)V(27x5)EDPBYCEAMMWAIPWUZODVDAWPWIJ(10x1)(4x10)VJHN(73x13)(66x12)(5x1)TAFQR(11x5)(6x8)ATBQTY(5x8)KZYJI(23x1)(17x3)VSDOKMWKSGRRIRXWF(297x5)(11x6)HTGQDOGJQSJ(49x13)(43x1)(8x5)ULVVUCJI(6x11)JAITVW(12x3)ISRQLAPACLXU(25x2)(19x7)(13x2)SRBHDIAPWUMER(51x9)(45x1)(8x9)ADOZRIJD(13x15)JXWDDHBYCJKMO(6x10)SKLMKL(129x8)(111x2)(5x10)ATJGD(22x6)OLATWNGTXFJMTWCJQAQDDA(19x1)WLYAFVAKQECTNXJRBVH(20x11)DDWDXGQEZBKJBDJBAKJB(14x5)TIZKGCXPPUBGSJ(5x14)SEHYY(1410x15)(148x5)(24x2)FHQUELWXQDUWLIBTXEPSQTJQ(111x3)(40x13)(6x7)ZAWWAD(2x15)GI(3x6)XJY(7x14)SCZWIKT(10x1)WMCTELCITD(15x12)(2x8)OD(3x3)IKM(12x2)(7x4)BEEDJSC(2x15)SZ(303x5)(89x2)(70x4)(3x7)ATQ(9x4)WSWYIUPAG(12x8)KDWAUNHURPWB(3x15)ESP(15x7)DANNZUDKDFXXSBO(7x12)VUNUHBI(1x8)M(180x9)(66x1)(20x12)MOUJOXCMCZUPVKVXPKUB(27x5)QHNMIHMVJVBBVCDGHPYOWRHTCLT(1x8)Q(22x13)ADGXYCQHWNAGCLWNPXBPIX(73x9)(1x11)J(27x14)ANTTYLYVSVWEAPXPGRRVWVINHFM(7x10)ZDBZWVE(3x12)ISL(5x4)YDXBZ(9x14)XBPBWAQTR(407x3)(186x1)(36x10)(1x2)W(23x13)DBNCARJKKIAWVQVKNOIPSJO(57x2)(6x9)VKZMPB(3x2)JIZ(22x2)AQWQZQOKXLPZSJTNBJKCXL(4x12)OAOJ(8x8)(2x10)PT(29x3)BKPFZBRCXVJUJJHVOIMJELFFHHBUR(26x5)WUACSRCIRADIQKCXKEESRJNWKU(10x9)RBSMRSUWMK(177x3)(1x10)Q(28x8)(5x5)PQQGD(6x13)LAGOEK(1x5)C(71x13)(16x12)IIAWONMLGHMCHWIH(19x11)KEYESARBBXHWWQWPQVC(1x11)A(9x12)LMADFIHXJ(6x5)MZVRQU(40x12)TOSAJVXJHKVWJKLTVBIUKKESOFCKFOPSXHYCMDXQ(8x15)XGHEISVJ(68x5)(62x3)(4x7)OOWZ(7x15)QNNVWUX(5x10)GSLOA(14x8)(1x8)B(3x3)HJL(3x11)EIK(450x6)(101x9)(30x8)(2x5)MM(17x8)GHTHOCTDDQAYBUVWP(59x8)(1x5)R(3x11)HYR(21x2)STLZXNENUFTGYWNQJHFUK(10x10)NGMEAWPFBI(28x3)LNDWFXKPRAOWKJHWZZIYLJLOOBKK(110x6)(14x2)SALGMMEIINEJOU(40x7)(4x13)AIMA(5x12)GSAFV(13x7)CSLJJRZIBBUMF(21x1)(15x9)THPSZDCPWASRUYR(2x5)EE(5x7)XDUPK(13x10)(7x13)SFWIYYQ(163x10)(26x15)(13x9)HQJQXZQCIHSAE(1x15)K(4x15)FMWB(9x12)SQVQTEWMD(41x3)(13x1)EEYHHJQCDSYRO(9x2)YCDDFHWTG(3x9)LGW(51x12)(7x14)OITBFQF(8x13)FZVMIWUM(9x8)XTZCNFOTE(4x15)KTHY(221x10)(213x14)(32x3)(26x3)GEUNPCYFYLTFFXOKWXFBDYLBMK(77x1)(41x14)(7x11)XBMCCZD(21x11)KFOJGBJCEHPTKBLUSTERX(10x4)IZWNLBDABA(8x3)IVDWYIMO(50x9)(6x5)(1x1)H(4x8)VDKE(2x5)QE(17x3)(11x7)KGYMJEMQVWS(9x4)EVWJYLBBQ(16x8)XZDDQZQPCOLVIYGD(3001x2)(724x14)(235x12)(227x11)(25x5)(1x10)N(3x4)QSO(5x3)XPKCV(24x8)(11x10)XXOIOGOKIOD(1x8)B(88x4)(1x12)I(10x6)CEIKKPKUJG(1x11)Y(6x8)QAYNKJ(41x7)BGKQCYZZGRQGCNXSGYHAXMWIJOPDKLMAQRKGFRBML(66x9)(14x12)YTKTEIISOWYZWB(3x13)UDK(12x2)PXDYSSCHAFSE(2x2)DA(6x1)UZSORT(309x1)(107x1)(81x11)(23x4)UHLCPASWMUWBQPYJSUHUFEO(5x1)NTMAV(26x7)JDNTOBRNEUELJIISZGKNRYSBRE(4x10)FVKZ(13x8)SBNXXTKLMDHII(138x4)(62x12)(55x12)OMRRSQWFPEAXAXHFHHQBWGCESBLWZBVYEQQKYRGILBNJJCAOXFHDIXU(19x13)(4x5)CVBF(5x9)EBLEV(15x1)(9x13)BATHCHMGP(16x1)BGSXRPQUKQJYDIPV(44x3)(8x1)(3x1)EWQ(7x12)JJIVUYJ(12x7)XJSYYYTSZBHD(7x14)EDHTGLH(144x13)(130x4)(12x7)(6x14)CYDLYL(43x2)(4x10)DOTG(4x8)ELJI(6x6)QGMRSQ(1x4)K(2x9)GS(40x2)(11x10)CDHAMRCSTVC(8x11)WMZDTRTD(2x14)XS(11x4)IXUNDJVBLSO(2x3)CH(7x7)(2x5)NF(1015x9)(204x1)(20x10)GPKSBZZRRZGMFICXNMIX(141x9)(24x9)NXNCFLIWVVVQNVKDRUTQYNJB(3x8)AXD(33x6)MDGPOLEPZEUNBDWGBSAFRPEMTKUXIJDRA(33x11)(2x15)PY(5x1)XYUAI(9x14)UPOUZTFRQ(17x10)YAMBZLTZMBSRFZOUK(5x10)NXKJE(11x15)GNJTBTSXLTN(299x9)(29x1)(22x10)(5x13)FSAYZ(5x14)MWJOX(178x9)(79x14)(21x12)WXTCOEECSKHDITBOAAVSF(6x15)INXWKB(8x11)NTSEQSMQ(19x1)UTQUQGUDXSFROLQWKVZ(76x6)(3x2)QOL(10x15)UIGYPYAWRR(7x7)JEELSVH(13x12)RUBSHAXAWQGYF(12x12)PGQUXPKEKXRN(4x15)BQEB(8x4)(3x1)AVE(59x15)(11x11)QGBFDCZTADF(22x8)(7x7)RJEZNHA(4x11)MMJN(8x7)(3x7)GNT(174x1)(166x12)(17x2)ZDOBQSATWXMNNJDCV(17x13)(10x14)CATNORVTYK(95x10)(9x5)LROSBZBVM(29x2)ZQBDHDVQJGZTGKDBOSHXOCVXYOSKC(22x11)FXLGIAQRSIJQCGUQPFJXFM(3x8)HSE(3x11)JVV(11x2)(6x7)YCATPH(206x5)(133x6)(31x8)(8x5)YTYSRRBZ(4x13)UYBY(3x6)SJW(32x4)ZCNRDWQGEMLBOCMJMCAJJVJPLIQXSTSG(52x3)(12x10)ENCLYDJSGEYW(13x15)EXRYDALLRZKCF(8x1)RIVKPAAB(8x14)GUSBQGHU(46x2)(1x5)P(34x8)(16x3)GDVLVDXNKOCDWQJI(6x15)YGGNZJ(98x6)(91x10)(11x5)RVKZVECGFPV(8x12)(3x7)URB(54x1)(11x12)JPMMFXPJPMQ(5x1)ZKRGP(19x13)ZJIYXFENCFNAFOEFUNL(1225x12)(534x15)(214x13)(64x15)(5x7)PZQBH(25x10)XSZONMJVANCJZOJPAAEJSRYGT(16x5)PQPCLAYGZUDSQKTZ(83x8)(40x6)ZKUMBQGMGPGEAKSJHFSIPNWEKXZEHBJUUSCVWYMY(10x5)CMXYJOWZZN(6x1)WPARZQ(4x14)FAYY(16x1)(1x11)E(3x12)MLF(25x11)(3x8)BRT(10x14)OGKXRSWWPD(4x1)VFBM(227x12)(150x2)(25x10)YFBSVADMLPNYAIXAPMBRZPTCO(8x14)PKGEMLYV(50x10)DKUPPNRQKKWAJIQCFKGQVRSXTUWPVNQZESPGLNQWMVMAOCORMP(9x6)HVKQYKZAH(26x10)RQQPTHCFQFHIBMEATIAVVKWDWG(57x9)(8x10)QVILTCPK(36x13)LUDTUSNBRJNJCTXOFFMWIMAMWBKXHMMENNSW(2x7)ZQ(62x5)(25x8)(5x15)GCZUZ(9x1)JPDRQMLTB(24x13)YTTGOHFCVHRRGLESEARVNFPQ(178x5)(42x2)(21x15)(8x5)RPZICSEL(3x4)YIL(8x13)(2x11)GF(84x11)(70x2)(7x5)MWWDPMK(7x11)TEYJOFJ(31x1)TWNBXEDRILLPRUGJDBIVBFYNVHGLUED(3x8)VDU(3x9)YYV(7x4)(1x12)L(21x1)(1x4)M(1x8)J(4x3)XJGN(491x9)(148x8)(36x3)(2x9)MG(13x11)EDWPZURXZWLML(4x1)VRBX(31x11)(14x8)KBLQBMRGRGKHCT(5x14)PRDLH(3x8)CQB(32x15)(10x15)RLWBNSAEHH(3x3)HPB(2x2)PA(15x2)TKPIZXDBJJMAZDR(133x8)(1x6)B(83x8)(13x10)WNSKNXUSTCDKE(4x8)NMAW(6x6)EJRNHD(4x14)MLJN(27x5)ZQBFSJWECOPVETZPGXQJPPDQZEL(22x1)(16x1)ZSEPLZISVDFRGRJB(4x13)YRXG(39x2)(33x7)(16x9)HMRXYWRBVITBVWTG(6x2)LCYRSW(123x13)(31x12)WVTWWQZUYGBJOSPKLUQTAGWXXURUDLI(34x10)(7x5)ZTTMEQS(2x8)YX(9x13)ROIYTCKSX(28x13)(3x9)WPV(13x14)PQHWCFNXKFFOH(3x15)EUZ(14x7)(8x15)UHHVOLEJ(914x15)(782x12)(448x5)(118x6)(26x12)(4x12)BLTT(10x2)REYZXYJJFQ(39x8)(8x6)XEWKRGZT(3x8)ECB(5x9)GOBWQ(3x2)KKM(34x7)(18x11)QSQRCJXLCKUYJBPSWG(4x9)XOSJ(34x5)CIABSNSBNQQKAARJOOETKSXJIPOFQOMAPK(24x13)(3x7)ADL(10x3)RVSLAIXAJJ(67x7)(52x9)(3x2)AJH(3x6)OGK(4x9)SQFL(1x1)T(14x14)BQZZXEWSTOKEUA(3x13)HBM(171x14)(25x9)YKLMFOEYQHSODISORNEKDIGVY(12x6)(6x13)OFJBKW(53x7)(21x11)GINJQDIXMAWRHIHJLXFIP(19x8)SVTFKYTLPWYEWWFIUPB(16x12)(2x1)PB(4x8)TMWZ(33x15)(5x3)QBMUH(10x5)UHNESLDFMY(2x4)WW(9x2)(4x7)QTKW(94x10)(47x10)UUVWDQXOXQUFEROVLOZRXIHEPHTWRPSGHLNSYGNIVHEDQGV(34x3)(21x4)(7x9)IMCZEIB(4x2)TNMA(2x9)DM(192x6)(2x7)ZF(2x3)VU(6x13)DODXJG(158x15)(1x4)K(42x12)(2x8)RM(4x6)YMIM(5x2)BXKIG(10x1)ZWQMIAOBEY(78x8)(7x1)XHAETJV(28x1)QPKULGVENLMJWWEHOROJEESLKYTA(3x5)XMZ(18x1)FZBLVDOKGEZKOBICEO(13x9)MWICPPUEWVWKH(7x10)KVNGSWM(116x10)(26x3)(20x8)(8x12)SSVBYWJX(1x9)H(77x14)(12x3)OWHWKICESREK(1x11)D(46x3)(11x5)(5x15)ORJRA(1x13)K(16x3)XRJXBYVIUITRPPYRRNHU
diff --git a/data/advent10-test.txt b/data/advent10-test.txt
new file mode 100644 (file)
index 0000000..e9ad2b4
--- /dev/null
@@ -0,0 +1,6 @@
+value 5 goes to bot 2
+bot 2 gives low to bot 1 and high to bot 0
+value 3 goes to bot 1
+bot 1 gives low to output 1 and high to bot 0
+bot 0 gives low to output 2 and high to output 0
+value 2 goes to bot 2
diff --git a/data/advent10.txt b/data/advent10.txt
new file mode 100644 (file)
index 0000000..bcede34
--- /dev/null
@@ -0,0 +1,231 @@
+bot 123 gives low to bot 191 and high to bot 162
+bot 191 gives low to output 9 and high to bot 192
+bot 182 gives low to bot 175 and high to bot 196
+bot 113 gives low to bot 172 and high to bot 94
+bot 78 gives low to bot 37 and high to bot 25
+bot 187 gives low to bot 125 and high to bot 45
+bot 71 gives low to bot 108 and high to bot 61
+bot 154 gives low to bot 2 and high to bot 64
+bot 142 gives low to bot 110 and high to bot 163
+bot 109 gives low to output 0 and high to bot 43
+bot 198 gives low to bot 101 and high to bot 52
+bot 138 gives low to bot 9 and high to bot 47
+value 5 goes to bot 189
+bot 179 gives low to bot 176 and high to bot 14
+bot 115 gives low to bot 82 and high to bot 181
+bot 101 gives low to bot 90 and high to bot 5
+bot 9 gives low to output 5 and high to bot 149
+bot 181 gives low to bot 0 and high to bot 27
+bot 119 gives low to bot 207 and high to bot 65
+bot 202 gives low to bot 69 and high to bot 154
+bot 100 gives low to bot 206 and high to bot 169
+bot 72 gives low to bot 205 and high to bot 12
+bot 146 gives low to bot 8 and high to bot 106
+bot 58 gives low to bot 180 and high to bot 123
+value 37 goes to bot 1
+value 61 goes to bot 144
+bot 205 gives low to bot 169 and high to bot 3
+bot 91 gives low to bot 76 and high to bot 84
+bot 93 gives low to bot 122 and high to bot 100
+bot 76 gives low to bot 147 and high to bot 89
+bot 102 gives low to bot 11 and high to bot 23
+bot 43 gives low to output 11 and high to output 12
+bot 128 gives low to bot 15 and high to bot 85
+bot 137 gives low to bot 112 and high to bot 2
+bot 88 gives low to bot 103 and high to bot 55
+bot 162 gives low to bot 192 and high to bot 141
+bot 183 gives low to bot 49 and high to bot 81
+bot 127 gives low to bot 113 and high to bot 207
+value 11 goes to bot 165
+bot 28 gives low to bot 62 and high to bot 42
+bot 95 gives low to bot 42 and high to bot 32
+bot 50 gives low to bot 160 and high to bot 194
+bot 68 gives low to bot 133 and high to bot 142
+bot 20 gives low to bot 208 and high to bot 203
+bot 178 gives low to bot 182 and high to bot 54
+bot 120 gives low to bot 102 and high to bot 99
+bot 131 gives low to bot 67 and high to bot 83
+bot 21 gives low to bot 111 and high to bot 69
+bot 27 gives low to bot 46 and high to bot 193
+bot 98 gives low to bot 63 and high to bot 22
+value 13 goes to bot 7
+bot 121 gives low to bot 155 and high to bot 146
+bot 41 gives low to bot 153 and high to bot 53
+bot 75 gives low to bot 100 and high to bot 205
+value 43 goes to bot 4
+bot 206 gives low to bot 151 and high to bot 77
+bot 0 gives low to bot 95 and high to bot 46
+bot 208 gives low to output 14 and high to bot 126
+bot 40 gives low to bot 187 and high to bot 184
+bot 184 gives low to bot 45 and high to bot 124
+bot 60 gives low to bot 188 and high to bot 202
+value 67 goes to bot 198
+bot 145 gives low to bot 22 and high to bot 108
+bot 197 gives low to bot 195 and high to bot 190
+bot 203 gives low to bot 126 and high to bot 51
+bot 87 gives low to bot 51 and high to bot 179
+bot 64 gives low to bot 128 and high to bot 85
+bot 1 gives low to bot 198 and high to bot 173
+bot 29 gives low to bot 71 and high to bot 168
+bot 47 gives low to bot 149 and high to bot 113
+bot 165 gives low to bot 80 and high to bot 135
+bot 112 gives low to bot 162 and high to bot 174
+bot 149 gives low to output 1 and high to bot 172
+value 41 goes to bot 80
+bot 5 gives low to bot 136 and high to bot 62
+bot 143 gives low to bot 97 and high to bot 41
+bot 86 gives low to bot 145 and high to bot 71
+value 59 goes to bot 147
+bot 57 gives low to bot 30 and high to bot 188
+bot 36 gives low to bot 150 and high to bot 30
+bot 135 gives low to bot 44 and high to bot 117
+bot 134 gives low to bot 16 and high to bot 35
+bot 167 gives low to bot 28 and high to bot 95
+bot 22 gives low to bot 127 and high to bot 119
+bot 26 gives low to bot 81 and high to bot 16
+bot 33 gives low to bot 6 and high to bot 78
+bot 171 gives low to bot 186 and high to bot 17
+bot 16 gives low to bot 96 and high to bot 33
+bot 118 gives low to bot 117 and high to bot 56
+bot 199 gives low to bot 98 and high to bot 145
+bot 188 gives low to bot 21 and high to bot 202
+value 29 goes to bot 164
+bot 169 gives low to bot 77 and high to bot 140
+bot 96 gives low to bot 181 and high to bot 6
+value 71 goes to bot 201
+bot 194 gives low to bot 87 and high to bot 150
+bot 160 gives low to bot 203 and high to bot 87
+bot 15 gives low to bot 158 and high to bot 105
+bot 42 gives low to bot 166 and high to bot 39
+bot 133 gives low to bot 54 and high to bot 110
+value 47 goes to bot 13
+bot 31 gives low to output 8 and high to bot 9
+bot 159 gives low to bot 74 and high to bot 155
+bot 157 gives low to bot 12 and high to bot 187
+bot 176 gives low to bot 139 and high to bot 58
+bot 35 gives low to bot 33 and high to bot 78
+bot 90 gives low to bot 148 and high to bot 136
+bot 122 gives low to bot 70 and high to bot 206
+bot 114 gives low to bot 72 and high to bot 157
+bot 55 gives low to bot 40 and high to bot 184
+bot 37 gives low to bot 193 and high to bot 25
+value 31 goes to bot 13
+bot 107 gives low to bot 99 and high to bot 93
+bot 14 gives low to bot 58 and high to bot 38
+bot 77 gives low to bot 86 and high to bot 29
+bot 116 gives low to bot 79 and high to bot 170
+bot 23 gives low to bot 132 and high to bot 70
+bot 148 gives low to bot 144 and high to bot 120
+bot 195 gives low to bot 170 and high to bot 185
+bot 185 gives low to bot 138 and high to bot 63
+bot 62 gives low to bot 107 and high to bot 166
+bot 174 gives low to bot 141 and high to bot 128
+bot 7 gives low to bot 91 and high to bot 11
+bot 3 gives low to bot 140 and high to bot 34
+bot 12 gives low to bot 3 and high to bot 125
+value 7 goes to bot 148
+bot 70 gives low to bot 161 and high to bot 151
+bot 89 gives low to bot 116 and high to bot 195
+bot 108 gives low to bot 119 and high to bot 204
+bot 201 gives low to bot 1 and high to bot 104
+bot 18 gives low to output 15 and high to bot 208
+bot 66 gives low to bot 177 and high to bot 130
+bot 189 gives low to bot 165 and high to bot 177
+bot 48 gives low to output 13 and high to bot 18
+bot 186 gives low to bot 189 and high to bot 66
+bot 82 gives low to bot 167 and high to bot 0
+bot 92 gives low to bot 201 and high to bot 49
+bot 144 gives low to bot 7 and high to bot 102
+bot 97 gives low to bot 146 and high to bot 153
+bot 104 gives low to bot 173 and high to bot 82
+bot 74 gives low to bot 83 and high to bot 50
+bot 49 gives low to bot 104 and high to bot 115
+bot 172 gives low to output 20 and high to bot 48
+bot 163 gives low to bot 41 and high to bot 53
+bot 117 gives low to bot 26 and high to bot 134
+bot 168 gives low to bot 61 and high to bot 182
+bot 65 gives low to bot 131 and high to bot 74
+bot 180 gives low to output 6 and high to bot 191
+bot 126 gives low to output 19 and high to bot 19
+value 19 goes to bot 186
+bot 166 gives low to bot 93 and high to bot 75
+bot 193 gives low to bot 59 and high to bot 88
+bot 81 gives low to bot 115 and high to bot 96
+bot 207 gives low to bot 94 and high to bot 131
+bot 130 gives low to bot 118 and high to bot 56
+bot 153 gives low to bot 106 and high to bot 152
+value 17 goes to bot 92
+bot 110 gives low to bot 143 and high to bot 163
+bot 192 gives low to output 7 and high to bot 129
+bot 156 gives low to bot 10 and high to bot 68
+bot 83 gives low to bot 20 and high to bot 160
+bot 2 gives low to bot 174 and high to bot 64
+value 23 goes to bot 91
+bot 10 gives low to bot 178 and high to bot 133
+bot 103 gives low to bot 157 and high to bot 40
+bot 61 gives low to bot 204 and high to bot 175
+bot 63 gives low to bot 47 and high to bot 127
+bot 105 gives low to bot 200 and high to bot 24
+bot 79 gives low to output 10 and high to bot 31
+bot 73 gives low to bot 168 and high to bot 178
+bot 19 gives low to output 2 and high to bot 139
+bot 125 gives low to bot 34 and high to bot 156
+bot 56 gives low to bot 134 and high to bot 35
+bot 44 gives low to bot 183 and high to bot 26
+bot 4 gives low to output 3 and high to bot 79
+bot 155 gives low to bot 50 and high to bot 8
+value 73 goes to bot 101
+bot 38 gives low to bot 123 and high to bot 112
+bot 151 gives low to bot 199 and high to bot 86
+bot 17 gives low to bot 66 and high to bot 130
+bot 13 gives low to bot 171 and high to bot 17
+bot 190 gives low to bot 185 and high to bot 98
+bot 161 gives low to bot 190 and high to bot 199
+bot 139 gives low to output 16 and high to bot 180
+bot 99 gives low to bot 23 and high to bot 122
+bot 53 gives low to bot 152 and high to bot 60
+bot 94 gives low to bot 48 and high to bot 67
+bot 132 gives low to bot 197 and high to bot 161
+bot 150 gives low to bot 179 and high to bot 209
+bot 173 gives low to bot 52 and high to bot 167
+bot 45 gives low to bot 156 and high to bot 124
+bot 30 gives low to bot 209 and high to bot 21
+bot 67 gives low to bot 18 and high to bot 20
+bot 84 gives low to bot 89 and high to bot 197
+bot 8 gives low to bot 194 and high to bot 36
+bot 59 gives low to bot 114 and high to bot 103
+bot 209 gives low to bot 14 and high to bot 111
+value 53 goes to bot 76
+bot 69 gives low to bot 137 and high to bot 154
+bot 46 gives low to bot 32 and high to bot 59
+bot 111 gives low to bot 38 and high to bot 137
+bot 196 gives low to bot 121 and high to bot 97
+bot 52 gives low to bot 5 and high to bot 28
+bot 11 gives low to bot 84 and high to bot 132
+bot 204 gives low to bot 65 and high to bot 159
+bot 164 gives low to bot 92 and high to bot 183
+bot 24 gives low to bot 109 and high to bot 43
+value 2 goes to bot 171
+bot 51 gives low to bot 19 and high to bot 176
+bot 136 gives low to bot 120 and high to bot 107
+bot 147 gives low to bot 4 and high to bot 116
+bot 25 gives low to bot 88 and high to bot 55
+bot 129 gives low to output 18 and high to bot 158
+bot 152 gives low to bot 57 and high to bot 60
+bot 39 gives low to bot 75 and high to bot 72
+bot 124 gives low to bot 68 and high to bot 142
+bot 141 gives low to bot 129 and high to bot 15
+bot 85 gives low to bot 105 and high to bot 24
+value 3 goes to bot 90
+bot 80 gives low to bot 164 and high to bot 44
+bot 54 gives low to bot 196 and high to bot 143
+bot 34 gives low to bot 73 and high to bot 10
+bot 175 gives low to bot 159 and high to bot 121
+bot 32 gives low to bot 39 and high to bot 114
+bot 140 gives low to bot 29 and high to bot 73
+bot 200 gives low to output 17 and high to bot 109
+bot 106 gives low to bot 36 and high to bot 57
+bot 177 gives low to bot 135 and high to bot 118
+bot 170 gives low to bot 31 and high to bot 138
+bot 158 gives low to output 4 and high to bot 200
+bot 6 gives low to bot 27 and high to bot 37
diff --git a/data/advent12.txt b/data/advent12.txt
new file mode 100644 (file)
index 0000000..538e9ea
--- /dev/null
@@ -0,0 +1,23 @@
+cpy 1 a
+cpy 1 b
+cpy 26 d
+jnz c 2
+jnz 1 5
+cpy 7 c
+inc d
+dec c
+jnz c -2
+cpy a c
+inc a
+dec b
+jnz b -2
+cpy c b
+dec d
+jnz d -6
+cpy 18 c
+cpy 11 d
+inc a
+dec d
+jnz d -2
+dec c
+jnz c -5
diff --git a/data/advent15.test.txt b/data/advent15.test.txt
new file mode 100644 (file)
index 0000000..3683605
--- /dev/null
@@ -0,0 +1,3 @@
+Disc #1 has 5 positions; at time=0, it is at position 4.
+Disc #2 has 2 positions; at time=0, it is at position 1.
+
diff --git a/data/advent15.txt b/data/advent15.txt
new file mode 100644 (file)
index 0000000..d2463d1
--- /dev/null
@@ -0,0 +1,6 @@
+Disc #1 has 5 positions; at time=0, it is at position 2.
+Disc #2 has 13 positions; at time=0, it is at position 7.
+Disc #3 has 17 positions; at time=0, it is at position 10.
+Disc #4 has 3 positions; at time=0, it is at position 2.
+Disc #5 has 19 positions; at time=0, it is at position 9.
+Disc #6 has 7 positions; at time=0, it is at position 0.
diff --git a/data/advent20.txt b/data/advent20.txt
new file mode 100644 (file)
index 0000000..222a0d9
--- /dev/null
@@ -0,0 +1,1029 @@
+1397985562-1399927095
+3833336583-3842601761
+155087348-169525214
+980790001-1002844256
+1977065361-1995466542
+36411396-50881439
+3640866817-3644930814
+2920060305-2932561292
+2865550534-2890593328
+3904139550-3908601694
+732092457-735186747
+1787486182-1806545011
+1491600386-1521258835
+2566773511-2568507598
+2201927929-2217336001
+948934267-952537088
+2146567862-2152339711
+3301828099-3306223909
+476027067-495966189
+2724939184-2726302873
+2270442513-2292973307
+1889038911-1895488302
+1578483230-1586330750
+2640456298-2651236024
+4254290660-4256486512
+1399927096-1421446962
+3253590561-3255525299
+4165315034-4173427102
+2875463797-2888803426
+3656533491-3659451752
+1995466544-2025204494
+3947779886-3987268039
+1521258837-1538635254
+735486056-744123494
+230221149-237996554
+3652971511-3653104884
+3019667516-3024190047
+969642901-977292032
+3645248112-3645595401
+3107902888-3148345903
+3202431537-3216963208
+1220746925-1223070151
+3267241325-3270573499
+903635659-931632639
+2847235008-2856948110
+4224654922-4236958325
+856464812-859836714
+1804748836-1825290046
+4082899236-4091369419
+953634177-954158487
+185823994-190243500
+1964052811-1976412955
+2420916052-2424566745
+953985134-954947310
+2584348542-2614406629
+2191157950-2198152569
+792721019-802271235
+3791161572-3800845341
+1864843815-1865425121
+1974124152-1989195256
+7825290-22939478
+440787397-441318113
+43830518-44800277
+3060173435-3065634268
+3165692093-3169381847
+1833191664-1858547431
+1931833201-1935239219
+57759373-67515020
+4113876528-4114024438
+1942285042-1951328312
+1604942683-1619936021
+853121890-865841853
+1837742103-1838104083
+3653104885-3680835942
+461163769-461467242
+3154277391-3159331043
+1689521647-1696389379
+4132416435-4154260806
+3575213588-3600527150
+962221692-989154668
+1935239220-1964052809
+853763614-856527667
+1529882226-1553729207
+2908870325-2931754108
+2317225465-2326207645
+550660010-557063544
+2362374340-2370047564
+3154439917-3169895876
+2971931902-2973888167
+3915276202-3919826635
+3443104535-3459421692
+2452320784-2463651682
+2645465344-2652262587
+623576471-624671363
+251678316-253256260
+3892899041-3898838343
+464002012-476960875
+3778510328-3794259788
+1032494594-1042075604
+1726869059-1729493515
+3050865580-3058403387
+4096451268-4105743850
+1794978532-1818366498
+1687963887-1693429657
+1919840326-1931792580
+3890085195-3896657673
+687727514-697989805
+2130251157-2132529361
+3709755147-3710261877
+2103854130-2136933959
+1240822471-1247567713
+2490928812-2517604025
+2792885084-2793563605
+4033319760-4037319553
+643767762-679821627
+2244191155-2263679816
+783204448-826857019
+874202754-876456673
+944792902-949779600
+1014490072-1020320091
+3709667893-3710060580
+3034067373-3060173434
+2380617387-2398492444
+3913418161-3925664598
+1327421559-1355573458
+2029296660-2060654925
+1015438314-1024776747
+758467105-766508249
+3196737715-3203535886
+4113219652-4113918216
+1900161068-1903498607
+737196603-742913680
+2762651281-2782581391
+1241724970-1273412553
+2234377553-2234408980
+3485475801-3485850742
+2823889184-2825719103
+546429220-552909166
+3889312069-3891497364
+1402469948-1411853934
+1612881279-1613899725
+609769932-611526589
+2821381184-2837715581
+2793443367-2793757783
+3865830130-3882113243
+2302840856-2330280758
+1587820493-1589487382
+1925168590-1930014298
+139238032-141721873
+3159767763-3165446614
+3124692923-3128639222
+2270740594-2281991663
+1338789977-1355677780
+1748641567-1751344173
+1416549076-1421417040
+4096185893-4097103352
+2627343873-2650750532
+3948622110-3962424399
+3734105837-3770337993
+557813236-573792261
+551603476-555886358
+1030836305-1032494592
+1839182718-1840151300
+833662859-842106273
+1375985004-1393778055
+1219332117-1221436570
+191846359-198587644
+984829875-987740125
+3262588159-3269982376
+4113255424-4114203177
+3754035901-3768277382
+182356017-189508231
+4235072872-4237128944
+2423845665-2424035634
+2247134633-2249391253
+1857070653-1864762228
+2960971255-2986516950
+3609807449-3629876533
+4232009521-4238664410
+2517604027-2532315540
+2284458125-2290950480
+1864762230-1865525184
+1534410012-1552842249
+1413197933-1418525745
+943004746-952141611
+3692615771-3699711756
+1641152229-1667111341
+3747007580-3765218619
+2379349853-2380702573
+2147254282-2171495074
+1839659452-1840812997
+3895746954-3895831312
+1969771475-1979046124
+3083853152-3107315352
+3503489045-3537546786
+2926162506-2931745365
+1533535067-1553811000
+4201206086-4201731554
+3151335418-3163702483
+3589540929-3593463200
+1469107231-1474901685
+1696389381-1748641566
+3910219915-3918863153
+3431523383-3432952214
+4219640842-4234037045
+2150930801-2173615229
+3364393582-3403187084
+3294593092-3301828098
+690072645-725395887
+1123029535-1135646014
+122125578-124303606
+4157086822-4157139009
+3561413702-3569934827
+3814389694-3815485217
+1931792582-1935186677
+3601713750-3623094300
+2322435284-2327697391
+1362099577-1366674586
+628898939-635522883
+3117359644-3135324932
+1119748429-1139457622
+3998554882-4014887284
+2837930003-2838092963
+2123885505-2126641084
+559576606-579617582
+2712491763-2723761235
+1391544337-1397769783
+3416595318-3422405875
+3403187085-3409221687
+1096346351-1099114997
+2703273295-2705328183
+4113785067-4113908859
+206706372-209083880
+3270160481-3271551430
+3285776930-3292794583
+461234099-461937747
+750957483-775003729
+4184090903-4204400455
+362276042-362676210
+4249953310-4250510076
+3477313433-3479866795
+3421127715-3428203812
+900263617-943004744
+835969757-836263940
+1368935057-1381717988
+149206242-166300349
+2154227228-2154605899
+1906507809-1919840325
+305745049-306370999
+1726861064-1728699678
+1357107426-1362288056
+799761595-801167452
+229374054-231369444
+1529834231-1535566821
+754999390-757160209
+1889190091-1897618002
+2138256423-2146567860
+2295710373-2336599718
+1019914990-1023404843
+969695821-980184547
+1443906340-1473362681
+833198360-836801840
+1598512205-1604942681
+3199387842-3210382637
+3895688557-3895758051
+1377900216-1382117658
+3504189983-3527083803
+3577792742-3598561740
+613575187-632091293
+2551456957-2551799726
+4058092124-4103653807
+3381308208-3381342063
+13984873-15227949
+1727002523-1727443872
+2357289728-2361812594
+3876054666-3879516291
+3278228783-3281894754
+1640252019-1649137061
+2372620720-2374166948
+4109383543-4110464683
+2069304258-2091857479
+4107063052-4115320079
+700724903-704038468
+2443015838-2445045788
+2487239190-2506741363
+2840932452-2854276703
+3023346911-3024737732
+855982891-864879970
+3794259789-3803801069
+500728802-502979928
+2043915271-2045977041
+2883286342-2889401600
+3645471325-3645615199
+2570503460-2572567939
+602978860-611682641
+3014237470-3019165777
+82763197-99917251
+3459591973-3480841023
+3726344670-3753436804
+778825357-781459133
+3501129290-3535003794
+2110603192-2124722020
+783458439-789801399
+3244733157-3257526606
+3107315354-3107902887
+3485245437-3487101327
+2981323037-2986657197
+4250870060-4262722661
+402547398-411983817
+1723037247-1732297154
+2168632715-2175630061
+35807058-48835050
+3967606126-3981776003
+1175337592-1177759663
+531093126-538642617
+3639437354-3641516465
+2313078075-2334991622
+2166324817-2172350995
+4271478996-4279496401
+4224492579-4228356386
+213570433-219586693
+3577738508-3578878626
+2004747361-2023251091
+638907979-651338734
+2042269899-2052960282
+3459421693-3470010193
+1255554697-1256876442
+547623253-554247422
+1091999863-1096115712
+3603876264-3620115458
+3743564125-3764787998
+1727097235-1727512693
+3360184134-3361837705
+2693328393-2699639043
+944625756-949285354
+2867948986-2885571238
+3815862045-3817192748
+85521215-90999860
+3492959364-3496450746
+2370047566-2373514273
+978064227-982934994
+3002922234-3034067371
+3702198906-3708772192
+1762248212-1777087215
+3200048313-3217284316
+310731268-314864040
+4256139187-4257030493
+4225267250-4242760473
+4236421277-4249953308
+456593320-464031864
+4173427103-4219640840
+3415471996-3417373524
+517786225-518353134
+2348225752-2349209975
+988767498-1002507583
+251787031-253294331
+2049843175-2053651832
+3272267359-3280700773
+1880334878-1897812119
+2180116083-2181662625
+1325501561-1332569991
+1977956589-1980243809
+1419475215-1429076341
+1571066989-1593324419
+1908591293-1926977363
+892862026-900263616
+2375708935-2420847226
+4252569311-4259706067
+611682642-636576980
+4069864506-4088316591
+3429899073-3443104533
+2881173909-2904242568
+838248538-839457347
+1040048945-1048427339
+2790325698-2817756908
+259065357-260284546
+4251177319-4254787503
+1727035024-1727220036
+1750189264-1751440819
+1182854783-1199103982
+1565110550-1598512204
+1870272544-1906507807
+2294404836-2313311754
+605934295-611508831
+3164119802-3167924307
+1833545461-1834287253
+2077509652-2090604632
+2880238444-2890262424
+1142031337-1148518669
+4005987455-4006591959
+1570054798-1576009746
+2071505543-2096650688
+3485106835-3485722365
+577813461-602978858
+2776866362-2786901141
+652895584-671838947
+3299449839-3300020065
+1623460193-1638054811
+3340666115-3353087971
+2160043893-2166478186
+1096507969-1101378526
+800088830-803013264
+13565145-17743483
+85024888-98806837
+3823224649-3827480049
+3931062541-3938277752
+1012892921-1030836304
+1565255853-1583189516
+1647708193-1660811906
+657010776-666847464
+1839278378-1840330117
+1008973854-1015912839
+1910283066-1913763928
+837557263-838411350
+1282815406-1288995029
+3980611-5584893
+3148345905-3165692092
+2742421263-2776592447
+229688447-231610502
+2743245719-2776866361
+3878098271-3883221309
+801316931-804135040
+1471664269-1473302685
+1667111343-1669791317
+1610947175-1617629889
+2003085048-2013051153
+3307457133-3360184133
+1195340209-1203343093
+2025204495-2028453665
+32923438-47156091
+3168696227-3170592073
+3235742576-3255614827
+2266729227-2280080556
+775349160-775813901
+1473362682-1482720843
+3572312385-3575213587
+528189743-538093910
+2448613175-2454994921
+2843283603-2855830818
+2890593329-2907911642
+153191907-164713586
+4043150608-4096451267
+605875663-610305444
+3021650-3111593
+2420847228-2420916051
+4105743852-4113419273
+2460397045-2462412256
+567585936-602788586
+1727082530-1727671255
+4033434900-4037286987
+4144511592-4162791978
+3075535768-3080851776
+1639907267-1641352662
+920282814-940069234
+3826936712-3829839713
+1916925688-1925357559
+1845213589-1860279111
+1854550234-1855331759
+3065495280-3066648567
+170353613-171186253
+3212824412-3220097963
+2853141261-2853700351
+3556640-3614471
+1976412956-1988224560
+3296627900-3297163117
+725395889-749479392
+2233996777-2234267091
+1757843247-1759325879
+4279435928-4280514617
+801130429-802441496
+3751681078-3760769957
+2347982977-2366662085
+4235682663-4235983270
+3496282296-3499776408
+3821333501-3824224274
+2723761236-2742421261
+2827790660-2835001032
+1935288812-1941728417
+1726855325-1728050569
+1726544710-1727430469
+3940016790-3941936080
+546101318-552097193
+4184013882-4199809831
+2425846522-2426458497
+3361306788-3362865310
+453108094-456181406
+860613212-892862024
+362299769-362572315
+17407637-23147236
+3504547466-3505717615
+985733821-987978530
+2735458050-2740276231
+270737999-279345075
+1787997707-1795677405
+3680835944-3709667892
+3818408771-3825605323
+16201770-24236234
+1158649495-1176112357
+952141612-961131855
+2690399120-2697050905
+2837757591-2838004534
+3487101328-3501129288
+3888980907-3889308041
+3139002312-3144216973
+1812389934-1832528171
+4062104130-4081249321
+4109985868-4116611691
+261499681-305729049
+414982559-415941657
+2837715582-2837939443
+1612314605-1613532579
+1847293843-1854555869
+2048771211-2052518908
+701565294-713634431
+208666820-210559343
+2827420738-2834300681
+4141218867-4154796647
+1970845509-1978651442
+1552842250-1565110548
+412226938-422230809
+596789633-599083332
+571536075-580257978
+4162791979-4165315032
+2578608882-2600367385
+2953753655-2967704893
+1620638998-1623460191
+3652181866-3653081107
+1226734954-1263413684
+208300600-209821102
+3019452277-3019912348
+1614701447-1620638997
+3941936081-3996282520
+3237157247-3249234449
+2348186235-2349807460
+3562813382-3565898388
+3710261879-3738818624
+2629772693-2635508362
+2443958025-2447376004
+399974274-423562472
+1778846705-1790086524
+2234646109-2266729225
+1668227842-1689521646
+3549361830-3564965209
+1286877599-1288249900
+2117171419-2125943104
+3620689032-3652181864
+3299261942-3299688775
+1490791491-1514099208
+3817192749-3833336581
+3410915712-3429899072
+541342032-546429219
+918411171-924314929
+2182745019-2185607312
+2212606518-2214621946
+1779983196-1804748835
+1936162035-1950945741
+3704618658-3705051939
+1764680564-1778846703
+2698697285-2709059938
+1326793529-1329535111
+3702328552-3704015912
+2008848662-2015608293
+1231732813-1247626190
+1750754899-1752420348
+1093229127-1099058712
+4234037046-4236997947
+3493552026-3497919102
+3235053958-3252106974
+4018470466-4036608102
+701727470-719544055
+574115703-596179511
+3202587506-3210265222
+698102469-706160479
+1832528173-1833853020
+441673267-452453492
+2911169435-2921998083
+2229856423-2234646108
+2196901664-2204841238
+1675352425-1691381949
+4250455374-4250513503
+3237515102-3260318492
+171161905-175877664
+2581539215-2596898898
+4004311193-4012385537
+1324083574-1324546090
+4096883078-4097164771
+780817620-784569858
+208242283-211110211
+1330525084-1336070077
+4008229513-4009226682
+834427868-838848257
+348999024-350410733
+467200453-500728800
+4121379695-4138903168
+2949401565-2976409803
+3917170902-3926057375
+3071781061-3074945017
+3299433864-3300019479
+3894069601-3909653487
+3741129648-3770933677
+1337537272-1347157874
+216818049-245842326
+1626689836-1641152228
+1112292760-1131928222
+1651219196-1654305795
+506374440-513152599
+430626871-453108093
+3297525469-3306042698
+3256944-3556639
+2937659849-2949401563
+3915476081-3917349752
+170273133-170386354
+3896834322-3906255111
+2911101673-2912870470
+2383625542-2388030504
+2202988069-2215864531
+3931566185-3938787313
+3893325063-3903409791
+1677593295-1694860962
+1726429432-1726959531
+550814749-553019695
+328183437-332828273
+2463651684-2490928811
+2532315541-2561777512
+902393943-906380753
+3255012511-3262588157
+464031865-471880579
+987894291-990856994
+2994108099-3016224261
+1464668452-1468573067
+3817599599-3819192240
+4281205900-4284988083
+1610485824-1614835930
+2922504894-2943149643
+1366674588-1391544336
+2716673569-2724196148
+2136933960-2141630673
+952929934-954132488
+102430362-103410808
+1097408788-1102041819
+1411884657-1413275434
+1569519099-1595018443
+3314630119-3351858696
+1159063633-1161383669
+1306210365-1310168207
+65606761-70210379
+969367195-1005028750
+305729050-305810398
+2964351925-2968998528
+2586831864-2598752947
+2717800067-2732550815
+1357733985-1357970980
+3142078167-3146050939
+836110255-836394578
+2855830819-2865550532
+1854118661-1854889002
+3275779087-3291457029
+481061771-497879373
+2572567941-2573814074
+3653825904-3656453968
+1752420350-1764680563
+3381301699-3381332932
+1499205864-1508841960
+2568948534-2571512127
+124303608-171161904
+834540652-842353886
+3296634137-3297348568
+756487393-757398433
+2920277931-2929967348
+775003730-775425950
+4006843235-4009222380
+4173461462-4180792939
+2573814075-2627343871
+3379943605-3385769428
+3613135813-3622915872
+456181408-463675190
+1679128363-1689145745
+1771462652-1775663407
+3896043704-3896601721
+3668521412-3670169542
+3189676166-3211906595
+4178058206-4197742264
+649282356-651528503
+4118830219-4151607552
+3403081369-3405163204
+1295416035-1327421558
+3535003795-3540392660
+2521028658-2521094946
+3378794770-3384471028
+3876141848-3885724936
+3415436447-3434089766
+3236961463-3242080308
+1289735149-1320942247
+20583890-31053879
+2039793197-2062178184
+3361173897-3362649522
+476445996-491796622
+2305715287-2337252117
+1407865145-1413213862
+100343325-122125577
+4259473250-4260027959
+1539624652-1558856769
+3388893007-3406562225
+3815438953-3819219050
+88644450-100343323
+2838092965-2853295826
+2298582785-2308283977
+1911552487-1924425897
+3486137486-3495337804
+3087487707-3105123828
+2449249575-2459990446
+1114195378-1147840884
+3084130783-3090098247
+280604127-291812349
+251655795-252002640
+2065738411-2068050329
+3540392662-3561413701
+4108709270-4110339849
+185357325-191846357
+2988550972-3002922233
+2008583503-2009174592
+367514957-375053863
+3738337-5109287
+2068050330-2103854128
+2185761689-2201113375
+502979929-541342030
+437711847-441825502
+763342493-770307022
+3891568242-3896055908
+2771403009-2783873057
+857296477-865365400
+2372996602-2415318753
+209779549-212434153
+3904992626-3910219913
+2976409804-2983591595
+3614472-4019606
+3429649651-3432451145
+2312224052-2330392688
+3889124925-3889312068
+3368044346-3369236254
+2485542419-2506962662
+3703774963-3704692844
+249324444-259065356
+3038718563-3063082755
+2348008128-2348750596
+4027659985-4040018381
+4020167637-4028011463
+631597603-638907977
+156806924-163856510
+465625162-475575707
+1653345924-1655794173
+644029368-673749955
+1342645425-1348056082
+754961620-757509941
+2185607313-2229856421
+2430693014-2452320783
+2423618253-2423991135
+2578007008-2593849390
+251455290-252167220
+2141431440-2145256393
+461551382-490688234
+1280627802-1282187341
+2447416346-2448485092
+801034819-803950109
+3803801071-3817168598
+2791159575-2797552524
+2444538618-2447695611
+3656900217-3658497760
+362424586-362913246
+2315692184-2318703938
+2658294991-2705851874
+758225777-762221309
+3220097965-3253590560
+3918863154-3937848140
+3842601762-3867989792
+1362989964-1365638761
+2669543622-2698580716
+204441701-216667513
+3337068522-3351226708
+2910214082-2911637865
+2887286425-2894235722
+2556506098-2564781736
+3660974732-3670236178
+3738818625-3765658510
+3926612436-3931754899
+849660339-860613211
+3878152839-3882588354
+1198564716-1203493708
+90563967-91509385
+4113419274-4118830217
+2421569872-2430693012
+1380512818-1382191639
+2171495075-2182745017
+2346496816-2347982976
+2773187116-2776527627
+3264380514-3275779086
+2795335811-2807483836
+1255625643-1259049524
+3039851327-3062062714
+3477125643-3485106833
+368161721-385647773
+557063546-567450813
+2662245837-2698867380
+409471723-415008368
+2692399192-2709671522
+3289361982-3294593090
+2444382077-2446243156
+995864334-1008973852
+1485359185-1511483438
+3170296689-3173219013
+651528504-684359142
+2799805080-2819283989
+2745894337-2761860632
+4021069786-4034189388
+2423235028-2423776100
+1161581883-1172788321
+575303235-584246627
+1323324671-1324380624
+423562473-430626869
+3173219015-3207487851
+256367467-256655264
+2729359684-2736808477
+2979779055-2988550970
+1482720845-1491600385
+1057830454-1067468142
+107593407-117739880
+251911362-252150667
+3569934829-3575123572
+2241251261-2263701349
+2726382705-2727247227
+4037319554-4043150606
+3718405500-3739070428
+2364203325-2366532950
+836023031-836878401
+961131857-995864333
+3961933297-3977917454
+3180447251-3212824411
+3124189059-3126106003
+793312386-802938899
+3873230388-3877536365
+2841402828-2852690950
+2931754109-2946377103
+4097161122-4098833023
+2953494240-2963922968
+1016080923-1023809512
+2305965588-2325470268
+1726429959-1728139098
+1725984972-1746517984
+2280080557-2294404834
+1453817212-1468119920
+3343366097-3354792825
+2726120736-2727168410
+1726047629-1726491275
+2425599810-2428632507
+1127809348-1136655248
+784569859-830872706
+3362865312-3399674855
+467374870-490345878
+2028166733-2029296658
+3793434985-3799550158
+4113324238-4114378130
+2768224805-2776292356
+3076910664-3083853151
+3795367294-3799559727
+983334314-985924731
+2566325429-2567644886
+2079828370-2095628301
+1355677782-1357107425
+3139807-3256943
+2297016509-2339606996
+3937987517-3940016788
+3111594-3180044
+3408799234-3410915710
+2736163676-2737085107
+2927299659-2930923781
+2828368238-2835482134
+2924361649-2933817173
+3278336262-3282205864
+209200196-211114889
+1089312986-1101840140
+2426098602-2426594407
+3761524602-3771101074
+4038400571-4039718550
+4278817904-4281979539
+1971790010-1982080495
+2482451447-2482859303
+696142504-708558552
+832751897-838668629
+522885199-537712867
+3854296653-3860724814
+4250257176-4250870059
+1098058891-1101871591
+2041494246-2044474847
+3379302636-3380200608
+2823631138-2825091086
+3114946479-3141035176
+2564781738-2570503459
+3066648569-3072839529
+2963998950-2966815574
+3996282522-4010140708
+2609189498-2612898027
+1398040334-1399196426
+2705851875-2712491761
+3303896197-3307457131
+3072710194-3078315569
+2650750533-2658294989
+125494120-152726161
+1799712687-1813651344
+4113647358-4114354821
+914689746-931400632
+2334991623-2346496814
+952020939-952231689
+3279484720-3279924084
+826369329-829381680
+306371001-356731744
+2545936899-2562194811
+755902693-769100113
+2423872436-2428440493
+1040252532-1043084518
+2531373947-2564360722
+3758158314-3765326552
+250882458-253102421
+2445299323-2451474922
+2845734926-2859990778
+2571586320-2571725933
+4010140709-4018470464
+1397769785-1398762710
+3812038748-3819957572
+2446738279-2447892957
+3600527152-3609409007
+260284548-271403358
+108405773-115248353
+1910315960-1918268562
+1323436354-1327278720
+2234068374-2234384404
+982370550-984890793
+362487749-363332785
+3703404287-3704710600
+511536791-531472470
+1204860806-1211356557
+1280824569-1283027536
+1864956505-1865664159
+1264539978-1280627800
+838668630-849660337
+1039302291-1048802154
+3820162182-3829891468
+252725400-258978812
+3811611218-3815532558
+5584894-20583889
+2571534738-2571657850
+383938370-391077230
+732225856-735643042
+2968582589-2972324720
+2379822184-2380941432
+775813903-782941501
+836283753-836553990
+2786901143-2790325697
+2907911644-2910586722
+3879031171-3883342655
+2446835992-2450584620
+3604970524-3620689031
+3656986634-3664253237
+108870276-116802953
+50881441-82763196
+830872708-834595234
+948787824-952327285
+3554278607-3558372901
+1411483095-1443906338
+1305613100-1306576996
+1171167570-1175215348
+145365808-166164576
+3344972328-3354937927
+178346121-180017093
+3487950867-3498067707
+3455826248-3468331688
+1357654405-1361499079
+2373804146-2375708934
+1682091088-1685006321
+2532666674-2554100432
+3872534964-3888980905
+684359144-690072644
+31053881-36411395
+749479393-750957481
+1233001829-1257233242
+1109953682-1114195377
+175877666-185357324
+1283027537-1289735147
+3374715947-3381800912
+1283434504-1286474690
+1402640030-1423128613
+1426046568-1440437597
+3021217411-3028438706
+3449839444-3455646128
+2192814747-2207353667
+1039244541-1044508076
+363332786-399974272
+620349463-624462815
+3118427268-3142548507
+1177759665-1219332116
+1223070153-1264539977
+2469319931-2491726485
+1101840141-1109953680
+1048427340-1089312984
+2577948853-2584544199
+43965520-47689181
+1833568506-1857070652
+356731745-362276040
+4262722663-4294967295
+2632338905-2641519671
+0-3021649
+1148518671-1158649494
+3562116150-3562242974
+567450814-585792807
+198587645-249324442
+3756871898-3778510326
+2815453754-2821381182
+3562113904-3562138636
+2567358294-2571273144
+2061605698-2065382934
+1865301101-1870272543
+2565458232-2569021972
+267026988-275785393
+2570888765-2571620263
+179248341-180073497
+267066134-277088479
+2060654926-2062597974
+2065382936-2066893485
+3298704119-3299564801
+2194534845-2218883408
diff --git a/data/advent21.txt b/data/advent21.txt
new file mode 100644 (file)
index 0000000..b445817
--- /dev/null
@@ -0,0 +1,100 @@
+rotate based on position of letter a
+swap letter g with letter d
+move position 1 to position 5
+reverse positions 6 through 7
+move position 5 to position 4
+rotate based on position of letter b
+reverse positions 6 through 7
+swap letter h with letter f
+swap letter e with letter c
+reverse positions 0 through 7
+swap position 6 with position 4
+rotate based on position of letter e
+move position 2 to position 7
+swap position 6 with position 4
+rotate based on position of letter e
+reverse positions 2 through 3
+rotate right 2 steps
+swap position 7 with position 1
+move position 1 to position 2
+move position 4 to position 7
+move position 5 to position 0
+swap letter e with letter f
+move position 4 to position 7
+reverse positions 1 through 7
+rotate based on position of letter g
+move position 7 to position 4
+rotate right 6 steps
+rotate based on position of letter g
+reverse positions 0 through 5
+reverse positions 0 through 7
+swap letter c with letter f
+swap letter h with letter f
+rotate right 7 steps
+rotate based on position of letter g
+rotate based on position of letter c
+swap position 1 with position 4
+move position 7 to position 3
+reverse positions 2 through 6
+move position 7 to position 0
+move position 7 to position 1
+move position 6 to position 7
+rotate right 5 steps
+reverse positions 0 through 6
+move position 1 to position 4
+rotate left 3 steps
+swap letter d with letter c
+move position 4 to position 5
+rotate based on position of letter f
+rotate right 1 step
+move position 7 to position 6
+swap position 6 with position 0
+move position 6 to position 2
+rotate right 1 step
+swap position 1 with position 6
+move position 2 to position 6
+swap position 2 with position 1
+reverse positions 1 through 7
+move position 4 to position 1
+move position 7 to position 0
+swap position 6 with position 7
+rotate left 1 step
+reverse positions 0 through 4
+rotate based on position of letter c
+rotate based on position of letter b
+move position 2 to position 1
+rotate right 0 steps
+swap letter b with letter d
+swap letter f with letter c
+swap letter d with letter a
+swap position 7 with position 6
+rotate right 0 steps
+swap position 0 with position 3
+swap position 2 with position 5
+swap letter h with letter f
+reverse positions 2 through 3
+rotate based on position of letter c
+rotate left 2 steps
+move position 0 to position 5
+swap position 2 with position 3
+rotate right 1 step
+rotate left 2 steps
+move position 0 to position 4
+rotate based on position of letter c
+rotate based on position of letter g
+swap position 3 with position 0
+rotate right 3 steps
+reverse positions 0 through 2
+move position 1 to position 2
+swap letter e with letter c
+rotate right 7 steps
+move position 0 to position 7
+rotate left 2 steps
+reverse positions 0 through 4
+swap letter e with letter b
+reverse positions 2 through 7
+rotate right 5 steps
+swap position 2 with position 4
+swap letter d with letter g
+reverse positions 3 through 4
+reverse positions 4 through 5
diff --git a/data/advent22.txt b/data/advent22.txt
new file mode 100644 (file)
index 0000000..8821df9
--- /dev/null
@@ -0,0 +1,1066 @@
+root@ebhq-gridcenter# df -h
+Filesystem              Size  Used  Avail  Use%
+/dev/grid/node-x0-y0     88T   66T    22T   75%
+/dev/grid/node-x0-y1     85T   65T    20T   76%
+/dev/grid/node-x0-y2     88T   67T    21T   76%
+/dev/grid/node-x0-y3     92T   68T    24T   73%
+/dev/grid/node-x0-y4     87T   64T    23T   73%
+/dev/grid/node-x0-y5     90T   64T    26T   71%
+/dev/grid/node-x0-y6     85T   64T    21T   75%
+/dev/grid/node-x0-y7     93T   66T    27T   70%
+/dev/grid/node-x0-y8     90T   69T    21T   76%
+/dev/grid/node-x0-y9     88T   69T    19T   78%
+/dev/grid/node-x0-y10    90T   69T    21T   76%
+/dev/grid/node-x0-y11    90T   65T    25T   72%
+/dev/grid/node-x0-y12    86T   73T    13T   84%
+/dev/grid/node-x0-y13    92T   67T    25T   72%
+/dev/grid/node-x0-y14    90T   70T    20T   77%
+/dev/grid/node-x0-y15    90T   66T    24T   73%
+/dev/grid/node-x0-y16    86T   66T    20T   76%
+/dev/grid/node-x0-y17    87T   67T    20T   77%
+/dev/grid/node-x0-y18    85T   64T    21T   75%
+/dev/grid/node-x0-y19    91T   67T    24T   73%
+/dev/grid/node-x0-y20    93T   73T    20T   78%
+/dev/grid/node-x0-y21    91T   72T    19T   79%
+/dev/grid/node-x0-y22    86T   64T    22T   74%
+/dev/grid/node-x0-y23    85T   73T    12T   85%
+/dev/grid/node-x0-y24    93T   65T    28T   69%
+/dev/grid/node-x0-y25    89T   67T    22T   75%
+/dev/grid/node-x0-y26    94T   64T    30T   68%
+/dev/grid/node-x0-y27    85T   69T    16T   81%
+/dev/grid/node-x1-y0     85T   68T    17T   80%
+/dev/grid/node-x1-y1     93T   69T    24T   74%
+/dev/grid/node-x1-y2     85T   68T    17T   80%
+/dev/grid/node-x1-y3     89T   69T    20T   77%
+/dev/grid/node-x1-y4     92T   70T    22T   76%
+/dev/grid/node-x1-y5     92T   65T    27T   70%
+/dev/grid/node-x1-y6     87T   69T    18T   79%
+/dev/grid/node-x1-y7     93T   65T    28T   69%
+/dev/grid/node-x1-y8     85T   69T    16T   81%
+/dev/grid/node-x1-y9     88T   64T    24T   72%
+/dev/grid/node-x1-y10    88T   65T    23T   73%
+/dev/grid/node-x1-y11    85T   66T    19T   77%
+/dev/grid/node-x1-y12    85T   69T    16T   81%
+/dev/grid/node-x1-y13    90T   73T    17T   81%
+/dev/grid/node-x1-y14    93T   68T    25T   73%
+/dev/grid/node-x1-y15    94T   68T    26T   72%
+/dev/grid/node-x1-y16    85T   67T    18T   78%
+/dev/grid/node-x1-y17    87T   71T    16T   81%
+/dev/grid/node-x1-y18    90T   73T    17T   81%
+/dev/grid/node-x1-y19    86T   66T    20T   76%
+/dev/grid/node-x1-y20    89T   71T    18T   79%
+/dev/grid/node-x1-y21    94T   69T    25T   73%
+/dev/grid/node-x1-y22    90T   70T    20T   77%
+/dev/grid/node-x1-y23    92T   70T    22T   76%
+/dev/grid/node-x1-y24    91T   70T    21T   76%
+/dev/grid/node-x1-y25    94T   70T    24T   74%
+/dev/grid/node-x1-y26    90T   64T    26T   71%
+/dev/grid/node-x1-y27    92T   73T    19T   79%
+/dev/grid/node-x2-y0     88T   72T    16T   81%
+/dev/grid/node-x2-y1     88T   70T    18T   79%
+/dev/grid/node-x2-y2     89T   68T    21T   76%
+/dev/grid/node-x2-y3     89T   72T    17T   80%
+/dev/grid/node-x2-y4     93T   66T    27T   70%
+/dev/grid/node-x2-y5     92T   65T    27T   70%
+/dev/grid/node-x2-y6     91T   66T    25T   72%
+/dev/grid/node-x2-y7     86T   70T    16T   81%
+/dev/grid/node-x2-y8     94T   66T    28T   70%
+/dev/grid/node-x2-y9     88T   71T    17T   80%
+/dev/grid/node-x2-y10    90T   64T    26T   71%
+/dev/grid/node-x2-y11    88T   68T    20T   77%
+/dev/grid/node-x2-y12    86T   70T    16T   81%
+/dev/grid/node-x2-y13    90T   68T    22T   75%
+/dev/grid/node-x2-y14    85T   70T    15T   82%
+/dev/grid/node-x2-y15    93T   70T    23T   75%
+/dev/grid/node-x2-y16    87T   73T    14T   83%
+/dev/grid/node-x2-y17    92T   66T    26T   71%
+/dev/grid/node-x2-y18    88T   70T    18T   79%
+/dev/grid/node-x2-y19    89T   69T    20T   77%
+/dev/grid/node-x2-y20    92T   64T    28T   69%
+/dev/grid/node-x2-y21    85T   67T    18T   78%
+/dev/grid/node-x2-y22    89T   70T    19T   78%
+/dev/grid/node-x2-y23    94T   70T    24T   74%
+/dev/grid/node-x2-y24    87T   72T    15T   82%
+/dev/grid/node-x2-y25    91T   73T    18T   80%
+/dev/grid/node-x2-y26    91T   65T    26T   71%
+/dev/grid/node-x2-y27    90T   70T    20T   77%
+/dev/grid/node-x3-y0     92T   72T    20T   78%
+/dev/grid/node-x3-y1     91T   71T    20T   78%
+/dev/grid/node-x3-y2     93T   71T    22T   76%
+/dev/grid/node-x3-y3     89T   72T    17T   80%
+/dev/grid/node-x3-y4     88T   68T    20T   77%
+/dev/grid/node-x3-y5     92T   73T    19T   79%
+/dev/grid/node-x3-y6     86T   64T    22T   74%
+/dev/grid/node-x3-y7     86T   67T    19T   77%
+/dev/grid/node-x3-y8     85T   73T    12T   85%
+/dev/grid/node-x3-y9     86T   72T    14T   83%
+/dev/grid/node-x3-y10    88T   67T    21T   76%
+/dev/grid/node-x3-y11    94T   67T    27T   71%
+/dev/grid/node-x3-y12    91T   66T    25T   72%
+/dev/grid/node-x3-y13    85T   67T    18T   78%
+/dev/grid/node-x3-y14    94T   68T    26T   72%
+/dev/grid/node-x3-y15    94T   73T    21T   77%
+/dev/grid/node-x3-y16    92T   71T    21T   77%
+/dev/grid/node-x3-y17    92T   73T    19T   79%
+/dev/grid/node-x3-y18    86T   66T    20T   76%
+/dev/grid/node-x3-y19    88T   69T    19T   78%
+/dev/grid/node-x3-y20    90T   73T    17T   81%
+/dev/grid/node-x3-y21    87T   71T    16T   81%
+/dev/grid/node-x3-y22    92T   72T    20T   78%
+/dev/grid/node-x3-y23    87T   71T    16T   81%
+/dev/grid/node-x3-y24    93T   66T    27T   70%
+/dev/grid/node-x3-y25    94T   65T    29T   69%
+/dev/grid/node-x3-y26    91T   67T    24T   73%
+/dev/grid/node-x3-y27    88T   69T    19T   78%
+/dev/grid/node-x4-y0     93T   68T    25T   73%
+/dev/grid/node-x4-y1     93T   67T    26T   72%
+/dev/grid/node-x4-y2     85T   67T    18T   78%
+/dev/grid/node-x4-y3     89T   65T    24T   73%
+/dev/grid/node-x4-y4     85T   73T    12T   85%
+/dev/grid/node-x4-y5     86T   72T    14T   83%
+/dev/grid/node-x4-y6     86T   66T    20T   76%
+/dev/grid/node-x4-y7     89T   66T    23T   74%
+/dev/grid/node-x4-y8     94T   73T    21T   77%
+/dev/grid/node-x4-y9     89T   72T    17T   80%
+/dev/grid/node-x4-y10    86T   66T    20T   76%
+/dev/grid/node-x4-y11    92T   70T    22T   76%
+/dev/grid/node-x4-y12    93T   69T    24T   74%
+/dev/grid/node-x4-y13    85T   68T    17T   80%
+/dev/grid/node-x4-y14    93T   73T    20T   78%
+/dev/grid/node-x4-y15    87T   67T    20T   77%
+/dev/grid/node-x4-y16    86T   66T    20T   76%
+/dev/grid/node-x4-y17    90T   70T    20T   77%
+/dev/grid/node-x4-y18    92T   69T    23T   75%
+/dev/grid/node-x4-y19    93T   71T    22T   76%
+/dev/grid/node-x4-y20    94T   66T    28T   70%
+/dev/grid/node-x4-y21    88T   73T    15T   82%
+/dev/grid/node-x4-y22    93T   71T    22T   76%
+/dev/grid/node-x4-y23    87T   68T    19T   78%
+/dev/grid/node-x4-y24    89T   70T    19T   78%
+/dev/grid/node-x4-y25    87T   69T    18T   79%
+/dev/grid/node-x4-y26    87T   69T    18T   79%
+/dev/grid/node-x4-y27    89T   71T    18T   79%
+/dev/grid/node-x5-y0     88T   66T    22T   75%
+/dev/grid/node-x5-y1     91T   70T    21T   76%
+/dev/grid/node-x5-y2     91T   71T    20T   78%
+/dev/grid/node-x5-y3     90T   68T    22T   75%
+/dev/grid/node-x5-y4     85T   72T    13T   84%
+/dev/grid/node-x5-y5     89T   64T    25T   71%
+/dev/grid/node-x5-y6     90T   71T    19T   78%
+/dev/grid/node-x5-y7     91T   64T    27T   70%
+/dev/grid/node-x5-y8     87T   71T    16T   81%
+/dev/grid/node-x5-y9     89T   72T    17T   80%
+/dev/grid/node-x5-y10    86T   68T    18T   79%
+/dev/grid/node-x5-y11    91T   66T    25T   72%
+/dev/grid/node-x5-y12    89T   69T    20T   77%
+/dev/grid/node-x5-y13    85T   72T    13T   84%
+/dev/grid/node-x5-y14    92T   69T    23T   75%
+/dev/grid/node-x5-y15    88T   68T    20T   77%
+/dev/grid/node-x5-y16    92T   72T    20T   78%
+/dev/grid/node-x5-y17    93T   70T    23T   75%
+/dev/grid/node-x5-y18    87T   65T    22T   74%
+/dev/grid/node-x5-y19    86T   64T    22T   74%
+/dev/grid/node-x5-y20    89T   68T    21T   76%
+/dev/grid/node-x5-y21    89T   68T    21T   76%
+/dev/grid/node-x5-y22    89T   71T    18T   79%
+/dev/grid/node-x5-y23    91T   67T    24T   73%
+/dev/grid/node-x5-y24    88T   64T    24T   72%
+/dev/grid/node-x5-y25    92T   73T    19T   79%
+/dev/grid/node-x5-y26    94T   64T    30T   68%
+/dev/grid/node-x5-y27    88T   73T    15T   82%
+/dev/grid/node-x6-y0     88T   64T    24T   72%
+/dev/grid/node-x6-y1     87T   71T    16T   81%
+/dev/grid/node-x6-y2     93T   65T    28T   69%
+/dev/grid/node-x6-y3     90T   71T    19T   78%
+/dev/grid/node-x6-y4     85T   68T    17T   80%
+/dev/grid/node-x6-y5     93T   70T    23T   75%
+/dev/grid/node-x6-y6     91T   70T    21T   76%
+/dev/grid/node-x6-y7     89T   65T    24T   73%
+/dev/grid/node-x6-y8     91T   65T    26T   71%
+/dev/grid/node-x6-y9     92T   65T    27T   70%
+/dev/grid/node-x6-y10    94T   73T    21T   77%
+/dev/grid/node-x6-y11    86T   71T    15T   82%
+/dev/grid/node-x6-y12    87T   68T    19T   78%
+/dev/grid/node-x6-y13    93T   68T    25T   73%
+/dev/grid/node-x6-y14    87T   68T    19T   78%
+/dev/grid/node-x6-y15    85T   71T    14T   83%
+/dev/grid/node-x6-y16    85T   70T    15T   82%
+/dev/grid/node-x6-y17    85T   66T    19T   77%
+/dev/grid/node-x6-y18    90T   66T    24T   73%
+/dev/grid/node-x6-y19    85T   73T    12T   85%
+/dev/grid/node-x6-y20    92T   73T    19T   79%
+/dev/grid/node-x6-y21    90T   68T    22T   75%
+/dev/grid/node-x6-y22    85T   68T    17T   80%
+/dev/grid/node-x6-y23    85T   67T    18T   78%
+/dev/grid/node-x6-y24    87T   65T    22T   74%
+/dev/grid/node-x6-y25    85T   68T    17T   80%
+/dev/grid/node-x6-y26    88T   70T    18T   79%
+/dev/grid/node-x6-y27    86T   65T    21T   75%
+/dev/grid/node-x7-y0     89T   66T    23T   74%
+/dev/grid/node-x7-y1     92T   67T    25T   72%
+/dev/grid/node-x7-y2     94T   69T    25T   73%
+/dev/grid/node-x7-y3     86T   72T    14T   83%
+/dev/grid/node-x7-y4     90T   68T    22T   75%
+/dev/grid/node-x7-y5     87T   72T    15T   82%
+/dev/grid/node-x7-y6     92T   71T    21T   77%
+/dev/grid/node-x7-y7     90T   71T    19T   78%
+/dev/grid/node-x7-y8     92T   70T    22T   76%
+/dev/grid/node-x7-y9     85T   73T    12T   85%
+/dev/grid/node-x7-y10    92T   68T    24T   73%
+/dev/grid/node-x7-y11    94T   69T    25T   73%
+/dev/grid/node-x7-y12    88T   71T    17T   80%
+/dev/grid/node-x7-y13    87T   73T    14T   83%
+/dev/grid/node-x7-y14    92T   70T    22T   76%
+/dev/grid/node-x7-y15    87T   68T    19T   78%
+/dev/grid/node-x7-y16    85T   65T    20T   76%
+/dev/grid/node-x7-y17    93T   64T    29T   68%
+/dev/grid/node-x7-y18    91T   67T    24T   73%
+/dev/grid/node-x7-y19    87T   66T    21T   75%
+/dev/grid/node-x7-y20    94T   72T    22T   76%
+/dev/grid/node-x7-y21    85T   72T    13T   84%
+/dev/grid/node-x7-y22    88T   73T    15T   82%
+/dev/grid/node-x7-y23    91T   66T    25T   72%
+/dev/grid/node-x7-y24    94T   70T    24T   74%
+/dev/grid/node-x7-y25    85T   65T    20T   76%
+/dev/grid/node-x7-y26    88T   64T    24T   72%
+/dev/grid/node-x7-y27    93T   69T    24T   74%
+/dev/grid/node-x8-y0     92T   65T    27T   70%
+/dev/grid/node-x8-y1     89T   69T    20T   77%
+/dev/grid/node-x8-y2     93T   64T    29T   68%
+/dev/grid/node-x8-y3     85T   65T    20T   76%
+/dev/grid/node-x8-y4     91T   69T    22T   75%
+/dev/grid/node-x8-y5     85T   70T    15T   82%
+/dev/grid/node-x8-y6     86T   64T    22T   74%
+/dev/grid/node-x8-y7     94T   67T    27T   71%
+/dev/grid/node-x8-y8     88T   68T    20T   77%
+/dev/grid/node-x8-y9     94T   69T    25T   73%
+/dev/grid/node-x8-y10    91T   73T    18T   80%
+/dev/grid/node-x8-y11    89T   73T    16T   82%
+/dev/grid/node-x8-y12    87T   68T    19T   78%
+/dev/grid/node-x8-y13    89T   70T    19T   78%
+/dev/grid/node-x8-y14    86T   67T    19T   77%
+/dev/grid/node-x8-y15    90T   68T    22T   75%
+/dev/grid/node-x8-y16    92T   72T    20T   78%
+/dev/grid/node-x8-y17    89T   68T    21T   76%
+/dev/grid/node-x8-y18    89T   67T    22T   75%
+/dev/grid/node-x8-y19    85T   68T    17T   80%
+/dev/grid/node-x8-y20    88T   64T    24T   72%
+/dev/grid/node-x8-y21    90T   72T    18T   80%
+/dev/grid/node-x8-y22    93T   73T    20T   78%
+/dev/grid/node-x8-y23    92T   68T    24T   73%
+/dev/grid/node-x8-y24    92T   66T    26T   71%
+/dev/grid/node-x8-y25    93T   70T    23T   75%
+/dev/grid/node-x8-y26    92T   64T    28T   69%
+/dev/grid/node-x8-y27    85T   64T    21T   75%
+/dev/grid/node-x9-y0     94T   71T    23T   75%
+/dev/grid/node-x9-y1     91T   71T    20T   78%
+/dev/grid/node-x9-y2     93T   66T    27T   70%
+/dev/grid/node-x9-y3     86T   73T    13T   84%
+/dev/grid/node-x9-y4     90T   69T    21T   76%
+/dev/grid/node-x9-y5     85T   70T    15T   82%
+/dev/grid/node-x9-y6     88T   67T    21T   76%
+/dev/grid/node-x9-y7     90T   64T    26T   71%
+/dev/grid/node-x9-y8     93T   66T    27T   70%
+/dev/grid/node-x9-y9     90T   73T    17T   81%
+/dev/grid/node-x9-y10    90T   73T    17T   81%
+/dev/grid/node-x9-y11    89T   69T    20T   77%
+/dev/grid/node-x9-y12    89T   69T    20T   77%
+/dev/grid/node-x9-y13    93T   68T    25T   73%
+/dev/grid/node-x9-y14    94T   64T    30T   68%
+/dev/grid/node-x9-y15    94T   66T    28T   70%
+/dev/grid/node-x9-y16    89T   71T    18T   79%
+/dev/grid/node-x9-y17    89T   69T    20T   77%
+/dev/grid/node-x9-y18    86T   65T    21T   75%
+/dev/grid/node-x9-y19    88T   71T    17T   80%
+/dev/grid/node-x9-y20    90T   72T    18T   80%
+/dev/grid/node-x9-y21    91T   71T    20T   78%
+/dev/grid/node-x9-y22    88T   66T    22T   75%
+/dev/grid/node-x9-y23    93T   69T    24T   74%
+/dev/grid/node-x9-y24   502T  496T     6T   98%
+/dev/grid/node-x9-y25    89T   73T    16T   82%
+/dev/grid/node-x9-y26    92T   71T    21T   77%
+/dev/grid/node-x9-y27    94T   70T    24T   74%
+/dev/grid/node-x10-y0    85T   73T    12T   85%
+/dev/grid/node-x10-y1    92T   64T    28T   69%
+/dev/grid/node-x10-y2    92T   64T    28T   69%
+/dev/grid/node-x10-y3    92T   71T    21T   77%
+/dev/grid/node-x10-y4    89T   71T    18T   79%
+/dev/grid/node-x10-y5    87T   72T    15T   82%
+/dev/grid/node-x10-y6    93T   68T    25T   73%
+/dev/grid/node-x10-y7    93T   65T    28T   69%
+/dev/grid/node-x10-y8    87T   67T    20T   77%
+/dev/grid/node-x10-y9    90T   64T    26T   71%
+/dev/grid/node-x10-y10   91T   70T    21T   76%
+/dev/grid/node-x10-y11   86T   66T    20T   76%
+/dev/grid/node-x10-y12   90T   71T    19T   78%
+/dev/grid/node-x10-y13   86T   65T    21T   75%
+/dev/grid/node-x10-y14   93T   69T    24T   74%
+/dev/grid/node-x10-y15   87T   64T    23T   73%
+/dev/grid/node-x10-y16   85T   68T    17T   80%
+/dev/grid/node-x10-y17   89T   65T    24T   73%
+/dev/grid/node-x10-y18   94T   73T    21T   77%
+/dev/grid/node-x10-y19   94T   73T    21T   77%
+/dev/grid/node-x10-y20   88T   68T    20T   77%
+/dev/grid/node-x10-y21   93T   73T    20T   78%
+/dev/grid/node-x10-y22   87T   67T    20T   77%
+/dev/grid/node-x10-y23   90T   67T    23T   74%
+/dev/grid/node-x10-y24  510T  491T    19T   96%
+/dev/grid/node-x10-y25   90T   71T    19T   78%
+/dev/grid/node-x10-y26   94T   67T    27T   71%
+/dev/grid/node-x10-y27   93T   67T    26T   72%
+/dev/grid/node-x11-y0    91T   64T    27T   70%
+/dev/grid/node-x11-y1    91T   67T    24T   73%
+/dev/grid/node-x11-y2    86T   70T    16T   81%
+/dev/grid/node-x11-y3    87T   65T    22T   74%
+/dev/grid/node-x11-y4    86T   66T    20T   76%
+/dev/grid/node-x11-y5    85T   71T    14T   83%
+/dev/grid/node-x11-y6    91T   65T    26T   71%
+/dev/grid/node-x11-y7    86T   65T    21T   75%
+/dev/grid/node-x11-y8    91T   71T    20T   78%
+/dev/grid/node-x11-y9    94T   71T    23T   75%
+/dev/grid/node-x11-y10   89T   65T    24T   73%
+/dev/grid/node-x11-y11   94T   71T    23T   75%
+/dev/grid/node-x11-y12   88T   64T    24T   72%
+/dev/grid/node-x11-y13   85T   67T    18T   78%
+/dev/grid/node-x11-y14   87T   71T    16T   81%
+/dev/grid/node-x11-y15   90T   71T    19T   78%
+/dev/grid/node-x11-y16   87T   73T    14T   83%
+/dev/grid/node-x11-y17   89T   68T    21T   76%
+/dev/grid/node-x11-y18   94T   64T    30T   68%
+/dev/grid/node-x11-y19   92T   68T    24T   73%
+/dev/grid/node-x11-y20   86T   67T    19T   77%
+/dev/grid/node-x11-y21   91T   73T    18T   80%
+/dev/grid/node-x11-y22   91T   69T    22T   75%
+/dev/grid/node-x11-y23   88T   72T    16T   81%
+/dev/grid/node-x11-y24  509T  493T    16T   96%
+/dev/grid/node-x11-y25   93T   68T    25T   73%
+/dev/grid/node-x11-y26   86T   72T    14T   83%
+/dev/grid/node-x11-y27   86T   65T    21T   75%
+/dev/grid/node-x12-y0    93T   65T    28T   69%
+/dev/grid/node-x12-y1    93T   65T    28T   69%
+/dev/grid/node-x12-y2    86T   68T    18T   79%
+/dev/grid/node-x12-y3    92T   65T    27T   70%
+/dev/grid/node-x12-y4    87T   65T    22T   74%
+/dev/grid/node-x12-y5    93T   68T    25T   73%
+/dev/grid/node-x12-y6    90T   67T    23T   74%
+/dev/grid/node-x12-y7    93T   69T    24T   74%
+/dev/grid/node-x12-y8    88T   72T    16T   81%
+/dev/grid/node-x12-y9    90T   72T    18T   80%
+/dev/grid/node-x12-y10   89T   64T    25T   71%
+/dev/grid/node-x12-y11   85T   69T    16T   81%
+/dev/grid/node-x12-y12   90T   69T    21T   76%
+/dev/grid/node-x12-y13   94T   66T    28T   70%
+/dev/grid/node-x12-y14   89T   69T    20T   77%
+/dev/grid/node-x12-y15   92T   68T    24T   73%
+/dev/grid/node-x12-y16   90T   73T    17T   81%
+/dev/grid/node-x12-y17   85T   67T    18T   78%
+/dev/grid/node-x12-y18   90T   67T    23T   74%
+/dev/grid/node-x12-y19   94T   65T    29T   69%
+/dev/grid/node-x12-y20   89T   68T    21T   76%
+/dev/grid/node-x12-y21   88T   71T    17T   80%
+/dev/grid/node-x12-y22   87T   73T    14T   83%
+/dev/grid/node-x12-y23   94T   64T    30T   68%
+/dev/grid/node-x12-y24  505T  499T     6T   98%
+/dev/grid/node-x12-y25   86T   67T    19T   77%
+/dev/grid/node-x12-y26   94T   64T    30T   68%
+/dev/grid/node-x12-y27   92T   66T    26T   71%
+/dev/grid/node-x13-y0    89T   65T    24T   73%
+/dev/grid/node-x13-y1    92T   65T    27T   70%
+/dev/grid/node-x13-y2    92T   67T    25T   72%
+/dev/grid/node-x13-y3    91T   71T    20T   78%
+/dev/grid/node-x13-y4    87T   66T    21T   75%
+/dev/grid/node-x13-y5    92T   71T    21T   77%
+/dev/grid/node-x13-y6    92T   67T    25T   72%
+/dev/grid/node-x13-y7    90T   73T    17T   81%
+/dev/grid/node-x13-y8    91T   67T    24T   73%
+/dev/grid/node-x13-y9    90T   64T    26T   71%
+/dev/grid/node-x13-y10   85T   73T    12T   85%
+/dev/grid/node-x13-y11   91T   65T    26T   71%
+/dev/grid/node-x13-y12   94T   65T    29T   69%
+/dev/grid/node-x13-y13   94T   73T    21T   77%
+/dev/grid/node-x13-y14   91T   71T    20T   78%
+/dev/grid/node-x13-y15   85T   65T    20T   76%
+/dev/grid/node-x13-y16   88T   68T    20T   77%
+/dev/grid/node-x13-y17   94T   65T    29T   69%
+/dev/grid/node-x13-y18   92T   70T    22T   76%
+/dev/grid/node-x13-y19   86T   72T    14T   83%
+/dev/grid/node-x13-y20   88T   71T    17T   80%
+/dev/grid/node-x13-y21   94T   72T    22T   76%
+/dev/grid/node-x13-y22   92T   66T    26T   71%
+/dev/grid/node-x13-y23   90T   69T    21T   76%
+/dev/grid/node-x13-y24  510T  492T    18T   96%
+/dev/grid/node-x13-y25   94T   73T    21T   77%
+/dev/grid/node-x13-y26   87T   68T    19T   78%
+/dev/grid/node-x13-y27   93T   71T    22T   76%
+/dev/grid/node-x14-y0    87T   73T    14T   83%
+/dev/grid/node-x14-y1    86T   69T    17T   80%
+/dev/grid/node-x14-y2    91T   71T    20T   78%
+/dev/grid/node-x14-y3    88T   67T    21T   76%
+/dev/grid/node-x14-y4    88T   70T    18T   79%
+/dev/grid/node-x14-y5    92T   73T    19T   79%
+/dev/grid/node-x14-y6    88T   66T    22T   75%
+/dev/grid/node-x14-y7    85T   68T    17T   80%
+/dev/grid/node-x14-y8    87T   70T    17T   80%
+/dev/grid/node-x14-y9    88T   71T    17T   80%
+/dev/grid/node-x14-y10   89T   66T    23T   74%
+/dev/grid/node-x14-y11   90T   69T    21T   76%
+/dev/grid/node-x14-y12   89T   71T    18T   79%
+/dev/grid/node-x14-y13   89T   64T    25T   71%
+/dev/grid/node-x14-y14   91T   72T    19T   79%
+/dev/grid/node-x14-y15   94T   69T    25T   73%
+/dev/grid/node-x14-y16   86T   73T    13T   84%
+/dev/grid/node-x14-y17   88T   70T    18T   79%
+/dev/grid/node-x14-y18   91T   68T    23T   74%
+/dev/grid/node-x14-y19   91T   67T    24T   73%
+/dev/grid/node-x14-y20   85T   65T    20T   76%
+/dev/grid/node-x14-y21   85T   71T    14T   83%
+/dev/grid/node-x14-y22   90T   70T    20T   77%
+/dev/grid/node-x14-y23   85T   70T    15T   82%
+/dev/grid/node-x14-y24  504T  494T    10T   98%
+/dev/grid/node-x14-y25   94T   69T    25T   73%
+/dev/grid/node-x14-y26   92T   64T    28T   69%
+/dev/grid/node-x14-y27   86T   73T    13T   84%
+/dev/grid/node-x15-y0    88T   72T    16T   81%
+/dev/grid/node-x15-y1    91T   67T    24T   73%
+/dev/grid/node-x15-y2    90T   67T    23T   74%
+/dev/grid/node-x15-y3    90T   68T    22T   75%
+/dev/grid/node-x15-y4    92T   70T    22T   76%
+/dev/grid/node-x15-y5    89T   69T    20T   77%
+/dev/grid/node-x15-y6    89T   70T    19T   78%
+/dev/grid/node-x15-y7    93T   71T    22T   76%
+/dev/grid/node-x15-y8    86T   64T    22T   74%
+/dev/grid/node-x15-y9    91T   71T    20T   78%
+/dev/grid/node-x15-y10   94T   72T    22T   76%
+/dev/grid/node-x15-y11   91T   70T    21T   76%
+/dev/grid/node-x15-y12   93T   71T    22T   76%
+/dev/grid/node-x15-y13   94T   66T    28T   70%
+/dev/grid/node-x15-y14   93T   68T    25T   73%
+/dev/grid/node-x15-y15   85T   67T    18T   78%
+/dev/grid/node-x15-y16   88T   64T    24T   72%
+/dev/grid/node-x15-y17   94T   72T    22T   76%
+/dev/grid/node-x15-y18   93T   67T    26T   72%
+/dev/grid/node-x15-y19   89T   68T    21T   76%
+/dev/grid/node-x15-y20   93T   71T    22T   76%
+/dev/grid/node-x15-y21   90T   70T    20T   77%
+/dev/grid/node-x15-y22   86T   65T    21T   75%
+/dev/grid/node-x15-y23   90T   68T    22T   75%
+/dev/grid/node-x15-y24  506T  494T    12T   97%
+/dev/grid/node-x15-y25   91T   71T    20T   78%
+/dev/grid/node-x15-y26   86T   70T    16T   81%
+/dev/grid/node-x15-y27   87T   64T    23T   73%
+/dev/grid/node-x16-y0    93T   64T    29T   68%
+/dev/grid/node-x16-y1    91T   69T    22T   75%
+/dev/grid/node-x16-y2    89T   66T    23T   74%
+/dev/grid/node-x16-y3    89T   68T    21T   76%
+/dev/grid/node-x16-y4    91T   65T    26T   71%
+/dev/grid/node-x16-y5    85T   71T    14T   83%
+/dev/grid/node-x16-y6    93T   69T    24T   74%
+/dev/grid/node-x16-y7    87T   69T    18T   79%
+/dev/grid/node-x16-y8    85T   72T    13T   84%
+/dev/grid/node-x16-y9    92T   67T    25T   72%
+/dev/grid/node-x16-y10   92T   69T    23T   75%
+/dev/grid/node-x16-y11   93T   72T    21T   77%
+/dev/grid/node-x16-y12   92T   73T    19T   79%
+/dev/grid/node-x16-y13   88T   70T    18T   79%
+/dev/grid/node-x16-y14   91T   71T    20T   78%
+/dev/grid/node-x16-y15   88T   66T    22T   75%
+/dev/grid/node-x16-y16   88T   70T    18T   79%
+/dev/grid/node-x16-y17   88T   73T    15T   82%
+/dev/grid/node-x16-y18   92T   72T    20T   78%
+/dev/grid/node-x16-y19   90T   73T    17T   81%
+/dev/grid/node-x16-y20   94T   73T    21T   77%
+/dev/grid/node-x16-y21   86T   71T    15T   82%
+/dev/grid/node-x16-y22   88T   68T    20T   77%
+/dev/grid/node-x16-y23   88T   73T    15T   82%
+/dev/grid/node-x16-y24  506T  496T    10T   98%
+/dev/grid/node-x16-y25   85T   69T    16T   81%
+/dev/grid/node-x16-y26   90T   64T    26T   71%
+/dev/grid/node-x16-y27   92T   64T    28T   69%
+/dev/grid/node-x17-y0    88T   73T    15T   82%
+/dev/grid/node-x17-y1    87T   65T    22T   74%
+/dev/grid/node-x17-y2    90T   64T    26T   71%
+/dev/grid/node-x17-y3    93T   71T    22T   76%
+/dev/grid/node-x17-y4    90T   64T    26T   71%
+/dev/grid/node-x17-y5    87T   64T    23T   73%
+/dev/grid/node-x17-y6    86T   72T    14T   83%
+/dev/grid/node-x17-y7    90T   65T    25T   72%
+/dev/grid/node-x17-y8    85T   71T    14T   83%
+/dev/grid/node-x17-y9    93T   68T    25T   73%
+/dev/grid/node-x17-y10   87T   65T    22T   74%
+/dev/grid/node-x17-y11   87T   71T    16T   81%
+/dev/grid/node-x17-y12   90T   73T    17T   81%
+/dev/grid/node-x17-y13   92T   71T    21T   77%
+/dev/grid/node-x17-y14   91T   69T    22T   75%
+/dev/grid/node-x17-y15   88T   73T    15T   82%
+/dev/grid/node-x17-y16   88T   73T    15T   82%
+/dev/grid/node-x17-y17   88T   71T    17T   80%
+/dev/grid/node-x17-y18   87T   66T    21T   75%
+/dev/grid/node-x17-y19   89T   71T    18T   79%
+/dev/grid/node-x17-y20   91T   72T    19T   79%
+/dev/grid/node-x17-y21   93T   69T    24T   74%
+/dev/grid/node-x17-y22   85T   68T    17T   80%
+/dev/grid/node-x17-y23   93T   67T    26T   72%
+/dev/grid/node-x17-y24  505T  494T    11T   97%
+/dev/grid/node-x17-y25   88T   72T    16T   81%
+/dev/grid/node-x17-y26   93T   72T    21T   77%
+/dev/grid/node-x17-y27   85T   72T    13T   84%
+/dev/grid/node-x18-y0    92T   70T    22T   76%
+/dev/grid/node-x18-y1    89T   72T    17T   80%
+/dev/grid/node-x18-y2    85T   66T    19T   77%
+/dev/grid/node-x18-y3    90T   68T    22T   75%
+/dev/grid/node-x18-y4    92T   69T    23T   75%
+/dev/grid/node-x18-y5    91T   70T    21T   76%
+/dev/grid/node-x18-y6    87T   68T    19T   78%
+/dev/grid/node-x18-y7    93T   66T    27T   70%
+/dev/grid/node-x18-y8    87T   64T    23T   73%
+/dev/grid/node-x18-y9    89T   72T    17T   80%
+/dev/grid/node-x18-y10   86T   69T    17T   80%
+/dev/grid/node-x18-y11   90T   73T    17T   81%
+/dev/grid/node-x18-y12   92T   72T    20T   78%
+/dev/grid/node-x18-y13   90T   70T    20T   77%
+/dev/grid/node-x18-y14   87T   72T    15T   82%
+/dev/grid/node-x18-y15   89T   70T    19T   78%
+/dev/grid/node-x18-y16   90T   73T    17T   81%
+/dev/grid/node-x18-y17   92T   66T    26T   71%
+/dev/grid/node-x18-y18   87T   73T    14T   83%
+/dev/grid/node-x18-y19   90T   70T    20T   77%
+/dev/grid/node-x18-y20   94T   66T    28T   70%
+/dev/grid/node-x18-y21   88T   73T    15T   82%
+/dev/grid/node-x18-y22   87T   72T    15T   82%
+/dev/grid/node-x18-y23   85T   65T    20T   76%
+/dev/grid/node-x18-y24  504T  498T     6T   98%
+/dev/grid/node-x18-y25   89T   70T    19T   78%
+/dev/grid/node-x18-y26   86T   69T    17T   80%
+/dev/grid/node-x18-y27   94T   70T    24T   74%
+/dev/grid/node-x19-y0    89T   69T    20T   77%
+/dev/grid/node-x19-y1    90T   72T    18T   80%
+/dev/grid/node-x19-y2    91T   68T    23T   74%
+/dev/grid/node-x19-y3    85T   64T    21T   75%
+/dev/grid/node-x19-y4    92T   66T    26T   71%
+/dev/grid/node-x19-y5    89T   65T    24T   73%
+/dev/grid/node-x19-y6    85T   64T    21T   75%
+/dev/grid/node-x19-y7    87T   66T    21T   75%
+/dev/grid/node-x19-y8    90T   65T    25T   72%
+/dev/grid/node-x19-y9    86T   73T    13T   84%
+/dev/grid/node-x19-y10   91T   73T    18T   80%
+/dev/grid/node-x19-y11   91T   64T    27T   70%
+/dev/grid/node-x19-y12   91T   69T    22T   75%
+/dev/grid/node-x19-y13   93T   71T    22T   76%
+/dev/grid/node-x19-y14   88T   67T    21T   76%
+/dev/grid/node-x19-y15   85T   66T    19T   77%
+/dev/grid/node-x19-y16   92T   65T    27T   70%
+/dev/grid/node-x19-y17   85T   67T    18T   78%
+/dev/grid/node-x19-y18   86T   72T    14T   83%
+/dev/grid/node-x19-y19   90T   72T    18T   80%
+/dev/grid/node-x19-y20   87T   65T    22T   74%
+/dev/grid/node-x19-y21   93T   64T    29T   68%
+/dev/grid/node-x19-y22   91T   73T    18T   80%
+/dev/grid/node-x19-y23   93T   65T    28T   69%
+/dev/grid/node-x19-y24  510T  495T    15T   97%
+/dev/grid/node-x19-y25   86T   69T    17T   80%
+/dev/grid/node-x19-y26   94T   68T    26T   72%
+/dev/grid/node-x19-y27   86T   66T    20T   76%
+/dev/grid/node-x20-y0    91T   67T    24T   73%
+/dev/grid/node-x20-y1    92T   67T    25T   72%
+/dev/grid/node-x20-y2    88T   64T    24T   72%
+/dev/grid/node-x20-y3    93T   68T    25T   73%
+/dev/grid/node-x20-y4    88T   71T    17T   80%
+/dev/grid/node-x20-y5    94T   68T    26T   72%
+/dev/grid/node-x20-y6    85T   68T    17T   80%
+/dev/grid/node-x20-y7    89T   65T    24T   73%
+/dev/grid/node-x20-y8    85T   64T    21T   75%
+/dev/grid/node-x20-y9    91T   66T    25T   72%
+/dev/grid/node-x20-y10   94T   64T    30T   68%
+/dev/grid/node-x20-y11   87T   68T    19T   78%
+/dev/grid/node-x20-y12   90T   71T    19T   78%
+/dev/grid/node-x20-y13   90T   67T    23T   74%
+/dev/grid/node-x20-y14   91T   64T    27T   70%
+/dev/grid/node-x20-y15   85T   72T    13T   84%
+/dev/grid/node-x20-y16   87T   65T    22T   74%
+/dev/grid/node-x20-y17   89T   71T    18T   79%
+/dev/grid/node-x20-y18   87T   66T    21T   75%
+/dev/grid/node-x20-y19   88T   71T    17T   80%
+/dev/grid/node-x20-y20   94T   71T    23T   75%
+/dev/grid/node-x20-y21   91T   68T    23T   74%
+/dev/grid/node-x20-y22   92T   71T    21T   77%
+/dev/grid/node-x20-y23   88T   68T    20T   77%
+/dev/grid/node-x20-y24  507T  498T     9T   98%
+/dev/grid/node-x20-y25   87T   71T    16T   81%
+/dev/grid/node-x20-y26   88T   69T    19T   78%
+/dev/grid/node-x20-y27   87T   69T    18T   79%
+/dev/grid/node-x21-y0    92T   70T    22T   76%
+/dev/grid/node-x21-y1    89T   64T    25T   71%
+/dev/grid/node-x21-y2    86T   67T    19T   77%
+/dev/grid/node-x21-y3    88T   66T    22T   75%
+/dev/grid/node-x21-y4    89T   68T    21T   76%
+/dev/grid/node-x21-y5    86T   67T    19T   77%
+/dev/grid/node-x21-y6    87T   68T    19T   78%
+/dev/grid/node-x21-y7    89T   73T    16T   82%
+/dev/grid/node-x21-y8    87T   71T    16T   81%
+/dev/grid/node-x21-y9    90T   71T    19T   78%
+/dev/grid/node-x21-y10   92T   69T    23T   75%
+/dev/grid/node-x21-y11   92T   70T    22T   76%
+/dev/grid/node-x21-y12   92T   64T    28T   69%
+/dev/grid/node-x21-y13   91T   69T    22T   75%
+/dev/grid/node-x21-y14   89T   64T    25T   71%
+/dev/grid/node-x21-y15   92T   67T    25T   72%
+/dev/grid/node-x21-y16   93T   65T    28T   69%
+/dev/grid/node-x21-y17   89T   69T    20T   77%
+/dev/grid/node-x21-y18   86T   73T    13T   84%
+/dev/grid/node-x21-y19   93T   67T    26T   72%
+/dev/grid/node-x21-y20   88T   70T    18T   79%
+/dev/grid/node-x21-y21   93T   68T    25T   73%
+/dev/grid/node-x21-y22   94T   64T    30T   68%
+/dev/grid/node-x21-y23   90T   71T    19T   78%
+/dev/grid/node-x21-y24  504T  496T     8T   98%
+/dev/grid/node-x21-y25   94T   72T    22T   76%
+/dev/grid/node-x21-y26   93T   70T    23T   75%
+/dev/grid/node-x21-y27   88T   71T    17T   80%
+/dev/grid/node-x22-y0    94T   66T    28T   70%
+/dev/grid/node-x22-y1    92T   71T    21T   77%
+/dev/grid/node-x22-y2    92T   66T    26T   71%
+/dev/grid/node-x22-y3    93T   64T    29T   68%
+/dev/grid/node-x22-y4    88T   65T    23T   73%
+/dev/grid/node-x22-y5    91T   67T    24T   73%
+/dev/grid/node-x22-y6    91T   67T    24T   73%
+/dev/grid/node-x22-y7    85T   69T    16T   81%
+/dev/grid/node-x22-y8    85T   69T    16T   81%
+/dev/grid/node-x22-y9    85T   72T    13T   84%
+/dev/grid/node-x22-y10   85T   69T    16T   81%
+/dev/grid/node-x22-y11   87T   73T    14T   83%
+/dev/grid/node-x22-y12   91T   67T    24T   73%
+/dev/grid/node-x22-y13   94T   73T    21T   77%
+/dev/grid/node-x22-y14   91T   73T    18T   80%
+/dev/grid/node-x22-y15   86T   73T    13T   84%
+/dev/grid/node-x22-y16   85T   73T    12T   85%
+/dev/grid/node-x22-y17   92T   66T    26T   71%
+/dev/grid/node-x22-y18   86T   67T    19T   77%
+/dev/grid/node-x22-y19   88T   73T    15T   82%
+/dev/grid/node-x22-y20   91T   72T    19T   79%
+/dev/grid/node-x22-y21   92T   65T    27T   70%
+/dev/grid/node-x22-y22   85T   65T    20T   76%
+/dev/grid/node-x22-y23   93T   69T    24T   74%
+/dev/grid/node-x22-y24  501T  494T     7T   98%
+/dev/grid/node-x22-y25   93T   69T    24T   74%
+/dev/grid/node-x22-y26   89T   72T    17T   80%
+/dev/grid/node-x22-y27   94T   71T    23T   75%
+/dev/grid/node-x23-y0    89T   70T    19T   78%
+/dev/grid/node-x23-y1    93T   64T    29T   68%
+/dev/grid/node-x23-y2    94T   65T    29T   69%
+/dev/grid/node-x23-y3    86T   67T    19T   77%
+/dev/grid/node-x23-y4    91T   72T    19T   79%
+/dev/grid/node-x23-y5    86T   64T    22T   74%
+/dev/grid/node-x23-y6    88T   69T    19T   78%
+/dev/grid/node-x23-y7    88T   66T    22T   75%
+/dev/grid/node-x23-y8    87T   64T    23T   73%
+/dev/grid/node-x23-y9    85T   69T    16T   81%
+/dev/grid/node-x23-y10   85T   68T    17T   80%
+/dev/grid/node-x23-y11   92T   65T    27T   70%
+/dev/grid/node-x23-y12   94T   70T    24T   74%
+/dev/grid/node-x23-y13   88T   67T    21T   76%
+/dev/grid/node-x23-y14   91T   67T    24T   73%
+/dev/grid/node-x23-y15   91T   73T    18T   80%
+/dev/grid/node-x23-y16   91T   73T    18T   80%
+/dev/grid/node-x23-y17   89T   68T    21T   76%
+/dev/grid/node-x23-y18   86T   73T    13T   84%
+/dev/grid/node-x23-y19   87T   72T    15T   82%
+/dev/grid/node-x23-y20   88T   66T    22T   75%
+/dev/grid/node-x23-y21   89T   71T    18T   79%
+/dev/grid/node-x23-y22   89T   66T    23T   74%
+/dev/grid/node-x23-y23   92T   73T    19T   79%
+/dev/grid/node-x23-y24  503T  493T    10T   98%
+/dev/grid/node-x23-y25   86T   68T    18T   79%
+/dev/grid/node-x23-y26   94T   68T    26T   72%
+/dev/grid/node-x23-y27   92T   65T    27T   70%
+/dev/grid/node-x24-y0    91T   70T    21T   76%
+/dev/grid/node-x24-y1    87T   73T    14T   83%
+/dev/grid/node-x24-y2    92T   66T    26T   71%
+/dev/grid/node-x24-y3    86T   72T    14T   83%
+/dev/grid/node-x24-y4    88T   70T    18T   79%
+/dev/grid/node-x24-y5    90T   65T    25T   72%
+/dev/grid/node-x24-y6    88T   67T    21T   76%
+/dev/grid/node-x24-y7    86T   68T    18T   79%
+/dev/grid/node-x24-y8    91T   73T    18T   80%
+/dev/grid/node-x24-y9    93T   71T    22T   76%
+/dev/grid/node-x24-y10   86T   69T    17T   80%
+/dev/grid/node-x24-y11   93T   69T    24T   74%
+/dev/grid/node-x24-y12   89T   72T    17T   80%
+/dev/grid/node-x24-y13   91T   71T    20T   78%
+/dev/grid/node-x24-y14   86T   71T    15T   82%
+/dev/grid/node-x24-y15   87T   67T    20T   77%
+/dev/grid/node-x24-y16   92T   72T    20T   78%
+/dev/grid/node-x24-y17   88T   64T    24T   72%
+/dev/grid/node-x24-y18   91T   67T    24T   73%
+/dev/grid/node-x24-y19   93T   69T    24T   74%
+/dev/grid/node-x24-y20   91T   72T    19T   79%
+/dev/grid/node-x24-y21   87T   66T    21T   75%
+/dev/grid/node-x24-y22   87T   72T    15T   82%
+/dev/grid/node-x24-y23   94T   67T    27T   71%
+/dev/grid/node-x24-y24  504T  497T     7T   98%
+/dev/grid/node-x24-y25   91T   71T    20T   78%
+/dev/grid/node-x24-y26   92T   65T    27T   70%
+/dev/grid/node-x24-y27   85T   67T    18T   78%
+/dev/grid/node-x25-y0    89T   66T    23T   74%
+/dev/grid/node-x25-y1    88T   71T    17T   80%
+/dev/grid/node-x25-y2    93T   72T    21T   77%
+/dev/grid/node-x25-y3    92T   65T    27T   70%
+/dev/grid/node-x25-y4    88T   65T    23T   73%
+/dev/grid/node-x25-y5    89T   64T    25T   71%
+/dev/grid/node-x25-y6    87T   73T    14T   83%
+/dev/grid/node-x25-y7    88T   67T    21T   76%
+/dev/grid/node-x25-y8    92T   68T    24T   73%
+/dev/grid/node-x25-y9    86T   70T    16T   81%
+/dev/grid/node-x25-y10   91T   68T    23T   74%
+/dev/grid/node-x25-y11   90T   65T    25T   72%
+/dev/grid/node-x25-y12   92T   67T    25T   72%
+/dev/grid/node-x25-y13   90T   66T    24T   73%
+/dev/grid/node-x25-y14   93T   66T    27T   70%
+/dev/grid/node-x25-y15   86T   68T    18T   79%
+/dev/grid/node-x25-y16   92T   69T    23T   75%
+/dev/grid/node-x25-y17   88T   66T    22T   75%
+/dev/grid/node-x25-y18   91T   73T    18T   80%
+/dev/grid/node-x25-y19   86T   71T    15T   82%
+/dev/grid/node-x25-y20   88T   70T    18T   79%
+/dev/grid/node-x25-y21   85T   66T    19T   77%
+/dev/grid/node-x25-y22   92T   64T    28T   69%
+/dev/grid/node-x25-y23   87T   72T    15T   82%
+/dev/grid/node-x25-y24  506T  493T    13T   97%
+/dev/grid/node-x25-y25   85T   64T    21T   75%
+/dev/grid/node-x25-y26   87T   64T    23T   73%
+/dev/grid/node-x25-y27   88T   72T    16T   81%
+/dev/grid/node-x26-y0    87T   73T    14T   83%
+/dev/grid/node-x26-y1    91T   72T    19T   79%
+/dev/grid/node-x26-y2    86T   66T    20T   76%
+/dev/grid/node-x26-y3    86T   72T    14T   83%
+/dev/grid/node-x26-y4    90T   67T    23T   74%
+/dev/grid/node-x26-y5    87T   70T    17T   80%
+/dev/grid/node-x26-y6    87T   64T    23T   73%
+/dev/grid/node-x26-y7    90T   64T    26T   71%
+/dev/grid/node-x26-y8    85T   64T    21T   75%
+/dev/grid/node-x26-y9    92T   68T    24T   73%
+/dev/grid/node-x26-y10   92T   65T    27T   70%
+/dev/grid/node-x26-y11   88T   65T    23T   73%
+/dev/grid/node-x26-y12   85T   70T    15T   82%
+/dev/grid/node-x26-y13   86T   68T    18T   79%
+/dev/grid/node-x26-y14   92T   70T    22T   76%
+/dev/grid/node-x26-y15   89T   68T    21T   76%
+/dev/grid/node-x26-y16   89T   66T    23T   74%
+/dev/grid/node-x26-y17   86T   71T    15T   82%
+/dev/grid/node-x26-y18   87T   68T    19T   78%
+/dev/grid/node-x26-y19   88T   69T    19T   78%
+/dev/grid/node-x26-y20   92T   67T    25T   72%
+/dev/grid/node-x26-y21   94T   69T    25T   73%
+/dev/grid/node-x26-y22   86T   68T    18T   79%
+/dev/grid/node-x26-y23   85T   73T    12T   85%
+/dev/grid/node-x26-y24  508T  498T    10T   98%
+/dev/grid/node-x26-y25   85T   73T    12T   85%
+/dev/grid/node-x26-y26   88T   69T    19T   78%
+/dev/grid/node-x26-y27   89T   68T    21T   76%
+/dev/grid/node-x27-y0    86T   64T    22T   74%
+/dev/grid/node-x27-y1    93T   65T    28T   69%
+/dev/grid/node-x27-y2    92T   71T    21T   77%
+/dev/grid/node-x27-y3    87T   68T    19T   78%
+/dev/grid/node-x27-y4    92T   64T    28T   69%
+/dev/grid/node-x27-y5    91T   65T    26T   71%
+/dev/grid/node-x27-y6    86T   64T    22T   74%
+/dev/grid/node-x27-y7    90T   73T    17T   81%
+/dev/grid/node-x27-y8    91T   67T    24T   73%
+/dev/grid/node-x27-y9    85T   69T    16T   81%
+/dev/grid/node-x27-y10   92T   64T    28T   69%
+/dev/grid/node-x27-y11   93T   69T    24T   74%
+/dev/grid/node-x27-y12   90T   69T    21T   76%
+/dev/grid/node-x27-y13   87T   72T    15T   82%
+/dev/grid/node-x27-y14   94T   70T    24T   74%
+/dev/grid/node-x27-y15   91T   72T    19T   79%
+/dev/grid/node-x27-y16   86T   70T    16T   81%
+/dev/grid/node-x27-y17   90T   67T    23T   74%
+/dev/grid/node-x27-y18   86T   73T    13T   84%
+/dev/grid/node-x27-y19   92T   66T    26T   71%
+/dev/grid/node-x27-y20   94T   64T    30T   68%
+/dev/grid/node-x27-y21   89T   70T    19T   78%
+/dev/grid/node-x27-y22   91T   73T    18T   80%
+/dev/grid/node-x27-y23   89T   67T    22T   75%
+/dev/grid/node-x27-y24  503T  490T    13T   97%
+/dev/grid/node-x27-y25   94T   67T    27T   71%
+/dev/grid/node-x27-y26   90T   68T    22T   75%
+/dev/grid/node-x27-y27   87T   72T    15T   82%
+/dev/grid/node-x28-y0    90T   68T    22T   75%
+/dev/grid/node-x28-y1    86T   73T    13T   84%
+/dev/grid/node-x28-y2    88T   73T    15T   82%
+/dev/grid/node-x28-y3    93T   70T    23T   75%
+/dev/grid/node-x28-y4    86T   64T    22T   74%
+/dev/grid/node-x28-y5    86T   69T    17T   80%
+/dev/grid/node-x28-y6    89T   71T    18T   79%
+/dev/grid/node-x28-y7    94T   72T    22T   76%
+/dev/grid/node-x28-y8    85T   68T    17T   80%
+/dev/grid/node-x28-y9    90T   69T    21T   76%
+/dev/grid/node-x28-y10   87T   73T    14T   83%
+/dev/grid/node-x28-y11   86T   64T    22T   74%
+/dev/grid/node-x28-y12   88T   71T    17T   80%
+/dev/grid/node-x28-y13   87T   64T    23T   73%
+/dev/grid/node-x28-y14   94T   71T    23T   75%
+/dev/grid/node-x28-y15   85T   73T    12T   85%
+/dev/grid/node-x28-y16   86T   69T    17T   80%
+/dev/grid/node-x28-y17   92T   72T    20T   78%
+/dev/grid/node-x28-y18   88T   71T    17T   80%
+/dev/grid/node-x28-y19   85T   68T    17T   80%
+/dev/grid/node-x28-y20   94T   65T    29T   69%
+/dev/grid/node-x28-y21   85T   71T    14T   83%
+/dev/grid/node-x28-y22   85T   67T    18T   78%
+/dev/grid/node-x28-y23   94T   65T    29T   69%
+/dev/grid/node-x28-y24  509T  496T    13T   97%
+/dev/grid/node-x28-y25   93T   71T    22T   76%
+/dev/grid/node-x28-y26   87T   72T    15T   82%
+/dev/grid/node-x28-y27   90T   72T    18T   80%
+/dev/grid/node-x29-y0    91T   67T    24T   73%
+/dev/grid/node-x29-y1    90T   66T    24T   73%
+/dev/grid/node-x29-y2    89T   71T    18T   79%
+/dev/grid/node-x29-y3    87T   68T    19T   78%
+/dev/grid/node-x29-y4    86T   64T    22T   74%
+/dev/grid/node-x29-y5    93T   73T    20T   78%
+/dev/grid/node-x29-y6    86T   65T    21T   75%
+/dev/grid/node-x29-y7    94T   70T    24T   74%
+/dev/grid/node-x29-y8    88T   72T    16T   81%
+/dev/grid/node-x29-y9    93T   66T    27T   70%
+/dev/grid/node-x29-y10   89T   65T    24T   73%
+/dev/grid/node-x29-y11   89T   72T    17T   80%
+/dev/grid/node-x29-y12   88T   72T    16T   81%
+/dev/grid/node-x29-y13   94T   71T    23T   75%
+/dev/grid/node-x29-y14   93T   65T    28T   69%
+/dev/grid/node-x29-y15   89T   72T    17T   80%
+/dev/grid/node-x29-y16   85T   71T    14T   83%
+/dev/grid/node-x29-y17   93T   68T    25T   73%
+/dev/grid/node-x29-y18   86T   66T    20T   76%
+/dev/grid/node-x29-y19   90T   65T    25T   72%
+/dev/grid/node-x29-y20   94T   66T    28T   70%
+/dev/grid/node-x29-y21   87T   68T    19T   78%
+/dev/grid/node-x29-y22   92T   70T    22T   76%
+/dev/grid/node-x29-y23   92T   72T    20T   78%
+/dev/grid/node-x29-y24  508T  497T    11T   97%
+/dev/grid/node-x29-y25   87T   64T    23T   73%
+/dev/grid/node-x29-y26   86T   68T    18T   79%
+/dev/grid/node-x29-y27   87T   71T    16T   81%
+/dev/grid/node-x30-y0    89T   71T    18T   79%
+/dev/grid/node-x30-y1    93T   64T    29T   68%
+/dev/grid/node-x30-y2    86T   73T    13T   84%
+/dev/grid/node-x30-y3    89T   71T    18T   79%
+/dev/grid/node-x30-y4    86T   70T    16T   81%
+/dev/grid/node-x30-y5    85T   70T    15T   82%
+/dev/grid/node-x30-y6    85T   72T    13T   84%
+/dev/grid/node-x30-y7    94T   64T    30T   68%
+/dev/grid/node-x30-y8    94T   64T    30T   68%
+/dev/grid/node-x30-y9    89T   65T    24T   73%
+/dev/grid/node-x30-y10   87T   71T    16T   81%
+/dev/grid/node-x30-y11   93T   64T    29T   68%
+/dev/grid/node-x30-y12   91T   67T    24T   73%
+/dev/grid/node-x30-y13   89T   68T    21T   76%
+/dev/grid/node-x30-y14   88T   67T    21T   76%
+/dev/grid/node-x30-y15   85T   71T    14T   83%
+/dev/grid/node-x30-y16   85T   64T    21T   75%
+/dev/grid/node-x30-y17   86T   73T    13T   84%
+/dev/grid/node-x30-y18   89T   65T    24T   73%
+/dev/grid/node-x30-y19   92T   72T    20T   78%
+/dev/grid/node-x30-y20   88T   70T    18T   79%
+/dev/grid/node-x30-y21   94T   66T    28T   70%
+/dev/grid/node-x30-y22   91T   68T    23T   74%
+/dev/grid/node-x30-y23   90T   66T    24T   73%
+/dev/grid/node-x30-y24  509T  494T    15T   97%
+/dev/grid/node-x30-y25   86T   72T    14T   83%
+/dev/grid/node-x30-y26   90T   65T    25T   72%
+/dev/grid/node-x30-y27   85T   69T    16T   81%
+/dev/grid/node-x31-y0    88T   64T    24T   72%
+/dev/grid/node-x31-y1    92T   70T    22T   76%
+/dev/grid/node-x31-y2    90T   69T    21T   76%
+/dev/grid/node-x31-y3    87T   70T    17T   80%
+/dev/grid/node-x31-y4    92T   72T    20T   78%
+/dev/grid/node-x31-y5    94T   72T    22T   76%
+/dev/grid/node-x31-y6    91T   68T    23T   74%
+/dev/grid/node-x31-y7    90T   69T    21T   76%
+/dev/grid/node-x31-y8    91T   64T    27T   70%
+/dev/grid/node-x31-y9    87T   68T    19T   78%
+/dev/grid/node-x31-y10   87T   69T    18T   79%
+/dev/grid/node-x31-y11   90T   68T    22T   75%
+/dev/grid/node-x31-y12   92T   70T    22T   76%
+/dev/grid/node-x31-y13   93T   64T    29T   68%
+/dev/grid/node-x31-y14   91T   66T    25T   72%
+/dev/grid/node-x31-y15   87T   64T    23T   73%
+/dev/grid/node-x31-y16   94T   69T    25T   73%
+/dev/grid/node-x31-y17   89T   70T    19T   78%
+/dev/grid/node-x31-y18   91T   69T    22T   75%
+/dev/grid/node-x31-y19   85T   69T    16T   81%
+/dev/grid/node-x31-y20   86T   67T    19T   77%
+/dev/grid/node-x31-y21   93T   69T    24T   74%
+/dev/grid/node-x31-y22   93T   64T    29T   68%
+/dev/grid/node-x31-y23   87T   73T    14T   83%
+/dev/grid/node-x31-y24  510T  494T    16T   96%
+/dev/grid/node-x31-y25   90T   68T    22T   75%
+/dev/grid/node-x31-y26   89T   73T    16T   82%
+/dev/grid/node-x31-y27   91T   65T    26T   71%
+/dev/grid/node-x32-y0    93T   70T    23T   75%
+/dev/grid/node-x32-y1    90T   71T    19T   78%
+/dev/grid/node-x32-y2    87T   71T    16T   81%
+/dev/grid/node-x32-y3    94T   64T    30T   68%
+/dev/grid/node-x32-y4    90T   64T    26T   71%
+/dev/grid/node-x32-y5    90T   67T    23T   74%
+/dev/grid/node-x32-y6    90T   70T    20T   77%
+/dev/grid/node-x32-y7    94T   64T    30T   68%
+/dev/grid/node-x32-y8    91T   67T    24T   73%
+/dev/grid/node-x32-y9    89T   64T    25T   71%
+/dev/grid/node-x32-y10   88T   70T    18T   79%
+/dev/grid/node-x32-y11   85T   68T    17T   80%
+/dev/grid/node-x32-y12   85T   68T    17T   80%
+/dev/grid/node-x32-y13   86T   68T    18T   79%
+/dev/grid/node-x32-y14   87T   71T    16T   81%
+/dev/grid/node-x32-y15   85T   70T    15T   82%
+/dev/grid/node-x32-y16   92T   71T    21T   77%
+/dev/grid/node-x32-y17   88T   71T    17T   80%
+/dev/grid/node-x32-y18   93T   71T    22T   76%
+/dev/grid/node-x32-y19   89T   67T    22T   75%
+/dev/grid/node-x32-y20   85T   68T    17T   80%
+/dev/grid/node-x32-y21   86T   65T    21T   75%
+/dev/grid/node-x32-y22   91T   70T    21T   76%
+/dev/grid/node-x32-y23   87T   72T    15T   82%
+/dev/grid/node-x32-y24  506T  490T    16T   96%
+/dev/grid/node-x32-y25   94T   68T    26T   72%
+/dev/grid/node-x32-y26   86T   65T    21T   75%
+/dev/grid/node-x32-y27   91T   70T    21T   76%
+/dev/grid/node-x33-y0    90T   72T    18T   80%
+/dev/grid/node-x33-y1    90T   70T    20T   77%
+/dev/grid/node-x33-y2    94T   69T    25T   73%
+/dev/grid/node-x33-y3    86T   67T    19T   77%
+/dev/grid/node-x33-y4    88T   66T    22T   75%
+/dev/grid/node-x33-y5    91T   67T    24T   73%
+/dev/grid/node-x33-y6    94T   65T    29T   69%
+/dev/grid/node-x33-y7    89T   67T    22T   75%
+/dev/grid/node-x33-y8    87T   72T    15T   82%
+/dev/grid/node-x33-y9    93T   68T    25T   73%
+/dev/grid/node-x33-y10   91T   71T    20T   78%
+/dev/grid/node-x33-y11   87T   69T    18T   79%
+/dev/grid/node-x33-y12   88T   65T    23T   73%
+/dev/grid/node-x33-y13   86T   64T    22T   74%
+/dev/grid/node-x33-y14   92T   67T    25T   72%
+/dev/grid/node-x33-y15   94T   67T    27T   71%
+/dev/grid/node-x33-y16   85T   73T    12T   85%
+/dev/grid/node-x33-y17   92T   64T    28T   69%
+/dev/grid/node-x33-y18   87T   65T    22T   74%
+/dev/grid/node-x33-y19   87T   68T    19T   78%
+/dev/grid/node-x33-y20   89T   73T    16T   82%
+/dev/grid/node-x33-y21   87T   65T    22T   74%
+/dev/grid/node-x33-y22   92T   71T    21T   77%
+/dev/grid/node-x33-y23   89T   67T    22T   75%
+/dev/grid/node-x33-y24  505T  497T     8T   98%
+/dev/grid/node-x33-y25   91T   64T    27T   70%
+/dev/grid/node-x33-y26   88T   67T    21T   76%
+/dev/grid/node-x33-y27   93T   68T    25T   73%
+/dev/grid/node-x34-y0    88T   66T    22T   75%
+/dev/grid/node-x34-y1    94T   69T    25T   73%
+/dev/grid/node-x34-y2    89T   66T    23T   74%
+/dev/grid/node-x34-y3    90T   64T    26T   71%
+/dev/grid/node-x34-y4    86T   73T    13T   84%
+/dev/grid/node-x34-y5    93T   67T    26T   72%
+/dev/grid/node-x34-y6    86T   73T    13T   84%
+/dev/grid/node-x34-y7    85T   70T    15T   82%
+/dev/grid/node-x34-y8    92T   70T    22T   76%
+/dev/grid/node-x34-y9    89T   67T    22T   75%
+/dev/grid/node-x34-y10   86T   68T    18T   79%
+/dev/grid/node-x34-y11   91T   65T    26T   71%
+/dev/grid/node-x34-y12   94T   72T    22T   76%
+/dev/grid/node-x34-y13   91T   70T    21T   76%
+/dev/grid/node-x34-y14   91T   72T    19T   79%
+/dev/grid/node-x34-y15   91T   64T    27T   70%
+/dev/grid/node-x34-y16   89T   67T    22T   75%
+/dev/grid/node-x34-y17   92T   67T    25T   72%
+/dev/grid/node-x34-y18   89T   69T    20T   77%
+/dev/grid/node-x34-y19   87T   66T    21T   75%
+/dev/grid/node-x34-y20   94T   71T    23T   75%
+/dev/grid/node-x34-y21   86T   71T    15T   82%
+/dev/grid/node-x34-y22   89T   72T    17T   80%
+/dev/grid/node-x34-y23   87T   73T    14T   83%
+/dev/grid/node-x34-y24  509T  494T    15T   97%
+/dev/grid/node-x34-y25   88T   69T    19T   78%
+/dev/grid/node-x34-y26   87T    0T    87T    0%
+/dev/grid/node-x34-y27   90T   67T    23T   74%
+/dev/grid/node-x35-y0    94T   69T    25T   73%
+/dev/grid/node-x35-y1    90T   71T    19T   78%
+/dev/grid/node-x35-y2    93T   72T    21T   77%
+/dev/grid/node-x35-y3    85T   64T    21T   75%
+/dev/grid/node-x35-y4    91T   69T    22T   75%
+/dev/grid/node-x35-y5    94T   73T    21T   77%
+/dev/grid/node-x35-y6    88T   65T    23T   73%
+/dev/grid/node-x35-y7    91T   67T    24T   73%
+/dev/grid/node-x35-y8    90T   66T    24T   73%
+/dev/grid/node-x35-y9    94T   70T    24T   74%
+/dev/grid/node-x35-y10   92T   68T    24T   73%
+/dev/grid/node-x35-y11   90T   64T    26T   71%
+/dev/grid/node-x35-y12   92T   68T    24T   73%
+/dev/grid/node-x35-y13   94T   64T    30T   68%
+/dev/grid/node-x35-y14   94T   68T    26T   72%
+/dev/grid/node-x35-y15   94T   68T    26T   72%
+/dev/grid/node-x35-y16   94T   70T    24T   74%
+/dev/grid/node-x35-y17   93T   68T    25T   73%
+/dev/grid/node-x35-y18   88T   70T    18T   79%
+/dev/grid/node-x35-y19   89T   66T    23T   74%
+/dev/grid/node-x35-y20   85T   73T    12T   85%
+/dev/grid/node-x35-y21   89T   72T    17T   80%
+/dev/grid/node-x35-y22   86T   72T    14T   83%
+/dev/grid/node-x35-y23   89T   71T    18T   79%
+/dev/grid/node-x35-y24  510T  498T    12T   97%
+/dev/grid/node-x35-y25   93T   69T    24T   74%
+/dev/grid/node-x35-y26   86T   71T    15T   82%
+/dev/grid/node-x35-y27   89T   64T    25T   71%
+/dev/grid/node-x36-y0    87T   64T    23T   73%
+/dev/grid/node-x36-y1    91T   69T    22T   75%
+/dev/grid/node-x36-y2    87T   68T    19T   78%
+/dev/grid/node-x36-y3    90T   65T    25T   72%
+/dev/grid/node-x36-y4    90T   65T    25T   72%
+/dev/grid/node-x36-y5    87T   68T    19T   78%
+/dev/grid/node-x36-y6    94T   70T    24T   74%
+/dev/grid/node-x36-y7    94T   68T    26T   72%
+/dev/grid/node-x36-y8    90T   69T    21T   76%
+/dev/grid/node-x36-y9    88T   67T    21T   76%
+/dev/grid/node-x36-y10   93T   64T    29T   68%
+/dev/grid/node-x36-y11   89T   71T    18T   79%
+/dev/grid/node-x36-y12   88T   65T    23T   73%
+/dev/grid/node-x36-y13   89T   73T    16T   82%
+/dev/grid/node-x36-y14   86T   70T    16T   81%
+/dev/grid/node-x36-y15   87T   64T    23T   73%
+/dev/grid/node-x36-y16   86T   71T    15T   82%
+/dev/grid/node-x36-y17   85T   71T    14T   83%
+/dev/grid/node-x36-y18   90T   72T    18T   80%
+/dev/grid/node-x36-y19   92T   68T    24T   73%
+/dev/grid/node-x36-y20   91T   66T    25T   72%
+/dev/grid/node-x36-y21   87T   67T    20T   77%
+/dev/grid/node-x36-y22   85T   66T    19T   77%
+/dev/grid/node-x36-y23   86T   67T    19T   77%
+/dev/grid/node-x36-y24  502T  499T     3T   99%
+/dev/grid/node-x36-y25   94T   70T    24T   74%
+/dev/grid/node-x36-y26   85T   72T    13T   84%
+/dev/grid/node-x36-y27   87T   68T    19T   78%
+/dev/grid/node-x37-y0    93T   70T    23T   75%
+/dev/grid/node-x37-y1    92T   72T    20T   78%
+/dev/grid/node-x37-y2    89T   73T    16T   82%
+/dev/grid/node-x37-y3    94T   70T    24T   74%
+/dev/grid/node-x37-y4    92T   66T    26T   71%
+/dev/grid/node-x37-y5    91T   64T    27T   70%
+/dev/grid/node-x37-y6    87T   64T    23T   73%
+/dev/grid/node-x37-y7    90T   72T    18T   80%
+/dev/grid/node-x37-y8    91T   66T    25T   72%
+/dev/grid/node-x37-y9    94T   65T    29T   69%
+/dev/grid/node-x37-y10   85T   70T    15T   82%
+/dev/grid/node-x37-y11   89T   69T    20T   77%
+/dev/grid/node-x37-y12   93T   71T    22T   76%
+/dev/grid/node-x37-y13   88T   67T    21T   76%
+/dev/grid/node-x37-y14   94T   67T    27T   71%
+/dev/grid/node-x37-y15   86T   73T    13T   84%
+/dev/grid/node-x37-y16   85T   68T    17T   80%
+/dev/grid/node-x37-y17   89T   72T    17T   80%
+/dev/grid/node-x37-y18   88T   67T    21T   76%
+/dev/grid/node-x37-y19   87T   66T    21T   75%
+/dev/grid/node-x37-y20   88T   69T    19T   78%
+/dev/grid/node-x37-y21   86T   70T    16T   81%
+/dev/grid/node-x37-y22   92T   68T    24T   73%
+/dev/grid/node-x37-y23   87T   70T    17T   80%
+/dev/grid/node-x37-y24  502T  498T     4T   99%
+/dev/grid/node-x37-y25   87T   72T    15T   82%
+/dev/grid/node-x37-y26   90T   64T    26T   71%
+/dev/grid/node-x37-y27   90T   70T    20T   77%
diff --git a/data/advent23.txt b/data/advent23.txt
new file mode 100644 (file)
index 0000000..93f25d2
--- /dev/null
@@ -0,0 +1,26 @@
+cpy a b
+dec b
+cpy a d
+cpy 0 a
+cpy b c
+inc a
+dec c
+jnz c -2
+dec d
+jnz d -5
+dec b
+cpy b c
+cpy c d
+dec d
+inc c
+jnz d -2
+tgl c
+cpy -16 c
+jnz 1 c
+cpy 94 c
+jnz 99 d
+inc a
+inc d
+jnz d -2
+inc c
+jnz c -5
\ No newline at end of file
diff --git a/src/Lib.hs b/src/Lib.hs
new file mode 100644 (file)
index 0000000..d36ff27
--- /dev/null
@@ -0,0 +1,6 @@
+module Lib
+    ( someFunc
+    ) where
+
+someFunc :: IO ()
+someFunc = putStrLn "someFunc"
diff --git a/stack.yaml b/stack.yaml
new file mode 100644 (file)
index 0000000..b77fb38
--- /dev/null
@@ -0,0 +1,10 @@
+flags: {}
+extra-package-dbs: []
+packages:
+- '.'
+system-ghc: true
+extra-deps:
+- astar-0.3.0.0
+- parsec-numbers-0.1.0
+- pqueue-1.3.2
+resolver: lts-6.25
diff --git a/test/Spec.hs b/test/Spec.hs
new file mode 100644 (file)
index 0000000..cd4753f
--- /dev/null
@@ -0,0 +1,2 @@
+main :: IO ()
+main = putStrLn "Test suite not yet implemented"