├── README.md ├── .gitignore ├── day7 ├── pyproject.toml ├── poetry.lock ├── main.prolog.py ├── main.z3.py ├── input └── input2 ├── day6 ├── pre.awk ├── main.lisp └── input ├── day1 ├── main.lisp └── input ├── day5 ├── main.pl └── input ├── day2 ├── main.hs └── input ├── day3 ├── main.hs └── input └── LICENSE /README.md: -------------------------------------------------------------------------------- 1 | # advent-of-code-2015 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.FASL 2 | *.fasl 3 | *.lisp-temp 4 | *.dfsl 5 | *.pfsl 6 | *.d64fsl 7 | *.p64fsl 8 | *.lx64fsl 9 | *.lx32fsl 10 | *.dx64fsl 11 | *.dx32fsl 12 | *.fx64fsl 13 | *.fx32fsl 14 | *.sx64fsl 15 | *.sx32fsl 16 | *.wx64fsl 17 | *.wx32fsl 18 | -------------------------------------------------------------------------------- /day7/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "day7" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Adrián Arroyo Calle "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = "^3.10" 10 | z3-solver = "^4.12.1.0" 11 | 12 | 13 | [build-system] 14 | requires = ["poetry-core"] 15 | build-backend = "poetry.core.masonry.api" 16 | -------------------------------------------------------------------------------- /day6/pre.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print "(" 3 | } 4 | 5 | match($0, /turn on ([0-9]+),([0-9]+) through ([0-9]+),([0-9]+)/, a) { 6 | print "(:turn-on " a[1] " " a[2] " " a[3] " " a[4] ")" 7 | } 8 | match($0, /turn off ([0-9]+),([0-9]+) through ([0-9]+),([0-9]+)/, a) { 9 | print "(:turn-off " a[1] " " a[2] " " a[3] " " a[4] ")" 10 | } 11 | match($0, /toggle ([0-9]+),([0-9]+) through ([0-9]+),([0-9]+)/, a) { 12 | print "(:toggle " a[1] " " a[2] " " a[3] " " a[4] ")" 13 | } 14 | 15 | END { 16 | print ")" 17 | } 18 | -------------------------------------------------------------------------------- /day1/main.lisp: -------------------------------------------------------------------------------- 1 | (defun get-first-line (filename) 2 | (let ((file (open filename))) 3 | (read-line file))) 4 | 5 | (defparameter *data* (coerce (get-first-line "input") 'list)) 6 | 7 | (defun char-to-int (char) 8 | (cond 9 | ((eq char #\() 1) 10 | ((eq char #\)) -1) 11 | (t 0))) 12 | 13 | (defun part-one () 14 | (reduce #'+ (mapcar #'char-to-int *data*))) 15 | 16 | (defun count-until-basement (line &optional (current-floor 0) (count 0)) 17 | (cond 18 | ((eq current-floor -1) count) 19 | (t (count-until-basement (rest line) (+ current-floor (char-to-int (first line))) (+ count 1))))) 20 | 21 | (defun part-two () 22 | (count-until-basement *data*)) 23 | -------------------------------------------------------------------------------- /day7/poetry.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Poetry and should not be changed by hand. 2 | 3 | [[package]] 4 | name = "z3-solver" 5 | version = "4.12.1.0" 6 | description = "an efficient SMT solver library" 7 | category = "main" 8 | optional = false 9 | python-versions = "*" 10 | files = [ 11 | {file = "z3-solver-4.12.1.0.tar.gz", hash = "sha256:c6b7c0f1c595ba47609d0e02b0cc263dc755def9f8d6f51c1943aec040a1eb2d"}, 12 | {file = "z3_solver-4.12.1.0-py2.py3-none-macosx_10_16_x86_64.whl", hash = "sha256:c4f1a53bce12b45698e8e49bd980cd3d3f0298c1ba4cf8c40525af86797565c8"}, 13 | {file = "z3_solver-4.12.1.0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:553ec3cd0188420bc5f007dd873fb0d87075d1b93808eca8c02324eb3a5f6f68"}, 14 | {file = "z3_solver-4.12.1.0-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:41cb9ac460af30b193811eebf919d61cf51a8856bbd74b200cbe6b21e3e955e4"}, 15 | {file = "z3_solver-4.12.1.0-py2.py3-none-win32.whl", hash = "sha256:85ff9f59b0f87df4dc0cd52baebb247b8049f2df6aad623151f4c4a21d3d01ac"}, 16 | {file = "z3_solver-4.12.1.0-py2.py3-none-win_amd64.whl", hash = "sha256:aa0e06d42070774a2f89818c412514d41fc84578f32d617de618b214e5ed8154"}, 17 | ] 18 | 19 | [metadata] 20 | lock-version = "2.0" 21 | python-versions = "^3.10" 22 | content-hash = "a885540892379f34394af8a805f6f30ebdad133af3dfb33c1ee24af8951316d9" 23 | -------------------------------------------------------------------------------- /day5/main.pl: -------------------------------------------------------------------------------- 1 | :- use_module(library(dcgs)). 2 | :- use_module(library(pio)). 3 | :- use_module(library(lists)). 4 | 5 | data(Data) :- 6 | phrase_from_file(lines(Data), "input"). 7 | 8 | lines([]) --> []. 9 | lines([X|Xs]) --> 10 | seq(X), 11 | "\n", 12 | lines(Xs). 13 | 14 | part_one(X) :- 15 | once(data(Data)), 16 | setof(NiceStr, (member(NiceStr, Data),nice(NiceStr)), NiceStrs), 17 | length(NiceStrs, X). 18 | 19 | part_two(X) :- 20 | once(data(Data)), 21 | setof(NiceStr, (member(NiceStr, Data),nice2(NiceStr)), NiceStrs), 22 | length(NiceStrs, X). 23 | 24 | nice(Str) :- 25 | at_least_three_vowels(Str), 26 | one_letter_twice_in_a_row(Str), 27 | does_not_contain_banned(Str). 28 | 29 | at_least_three_vowels(Str) :- 30 | findall(Vowel, ( 31 | member(Vowel, "aeiou"), 32 | member(Vowel, Str) 33 | ), Vowels), 34 | length(Vowels, N), 35 | N >= 3. 36 | 37 | one_letter_twice_in_a_row(Str) :- 38 | substr(Str, [X, X]). 39 | 40 | does_not_contain_banned(Str) :- 41 | \+ substr(Str, "ab"), 42 | \+ substr(Str, "cd"), 43 | \+ substr(Str, "pq"), 44 | \+ substr(Str, "xy"). 45 | 46 | substr(Str, Sub) :- 47 | append(_, X, Str), 48 | append(Sub, _, X). 49 | 50 | nice2(Str) :- 51 | one_letter_repeated_with_one_between(Str), 52 | pair_twice_without_overlapping(Str). 53 | 54 | one_letter_repeated_with_one_between(Str) :- 55 | substr(Str, [X, _, X]). 56 | 57 | pair_twice_without_overlapping(Str) :- 58 | substr(Str, Sub), 59 | append([X,Y|_], [X, Y], Sub), 60 | length(Sub, N), 61 | N > 3. 62 | -------------------------------------------------------------------------------- /day2/main.hs: -------------------------------------------------------------------------------- 1 | main :: IO () 2 | main = do 3 | file <- readFile "input" 4 | let sol1 = partOne $ lines file 5 | putStr "Solution 1: " 6 | print sol1 7 | let sol2 = partTwo $ lines file 8 | putStr "Solution 2: " 9 | print sol2 10 | 11 | 12 | partOne :: [String] -> Int 13 | partOne fileLines = sum $ map squareFeet $ map parse fileLines 14 | 15 | partTwo :: [String] -> Int 16 | partTwo fileLines = sum $ map ribbon $ map parse fileLines 17 | 18 | wordsWhen :: (Char -> Bool) -> String -> [String] 19 | wordsWhen p s = case dropWhile p s of 20 | "" -> [] 21 | s' -> w : wordsWhen p s'' 22 | where (w, s'') = break p s' 23 | 24 | data Dimension = MkDimension Int Int Int 25 | 26 | parse :: String -> Dimension 27 | parse str = 28 | let 29 | dimensionStr = wordsWhen (=='x') str 30 | dimensionLength = read (dimensionStr !! 0) :: Int 31 | dimensionWidth = read (dimensionStr !! 1) :: Int 32 | dimensionHeight = read (dimensionStr !! 2) :: Int 33 | in 34 | MkDimension dimensionLength dimensionWidth dimensionHeight 35 | 36 | squareFeet :: Dimension -> Int 37 | squareFeet (MkDimension l w h) = 2*l*w + 2*w*h + 2*h*l + smallestSide l w h 38 | 39 | smallestSide :: Int -> Int -> Int -> Int 40 | smallestSide l w h = min side1 (min side2 side3) 41 | where 42 | side1 = l*w 43 | side2 = l*h 44 | side3 = w*h 45 | 46 | volume :: Int -> Int -> Int -> Int 47 | volume l w h = l*w*h 48 | 49 | ribbon :: Dimension -> Int 50 | ribbon (MkDimension l w h) = smallerRibbon l w h + volume l w h 51 | 52 | smallerRibbon :: Int -> Int -> Int -> Int 53 | smallerRibbon l w h = min path1 (min path2 path3) 54 | where 55 | path1 = 2*l + 2*w 56 | path2 = 2*l + 2*h 57 | path3 = 2*w + 2*h 58 | -------------------------------------------------------------------------------- /day6/main.lisp: -------------------------------------------------------------------------------- 1 | (defun read-file (filename) 2 | (let ((stream (make-string-output-stream))) 3 | (progn 4 | (sb-ext:run-program "/usr/bin/awk" (list "-f" "pre.awk" filename) :output stream) 5 | (read-from-string (get-output-stream-string stream))))) 6 | 7 | (defparameter *data* (read-file "input")) 8 | 9 | (defun turn-on (grid x y) 10 | (setf (aref grid x y) 1)) 11 | 12 | (defun turn-off (grid x y) 13 | (setf (aref grid x y) 0)) 14 | 15 | (defun toggle (grid x y) 16 | (if (= 0 (aref grid x y)) 17 | (setf (aref grid x y) 1) 18 | (setf (aref grid x y) 0))) 19 | 20 | 21 | (defun count-lights (grid) 22 | (loop for x from 0 to 999 23 | sum (loop for y from 0 to 999 24 | sum (aref grid x y)))) 25 | 26 | (defun visit-lights (turn-on turn-off toggle) 27 | (let ((grid (make-array '(1000 1000)))) 28 | (progn 29 | (loop for operation in *data* 30 | do (let ((type (nth 0 operation)) 31 | (x0 (nth 1 operation)) 32 | (y0 (nth 2 operation)) 33 | (x1 (nth 3 operation)) 34 | (y1 (nth 4 operation))) 35 | (loop for x from x0 to x1 36 | do (loop for y from y0 to y1 37 | do (cond 38 | ((eq type :turn-on) (funcall turn-on grid x y)) 39 | ((eq type :turn-off) (funcall turn-off grid x y)) 40 | ((eq type :toggle) (funcall toggle grid x y))))))) 41 | grid))) 42 | 43 | (defun part-one () 44 | (count-lights (visit-lights #'turn-on #'turn-off #'toggle))) 45 | 46 | 47 | (defun turn-on-2 (grid x y) 48 | (setf (aref grid x y) (+ 1 (aref grid x y)))) 49 | 50 | (defun turn-off-2 (grid x y) 51 | (setf (aref grid x y) (if (= 0 (aref grid x y)) 52 | 0 53 | (- (aref grid x y) 1)))) 54 | 55 | (defun toggle-2 (grid x y) 56 | (setf (aref grid x y) (+ 2 (aref grid x y)))) 57 | 58 | (defun part-two () 59 | (count-lights (visit-lights #'turn-on-2 #'turn-off-2 #'toggle-2))) 60 | 61 | -------------------------------------------------------------------------------- /day3/main.hs: -------------------------------------------------------------------------------- 1 | import Data.Map (Map) 2 | import qualified Data.Map as Map 3 | 4 | data Direction = DUp | DDown | DLeft | DRight 5 | data Pos = MkPos Int Int 6 | 7 | instance Eq Pos where 8 | (MkPos x1 y1) == (MkPos x2 y2) = x1 == x2 && y1 == y2 9 | 10 | instance Ord Pos where 11 | compare (MkPos x1 y1) (MkPos x2 y2) = compare (x1, y1) (x2, y2) 12 | 13 | instance Show Pos where 14 | show (MkPos x y) = "(" ++ (show x) ++ "," ++ (show y) ++ ")" 15 | 16 | main :: IO () 17 | main = do 18 | file <- readFile "input" 19 | let sol1 = partOne file 20 | putStr "Solution 1: " 21 | print sol1 22 | let sol2 = partTwo file 23 | putStr "Solution 2: " 24 | print sol2 25 | 26 | partOne :: String -> Int 27 | partOne str = 28 | let 29 | directions = parse str 30 | houses = visitHouses directions 31 | in 32 | Map.size houses 33 | 34 | partTwo :: String -> Int 35 | partTwo str = 36 | let 37 | allDirections = zip [0..] $ parse str 38 | roboDirections = map (\(x,y) -> y) $ filter (\(x,_) -> odd x) allDirections 39 | elfDirections = map (\(x,y) -> y) $ filter (\(x, _) -> even x) allDirections 40 | in 41 | Map.size $ visitHouses' (MkPos 0 0) elfDirections (visitHouses roboDirections) 42 | 43 | parse :: String -> [Direction] 44 | parse = map signToDirection 45 | 46 | signToDirection :: Char -> Direction 47 | signToDirection c = 48 | case c of 49 | '^' -> DUp 50 | '>' -> DRight 51 | '<' -> DLeft 52 | 'v' -> DDown 53 | 54 | visitHouses :: [Direction] -> Map Pos Int 55 | visitHouses direction = visitHouses' (MkPos 0 0) direction Map.empty 56 | 57 | visitHouses' :: Pos -> [Direction] -> Map Pos Int -> Map Pos Int 58 | visitHouses' pos [] houses = visitHouse pos houses 59 | visitHouses' (MkPos x y) (d:ds) houses = visitHouses' nextHouse ds (visitHouse (MkPos x y) houses) 60 | where 61 | nextHouse = case d of 62 | DUp -> MkPos x (y+1) 63 | DDown -> MkPos x (y-1) 64 | DLeft -> MkPos (x-1) y 65 | DRight -> MkPos (x+1) y 66 | 67 | 68 | visitHouse :: Pos -> Map Pos Int -> Map Pos Int 69 | visitHouse currentHouse houses = 70 | case Map.lookup currentHouse houses of 71 | Just gifts -> Map.insert currentHouse (gifts + 1) houses 72 | Nothing -> Map.insert currentHouse 1 houses 73 | 74 | -------------------------------------------------------------------------------- /day7/main.prolog.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from typing import ClassVar 3 | import re 4 | 5 | @dataclass 6 | class AndRule: 7 | left: str 8 | right: str 9 | output: str 10 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) AND (\w+) -> (\w+)") 11 | 12 | def export_prolog(self, f): 13 | try: 14 | left = int(self.left) 15 | f.write(f"wire({self.output}, X) :- {left} = A, wire({self.right}, B), X is A /\\ B.\n") 16 | except: 17 | f.write(f"wire({self.output}, X) :- wire({self.left}, A), wire({self.right}, B), X is A /\\ B.\n") 18 | 19 | @dataclass 20 | class OrRule: 21 | left: str 22 | right: str 23 | output: str 24 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) OR (\w+) -> (\w+)") 25 | 26 | def export_prolog(self, f): 27 | f.write(f"wire({self.output}, X) :- wire({self.left}, A), wire({self.right}, B), X is A \\/ B.\n") 28 | 29 | @dataclass 30 | class LShiftRule: 31 | left: str 32 | right: int 33 | output: str 34 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) LSHIFT (\d+) -> (\w+)") 35 | 36 | def export_prolog(self, f): 37 | f.write(f"wire({self.output}, X) :- wire({self.left}, A), X is A << {self.right}.\n") 38 | 39 | @dataclass 40 | class RShiftRule: 41 | left: str 42 | right: int 43 | output: str 44 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) RSHIFT (\d+) -> (\w+)") 45 | 46 | def export_prolog(self, f): 47 | f.write(f"wire({self.output}, X) :- wire({self.left}, A), X is A >> {self.right}.\n") 48 | 49 | @dataclass 50 | class NotRule: 51 | input: str 52 | output: str 53 | regex: ClassVar[re.Pattern[str]] = re.compile(r"NOT (\w+) -> (\w+)") 54 | 55 | def export_prolog(self, f): 56 | f.write(f"wire({self.output}, X) :- wire({self.input}, A), X is \\ A.\n") 57 | 58 | @dataclass 59 | class AliasRule: 60 | input: str 61 | output: str 62 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) -> (\w+)") 63 | 64 | def export_prolog(self, f): 65 | try: 66 | input = int(self.input) 67 | f.write(f"wire({self.output}, {input}).\n") 68 | except: 69 | f.write(f"wire({self.output}, X) :- wire({self.input}, X).\n") 70 | 71 | def main(): 72 | with open("input") as f: 73 | lines = f.readlines() 74 | 75 | rules = map(parse_line, lines) 76 | 77 | with open("wires.pl", "w") as f: 78 | f.write(":- use_module(library(tabling)).\n:- table wire/2.\n") 79 | for rule in rules: 80 | rule.export_prolog(f) 81 | 82 | def parse_line(line): 83 | if matches := AndRule.regex.match(line): 84 | return AndRule(left=matches.group(1), right=matches.group(2), output=matches.group(3)) 85 | elif matches := OrRule.regex.match(line): 86 | return OrRule(left=matches.group(1), right=matches.group(2), output=matches.group(3)) 87 | elif matches := LShiftRule.regex.match(line): 88 | return LShiftRule(left=matches.group(1), right=int(matches.group(2)), output=matches.group(3)) 89 | elif matches := RShiftRule.regex.match(line): 90 | return RShiftRule(left=matches.group(1), right=int(matches.group(2)), output=matches.group(3)) 91 | elif matches := NotRule.regex.match(line): 92 | return NotRule(input=matches.group(1), output=matches.group(2)) 93 | elif matches := AliasRule.regex.match(line): 94 | return AliasRule(input=matches.group(1), output=matches.group(2)) 95 | else: 96 | raise Exception("Can't parse") 97 | 98 | if __name__ == "__main__": 99 | main() 100 | -------------------------------------------------------------------------------- /day7/main.z3.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from typing import ClassVar 3 | import re 4 | from z3 import * 5 | 6 | @dataclass 7 | class AndRule: 8 | left: str 9 | right: str 10 | output: str 11 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) AND (\w+) -> (\w+)") 12 | 13 | def export_z3(self, solver): 14 | try: 15 | left = int(self.left) 16 | except: 17 | left = BitVec(self.left, 16) 18 | 19 | right = BitVec(self.right, 16) 20 | output = BitVec(self.output, 16) 21 | solver.add(left & right == output) 22 | 23 | @dataclass 24 | class OrRule: 25 | left: str 26 | right: str 27 | output: str 28 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) OR (\w+) -> (\w+)") 29 | 30 | def export_z3(self, solver): 31 | left = BitVec(self.left, 16) 32 | right = BitVec(self.right, 16) 33 | output = BitVec(self.output, 16) 34 | solver.add(left | right == output) 35 | 36 | @dataclass 37 | class LShiftRule: 38 | left: str 39 | right: int 40 | output: str 41 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) LSHIFT (\d+) -> (\w+)") 42 | 43 | def export_z3(self, solver): 44 | left = BitVec(self.left, 16) 45 | output = BitVec(self.output, 16) 46 | solver.add(left << self.right == output) 47 | 48 | @dataclass 49 | class RShiftRule: 50 | left: str 51 | right: int 52 | output: str 53 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) RSHIFT (\d+) -> (\w+)") 54 | 55 | def export_z3(self, solver): 56 | left = BitVec(self.left, 16) 57 | output = BitVec(self.output, 16) 58 | solver.add(left >> self.right == output) 59 | 60 | @dataclass 61 | class NotRule: 62 | input: str 63 | output: str 64 | regex: ClassVar[re.Pattern[str]] = re.compile(r"NOT (\w+) -> (\w+)") 65 | 66 | def export_z3(self, solver): 67 | input = BitVec(self.input, 16) 68 | output = BitVec(self.output, 16) 69 | solver.add(~input == output) 70 | 71 | @dataclass 72 | class AliasRule: 73 | input: str 74 | output: str 75 | regex: ClassVar[re.Pattern[str]] = re.compile(r"(\w+) -> (\w+)") 76 | 77 | def export_z3(self, solver): 78 | try: 79 | input = int(self.input) 80 | except: 81 | input = BitVec(self.input, 16) 82 | 83 | output = BitVec(self.output, 16) 84 | solver.add(input == output) 85 | 86 | def main(): 87 | with open("input") as f: 88 | lines = f.readlines() 89 | 90 | rules = map(parse_line, lines) 91 | 92 | solver = Solver() 93 | for rule in rules: 94 | rule.export_z3(solver) 95 | 96 | if not solver.check(): 97 | raise Exception("Not solvable") 98 | 99 | model = solver.model() 100 | a = BitVec("a", 16) 101 | print(f"Value of A: {model[a]}") 102 | 103 | def parse_line(line): 104 | if matches := AndRule.regex.match(line): 105 | return AndRule(left=matches.group(1), right=matches.group(2), output=matches.group(3)) 106 | elif matches := OrRule.regex.match(line): 107 | return OrRule(left=matches.group(1), right=matches.group(2), output=matches.group(3)) 108 | elif matches := LShiftRule.regex.match(line): 109 | return LShiftRule(left=matches.group(1), right=int(matches.group(2)), output=matches.group(3)) 110 | elif matches := RShiftRule.regex.match(line): 111 | return RShiftRule(left=matches.group(1), right=int(matches.group(2)), output=matches.group(3)) 112 | elif matches := NotRule.regex.match(line): 113 | return NotRule(input=matches.group(1), output=matches.group(2)) 114 | elif matches := AliasRule.regex.match(line): 115 | return AliasRule(input=matches.group(1), output=matches.group(2)) 116 | else: 117 | raise Exception("Can't parse") 118 | 119 | if __name__ == "__main__": 120 | main() 121 | -------------------------------------------------------------------------------- /day1/input: -------------------------------------------------------------------------------- 1 | ()()(()()()(()()((()((()))((()((((()()((((()))()((((())(((((((()(((((((((()(((())(()()(()((()()(()(())(()((((()((()()()((((())((((((()(()(((()())(()((((()))())(())(()(()()))))))))((((((((((((()())()())())(())))(((()()()((((()(((()(()(()()(()(()()(()(((((((())(())(())())))((()())()((((()()((()))(((()()()())))(())))((((())(((()())(())(()))(()((((()())))())((()(())(((()((((()((()(())())))((()))()()(()(()))))((((((((()())((((()()((((()(()())(((((()(()())()))())(((()))()(()(()(()((((()(())(()))(((((()()(()()()(()(((())())(((()()(()()))(((()()(((())())(()(())())()()(())()()()((()(((()(())((()()((())()))((()()))((()()())((((()(()()(()(((()))()(()))))((()(((()()()))(()(((())()(()((()())(()(()()(()())(())()(((()(()())()((((()((()))))())()))((()()()()(())()())()()()((((()))))(()(((()()(((((((())()))()((((()((())()(()())(())()))(()(()())(((((((())))(((()))())))))()))())((())(()()((())()())()))))()((()()())(())((())((((()())())()()()(((()))())))()()))())(()()()(()((((((()()))())()))()(((()(((())((((()()()(()))())()()))))())()))())((())()())(((((())())((())())))(((())(((())(((((()(((((())(()(()())())(()(())(()))(()((((()))())()))))())))((()(()))))())))(((((())()))())()))))()))))(((()))()))))((()))((()((()(()(())()())))(()()()(())()))()((((())))))))(())(()((()()))(()))(()))(()((()))))))()()((((()()))()())()))))))()()()))(()((())(()))((()()()())()(((()((((())())))()((((()(()))))))())))()()())()))(()))))(()())()))))))((())))))))())()))()((())())))(()((()))()))(())))))(()))()())()()))((()(()))()()()()))))())()()))())(())()()))()))((()))))()()(()())))))()()()))((((()))()))))(()(())))(()())))((())())(()))()))))()())))()())()())))))))))()()))))())))((())((()))))())))(((()())))))))(()))()()))(()))()))))()())))))())((((()())))))))())))()()))))))))()))()))))()))))))(())))))))))())))))))))))))))())())((())))))))))()))((())))()))))))))())()(()))))))())))))()()()())()(()()()(()())(()))()()()(()())))())())))()))))())))))))()()()()())(())())()())()))))(()()()()()))))()))())())))((()())()())))()))()))))(()())))()))))))))(((()))()()))))))))))))))))))))(()))(()((()))())))())(()))(()(()(())))))()(()))()))()()))))))))))))()((()())(())())()(())))))())()())((()()))))(()()))))())()(())()))))))))))))))))))))()))(()(()())))))))()()((()))()))))))((())))()))))))))((()))())()()))())()()))((()))())))))))))))(()())()))(())((()(()()))(()())(())))()())(()(())()()))))()))()(()))))))(()))))))))))(()))())))))))))())))))())))(())))))()))))(())())))))))))()(()))))()())))())(()))()())))))))))))))())()()))))()))))))())))))()))))(())(()()()()((())()))())(()))((())()))())())(())(()()))))()))(())()()((())(())))(())))()))())))))))))()(((((())())))(())()))))(())))((()))()(((((((()))))()()))(())))))()(()))))(()()))()))())))))))(()())()))))))))())))(()))())()))(())()((())())()())())(()(()))))()))))))((()())(())()()(()())))()()))(())(())(()))())))()))(()))()()))((((()))))()))((()()()))))()))()))())))(()))()))))(())))()))())()(()))()())))())))))))())))())))()()))))))(()))())())))()))()()())())))))))))))))())))()))(()()))))())))())()(())))())))))))))))))))))()()())())))))()()()((()(()))()()(())()())()))()))))()()()))))))((()))))))))()(()(()((((((()()((()())))))))))))()))())))))((())())(()))())))())))))())()()())(())))())))()())())(())))))))()()(())))()))())))())())())()))))))))()))(()()()())())())))(())())))))))()()())()))))())))())()(())())))))))()())()))(()()(())())))()(()((()()((()()(((((())(()())()))(())()))(())))(())))))))()))()))((()))()))()))))))))()))))))))((()()())(()))(((()))(())))()))((())(((())))()())))())))))((())))))(())())((((((())())()(()))()(()((()())))((())()(()(()))))(())(()()())(())))())((()(((())())))(((()())())))())()(())())((((()()))))())((()))()()()()(())(((((((()()()((()))())(()())))(())())((((()()(()))))()((())))((())()))()(((()))())))()))((()(()))(())(()((((())((((()()(()()))(((())(()))))((((()(()))(())))))((()))(()))((()(((()(()))(()(()((()(())(()(()(()(()()((()))())(((())(()(()))))(()))()()))(())))(())()(((())(()))()((((()()))))())(()))))((())()((((()(((()))())())(((()))()())((())(())())(())()(())()(()()((((((()()))))()()(((()()))))()())()(((()(()))(()(()())(()(()))))(((((()(((())())))))(((((()((()()((())())((((((()(())(()()((()()()()()()()(()()))()(((()))()))(((((((())(((()((()())()((((())(((()(())))()((()(()()()((())((()())()))()))())))())((((((()))(()(()()()))(()((()(()(()))()((()(((()()()((())(((((())()(()))())())((()(())))(()(()())(())((())())())(((()()()(())))))())(()))))))()))))))())((()()()))((()((((((()))(((()((((()()()(((()))())()(()()(((()((()()()()())()()))()()()(()(())((()))))(()))())))))))()(()()(((((())()(()(((((()((()(()()())(()((((((((()((((((())()((((()()()((()((()((((((()))((())))))))())()))((()(()))()(()()(()((())((()()((((((((((((()())(()()()))((((()((((((())(()))())(()()((()()))()(((((((()((()()((((((()(((())))((())))((((((((()()(((((((())(((((()())(((())((())()((((()(((((((()(()(((()((((((()(((()(((((((((((()()((()()(()))((()()(((()(((())))((((())()(()(((())()(()(((())(((((((((((()))())))((((((())((()()((((()())())((((()()))((())(((((()(()()(()()()((())(()((()()((((()(((((()((()(()((((()())((((((()(((((()()(()(()((((())))(())(())(())((((()(()()((((()((((()()((()((((((())))(((((()))))()))(()((((((((()(((())())(((())))(()(()((())(((()((()()(((((()((()()(((())()(()))(((((((())(()(((((()))((()((()((()))(())())((((()((((())()(()))(((()(((((((((((((((())(((((((((()))(((()(()()()()((((((()((())()((((((((()(())(((((((((((()(()((())()((()()(()(()()((((()()((())(()((()()(()()((((()(((((((())))((((())(())()(((()()((()()((((()((()(((()((())(((()()()((((()((((()()(()(()((((((((())(()(((((())(()())(((((((()())()(()((((()((())(()()())((((()()(((()((((())(())(()()(((((((((()()))()(((())(()(()((((((())(()()())(()))()()(((()(((()((())(()(((((((()(()(()((()(((((()(()((()(()((((((()((((()()((((()(((()((())(()(()((()()((((()()(())()(())(((())(()((((((((()())(((((((((()(())()((((())))()))()()(((((()()((((((())(()()(((()(()(((((((()(()(((((((())(())((((()((()(())))((((()()())(()))((()())((((()(((((()(()(())(()(()()())(((((()(((((()((((()()((((((((()()))(()((((((())((((())()(()(((()()()(((()(()(())(())(((((()(())())((((())(())(()(((()(((((())((((())())((()(((((((()(((())(()(()))(((((((((()((()((()()(()((((())(((()((())((((())(()(((()(((()(()((((()(((())(()(((()(()()(()(()((()()(()())(())())((()(()(((()(((()(((()()(((((((((()(((((((((()()(((()(((()())((((()(()(((()()()((())((((((((((())(()(((()((((()())((((()((()))(((()()()(((((()(((((((())((()())(()((((())((((((((())(()((()((((((((((()()((()((()()))(((()())()())()(((()())()()(()(()(((((((())()))(())()))())()()((())()((()((((()((()((())(((((()((((((()(())))(()))())(((()))((()()(()(((()))((((())()(((()))))()(()(())()(((((())(()(()(())(())()((()()()((((()(())((()())(()(()))(()(()(()()(())()()(()((())()((()))))()))((()(()()()()((()())(()))())()(()(((((((((())())((()((()((((((())()((((())(((())((()(()()()((())(()((())(((()((((()()((()(()(((((())()))()((((((()))((())(((()()))(((())(())()))(((((((())(())())()(())(((((()))()((()))()(()()((()()()()()())((((((( -------------------------------------------------------------------------------- /day7/input: -------------------------------------------------------------------------------- 1 | lf AND lq -> ls 2 | iu RSHIFT 1 -> jn 3 | bo OR bu -> bv 4 | gj RSHIFT 1 -> hc 5 | et RSHIFT 2 -> eu 6 | bv AND bx -> by 7 | is OR it -> iu 8 | b OR n -> o 9 | gf OR ge -> gg 10 | NOT kt -> ku 11 | ea AND eb -> ed 12 | kl OR kr -> ks 13 | hi AND hk -> hl 14 | au AND av -> ax 15 | lf RSHIFT 2 -> lg 16 | dd RSHIFT 3 -> df 17 | eu AND fa -> fc 18 | df AND dg -> di 19 | ip LSHIFT 15 -> it 20 | NOT el -> em 21 | et OR fe -> ff 22 | fj LSHIFT 15 -> fn 23 | t OR s -> u 24 | ly OR lz -> ma 25 | ko AND kq -> kr 26 | NOT fx -> fy 27 | et RSHIFT 1 -> fm 28 | eu OR fa -> fb 29 | dd RSHIFT 2 -> de 30 | NOT go -> gp 31 | kb AND kd -> ke 32 | hg OR hh -> hi 33 | jm LSHIFT 1 -> kg 34 | NOT cn -> co 35 | jp RSHIFT 2 -> jq 36 | jp RSHIFT 5 -> js 37 | 1 AND io -> ip 38 | eo LSHIFT 15 -> es 39 | 1 AND jj -> jk 40 | g AND i -> j 41 | ci RSHIFT 3 -> ck 42 | gn AND gp -> gq 43 | fs AND fu -> fv 44 | lj AND ll -> lm 45 | jk LSHIFT 15 -> jo 46 | iu RSHIFT 3 -> iw 47 | NOT ii -> ij 48 | 1 AND cc -> cd 49 | bn RSHIFT 3 -> bp 50 | NOT gw -> gx 51 | NOT ft -> fu 52 | jn OR jo -> jp 53 | iv OR jb -> jc 54 | hv OR hu -> hw 55 | 19138 -> b 56 | gj RSHIFT 5 -> gm 57 | hq AND hs -> ht 58 | dy RSHIFT 1 -> er 59 | ao OR an -> ap 60 | ld OR le -> lf 61 | bk LSHIFT 1 -> ce 62 | bz AND cb -> cc 63 | bi LSHIFT 15 -> bm 64 | il AND in -> io 65 | af AND ah -> ai 66 | as RSHIFT 1 -> bl 67 | lf RSHIFT 3 -> lh 68 | er OR es -> et 69 | NOT ax -> ay 70 | ci RSHIFT 1 -> db 71 | et AND fe -> fg 72 | lg OR lm -> ln 73 | k AND m -> n 74 | hz RSHIFT 2 -> ia 75 | kh LSHIFT 1 -> lb 76 | NOT ey -> ez 77 | NOT di -> dj 78 | dz OR ef -> eg 79 | lx -> a 80 | NOT iz -> ja 81 | gz LSHIFT 15 -> hd 82 | ce OR cd -> cf 83 | fq AND fr -> ft 84 | at AND az -> bb 85 | ha OR gz -> hb 86 | fp AND fv -> fx 87 | NOT gb -> gc 88 | ia AND ig -> ii 89 | gl OR gm -> gn 90 | 0 -> c 91 | NOT ca -> cb 92 | bn RSHIFT 1 -> cg 93 | c LSHIFT 1 -> t 94 | iw OR ix -> iy 95 | kg OR kf -> kh 96 | dy OR ej -> ek 97 | km AND kn -> kp 98 | NOT fc -> fd 99 | hz RSHIFT 3 -> ib 100 | NOT dq -> dr 101 | NOT fg -> fh 102 | dy RSHIFT 2 -> dz 103 | kk RSHIFT 2 -> kl 104 | 1 AND fi -> fj 105 | NOT hr -> hs 106 | jp RSHIFT 1 -> ki 107 | bl OR bm -> bn 108 | 1 AND gy -> gz 109 | gr AND gt -> gu 110 | db OR dc -> dd 111 | de OR dk -> dl 112 | as RSHIFT 5 -> av 113 | lf RSHIFT 5 -> li 114 | hm AND ho -> hp 115 | cg OR ch -> ci 116 | gj AND gu -> gw 117 | ge LSHIFT 15 -> gi 118 | e OR f -> g 119 | fp OR fv -> fw 120 | fb AND fd -> fe 121 | cd LSHIFT 15 -> ch 122 | b RSHIFT 1 -> v 123 | at OR az -> ba 124 | bn RSHIFT 2 -> bo 125 | lh AND li -> lk 126 | dl AND dn -> do 127 | eg AND ei -> ej 128 | ex AND ez -> fa 129 | NOT kp -> kq 130 | NOT lk -> ll 131 | x AND ai -> ak 132 | jp OR ka -> kb 133 | NOT jd -> je 134 | iy AND ja -> jb 135 | jp RSHIFT 3 -> jr 136 | fo OR fz -> ga 137 | df OR dg -> dh 138 | gj RSHIFT 2 -> gk 139 | gj OR gu -> gv 140 | NOT jh -> ji 141 | ap LSHIFT 1 -> bj 142 | NOT ls -> lt 143 | ir LSHIFT 1 -> jl 144 | bn AND by -> ca 145 | lv LSHIFT 15 -> lz 146 | ba AND bc -> bd 147 | cy LSHIFT 15 -> dc 148 | ln AND lp -> lq 149 | x RSHIFT 1 -> aq 150 | gk OR gq -> gr 151 | NOT kx -> ky 152 | jg AND ji -> jj 153 | bn OR by -> bz 154 | fl LSHIFT 1 -> gf 155 | bp OR bq -> br 156 | he OR hp -> hq 157 | et RSHIFT 5 -> ew 158 | iu RSHIFT 2 -> iv 159 | gl AND gm -> go 160 | x OR ai -> aj 161 | hc OR hd -> he 162 | lg AND lm -> lo 163 | lh OR li -> lj 164 | da LSHIFT 1 -> du 165 | fo RSHIFT 2 -> fp 166 | gk AND gq -> gs 167 | bj OR bi -> bk 168 | lf OR lq -> lr 169 | cj AND cp -> cr 170 | hu LSHIFT 15 -> hy 171 | 1 AND bh -> bi 172 | fo RSHIFT 3 -> fq 173 | NOT lo -> lp 174 | hw LSHIFT 1 -> iq 175 | dd RSHIFT 1 -> dw 176 | dt LSHIFT 15 -> dx 177 | dy AND ej -> el 178 | an LSHIFT 15 -> ar 179 | aq OR ar -> as 180 | 1 AND r -> s 181 | fw AND fy -> fz 182 | NOT im -> in 183 | et RSHIFT 3 -> ev 184 | 1 AND ds -> dt 185 | ec AND ee -> ef 186 | NOT ak -> al 187 | jl OR jk -> jm 188 | 1 AND en -> eo 189 | lb OR la -> lc 190 | iu AND jf -> jh 191 | iu RSHIFT 5 -> ix 192 | bo AND bu -> bw 193 | cz OR cy -> da 194 | iv AND jb -> jd 195 | iw AND ix -> iz 196 | lf RSHIFT 1 -> ly 197 | iu OR jf -> jg 198 | NOT dm -> dn 199 | lw OR lv -> lx 200 | gg LSHIFT 1 -> ha 201 | lr AND lt -> lu 202 | fm OR fn -> fo 203 | he RSHIFT 3 -> hg 204 | aj AND al -> am 205 | 1 AND kz -> la 206 | dy RSHIFT 5 -> eb 207 | jc AND je -> jf 208 | cm AND co -> cp 209 | gv AND gx -> gy 210 | ev OR ew -> ex 211 | jp AND ka -> kc 212 | fk OR fj -> fl 213 | dy RSHIFT 3 -> ea 214 | NOT bs -> bt 215 | NOT ag -> ah 216 | dz AND ef -> eh 217 | cf LSHIFT 1 -> cz 218 | NOT cv -> cw 219 | 1 AND cx -> cy 220 | de AND dk -> dm 221 | ck AND cl -> cn 222 | x RSHIFT 5 -> aa 223 | dv LSHIFT 1 -> ep 224 | he RSHIFT 2 -> hf 225 | NOT bw -> bx 226 | ck OR cl -> cm 227 | bp AND bq -> bs 228 | as OR bd -> be 229 | he AND hp -> hr 230 | ev AND ew -> ey 231 | 1 AND lu -> lv 232 | kk RSHIFT 3 -> km 233 | b AND n -> p 234 | NOT kc -> kd 235 | lc LSHIFT 1 -> lw 236 | km OR kn -> ko 237 | id AND if -> ig 238 | ih AND ij -> ik 239 | jr AND js -> ju 240 | ci RSHIFT 5 -> cl 241 | hz RSHIFT 1 -> is 242 | 1 AND ke -> kf 243 | NOT gs -> gt 244 | aw AND ay -> az 245 | x RSHIFT 2 -> y 246 | ab AND ad -> ae 247 | ff AND fh -> fi 248 | ci AND ct -> cv 249 | eq LSHIFT 1 -> fk 250 | gj RSHIFT 3 -> gl 251 | u LSHIFT 1 -> ao 252 | NOT bb -> bc 253 | NOT hj -> hk 254 | kw AND ky -> kz 255 | as AND bd -> bf 256 | dw OR dx -> dy 257 | br AND bt -> bu 258 | kk AND kv -> kx 259 | ep OR eo -> eq 260 | he RSHIFT 1 -> hx 261 | ki OR kj -> kk 262 | NOT ju -> jv 263 | ek AND em -> en 264 | kk RSHIFT 5 -> kn 265 | NOT eh -> ei 266 | hx OR hy -> hz 267 | ea OR eb -> ec 268 | s LSHIFT 15 -> w 269 | fo RSHIFT 1 -> gh 270 | kk OR kv -> kw 271 | bn RSHIFT 5 -> bq 272 | NOT ed -> ee 273 | 1 AND ht -> hu 274 | cu AND cw -> cx 275 | b RSHIFT 5 -> f 276 | kl AND kr -> kt 277 | iq OR ip -> ir 278 | ci RSHIFT 2 -> cj 279 | cj OR cp -> cq 280 | o AND q -> r 281 | dd RSHIFT 5 -> dg 282 | b RSHIFT 2 -> d 283 | ks AND ku -> kv 284 | b RSHIFT 3 -> e 285 | d OR j -> k 286 | NOT p -> q 287 | NOT cr -> cs 288 | du OR dt -> dv 289 | kf LSHIFT 15 -> kj 290 | NOT ac -> ad 291 | fo RSHIFT 5 -> fr 292 | hz OR ik -> il 293 | jx AND jz -> ka 294 | gh OR gi -> gj 295 | kk RSHIFT 1 -> ld 296 | hz RSHIFT 5 -> ic 297 | as RSHIFT 2 -> at 298 | NOT jy -> jz 299 | 1 AND am -> an 300 | ci OR ct -> cu 301 | hg AND hh -> hj 302 | jq OR jw -> jx 303 | v OR w -> x 304 | la LSHIFT 15 -> le 305 | dh AND dj -> dk 306 | dp AND dr -> ds 307 | jq AND jw -> jy 308 | au OR av -> aw 309 | NOT bf -> bg 310 | z OR aa -> ab 311 | ga AND gc -> gd 312 | hz AND ik -> im 313 | jt AND jv -> jw 314 | z AND aa -> ac 315 | jr OR js -> jt 316 | hb LSHIFT 1 -> hv 317 | hf OR hl -> hm 318 | ib OR ic -> id 319 | fq OR fr -> fs 320 | cq AND cs -> ct 321 | ia OR ig -> ih 322 | dd OR do -> dp 323 | d AND j -> l 324 | ib AND ic -> ie 325 | as RSHIFT 3 -> au 326 | be AND bg -> bh 327 | dd AND do -> dq 328 | NOT l -> m 329 | 1 AND gd -> ge 330 | y AND ae -> ag 331 | fo AND fz -> gb 332 | NOT ie -> if 333 | e AND f -> h 334 | x RSHIFT 3 -> z 335 | y OR ae -> af 336 | hf AND hl -> hn 337 | NOT h -> i 338 | NOT hn -> ho 339 | he RSHIFT 5 -> hh 340 | -------------------------------------------------------------------------------- /day7/input2: -------------------------------------------------------------------------------- 1 | lf AND lq -> ls 2 | iu RSHIFT 1 -> jn 3 | bo OR bu -> bv 4 | gj RSHIFT 1 -> hc 5 | et RSHIFT 2 -> eu 6 | bv AND bx -> by 7 | is OR it -> iu 8 | b OR n -> o 9 | gf OR ge -> gg 10 | NOT kt -> ku 11 | ea AND eb -> ed 12 | kl OR kr -> ks 13 | hi AND hk -> hl 14 | au AND av -> ax 15 | lf RSHIFT 2 -> lg 16 | dd RSHIFT 3 -> df 17 | eu AND fa -> fc 18 | df AND dg -> di 19 | ip LSHIFT 15 -> it 20 | NOT el -> em 21 | et OR fe -> ff 22 | fj LSHIFT 15 -> fn 23 | t OR s -> u 24 | ly OR lz -> ma 25 | ko AND kq -> kr 26 | NOT fx -> fy 27 | et RSHIFT 1 -> fm 28 | eu OR fa -> fb 29 | dd RSHIFT 2 -> de 30 | NOT go -> gp 31 | kb AND kd -> ke 32 | hg OR hh -> hi 33 | jm LSHIFT 1 -> kg 34 | NOT cn -> co 35 | jp RSHIFT 2 -> jq 36 | jp RSHIFT 5 -> js 37 | 1 AND io -> ip 38 | eo LSHIFT 15 -> es 39 | 1 AND jj -> jk 40 | g AND i -> j 41 | ci RSHIFT 3 -> ck 42 | gn AND gp -> gq 43 | fs AND fu -> fv 44 | lj AND ll -> lm 45 | jk LSHIFT 15 -> jo 46 | iu RSHIFT 3 -> iw 47 | NOT ii -> ij 48 | 1 AND cc -> cd 49 | bn RSHIFT 3 -> bp 50 | NOT gw -> gx 51 | NOT ft -> fu 52 | jn OR jo -> jp 53 | iv OR jb -> jc 54 | hv OR hu -> hw 55 | 16076 -> b 56 | gj RSHIFT 5 -> gm 57 | hq AND hs -> ht 58 | dy RSHIFT 1 -> er 59 | ao OR an -> ap 60 | ld OR le -> lf 61 | bk LSHIFT 1 -> ce 62 | bz AND cb -> cc 63 | bi LSHIFT 15 -> bm 64 | il AND in -> io 65 | af AND ah -> ai 66 | as RSHIFT 1 -> bl 67 | lf RSHIFT 3 -> lh 68 | er OR es -> et 69 | NOT ax -> ay 70 | ci RSHIFT 1 -> db 71 | et AND fe -> fg 72 | lg OR lm -> ln 73 | k AND m -> n 74 | hz RSHIFT 2 -> ia 75 | kh LSHIFT 1 -> lb 76 | NOT ey -> ez 77 | NOT di -> dj 78 | dz OR ef -> eg 79 | lx -> a 80 | NOT iz -> ja 81 | gz LSHIFT 15 -> hd 82 | ce OR cd -> cf 83 | fq AND fr -> ft 84 | at AND az -> bb 85 | ha OR gz -> hb 86 | fp AND fv -> fx 87 | NOT gb -> gc 88 | ia AND ig -> ii 89 | gl OR gm -> gn 90 | 0 -> c 91 | NOT ca -> cb 92 | bn RSHIFT 1 -> cg 93 | c LSHIFT 1 -> t 94 | iw OR ix -> iy 95 | kg OR kf -> kh 96 | dy OR ej -> ek 97 | km AND kn -> kp 98 | NOT fc -> fd 99 | hz RSHIFT 3 -> ib 100 | NOT dq -> dr 101 | NOT fg -> fh 102 | dy RSHIFT 2 -> dz 103 | kk RSHIFT 2 -> kl 104 | 1 AND fi -> fj 105 | NOT hr -> hs 106 | jp RSHIFT 1 -> ki 107 | bl OR bm -> bn 108 | 1 AND gy -> gz 109 | gr AND gt -> gu 110 | db OR dc -> dd 111 | de OR dk -> dl 112 | as RSHIFT 5 -> av 113 | lf RSHIFT 5 -> li 114 | hm AND ho -> hp 115 | cg OR ch -> ci 116 | gj AND gu -> gw 117 | ge LSHIFT 15 -> gi 118 | e OR f -> g 119 | fp OR fv -> fw 120 | fb AND fd -> fe 121 | cd LSHIFT 15 -> ch 122 | b RSHIFT 1 -> v 123 | at OR az -> ba 124 | bn RSHIFT 2 -> bo 125 | lh AND li -> lk 126 | dl AND dn -> do 127 | eg AND ei -> ej 128 | ex AND ez -> fa 129 | NOT kp -> kq 130 | NOT lk -> ll 131 | x AND ai -> ak 132 | jp OR ka -> kb 133 | NOT jd -> je 134 | iy AND ja -> jb 135 | jp RSHIFT 3 -> jr 136 | fo OR fz -> ga 137 | df OR dg -> dh 138 | gj RSHIFT 2 -> gk 139 | gj OR gu -> gv 140 | NOT jh -> ji 141 | ap LSHIFT 1 -> bj 142 | NOT ls -> lt 143 | ir LSHIFT 1 -> jl 144 | bn AND by -> ca 145 | lv LSHIFT 15 -> lz 146 | ba AND bc -> bd 147 | cy LSHIFT 15 -> dc 148 | ln AND lp -> lq 149 | x RSHIFT 1 -> aq 150 | gk OR gq -> gr 151 | NOT kx -> ky 152 | jg AND ji -> jj 153 | bn OR by -> bz 154 | fl LSHIFT 1 -> gf 155 | bp OR bq -> br 156 | he OR hp -> hq 157 | et RSHIFT 5 -> ew 158 | iu RSHIFT 2 -> iv 159 | gl AND gm -> go 160 | x OR ai -> aj 161 | hc OR hd -> he 162 | lg AND lm -> lo 163 | lh OR li -> lj 164 | da LSHIFT 1 -> du 165 | fo RSHIFT 2 -> fp 166 | gk AND gq -> gs 167 | bj OR bi -> bk 168 | lf OR lq -> lr 169 | cj AND cp -> cr 170 | hu LSHIFT 15 -> hy 171 | 1 AND bh -> bi 172 | fo RSHIFT 3 -> fq 173 | NOT lo -> lp 174 | hw LSHIFT 1 -> iq 175 | dd RSHIFT 1 -> dw 176 | dt LSHIFT 15 -> dx 177 | dy AND ej -> el 178 | an LSHIFT 15 -> ar 179 | aq OR ar -> as 180 | 1 AND r -> s 181 | fw AND fy -> fz 182 | NOT im -> in 183 | et RSHIFT 3 -> ev 184 | 1 AND ds -> dt 185 | ec AND ee -> ef 186 | NOT ak -> al 187 | jl OR jk -> jm 188 | 1 AND en -> eo 189 | lb OR la -> lc 190 | iu AND jf -> jh 191 | iu RSHIFT 5 -> ix 192 | bo AND bu -> bw 193 | cz OR cy -> da 194 | iv AND jb -> jd 195 | iw AND ix -> iz 196 | lf RSHIFT 1 -> ly 197 | iu OR jf -> jg 198 | NOT dm -> dn 199 | lw OR lv -> lx 200 | gg LSHIFT 1 -> ha 201 | lr AND lt -> lu 202 | fm OR fn -> fo 203 | he RSHIFT 3 -> hg 204 | aj AND al -> am 205 | 1 AND kz -> la 206 | dy RSHIFT 5 -> eb 207 | jc AND je -> jf 208 | cm AND co -> cp 209 | gv AND gx -> gy 210 | ev OR ew -> ex 211 | jp AND ka -> kc 212 | fk OR fj -> fl 213 | dy RSHIFT 3 -> ea 214 | NOT bs -> bt 215 | NOT ag -> ah 216 | dz AND ef -> eh 217 | cf LSHIFT 1 -> cz 218 | NOT cv -> cw 219 | 1 AND cx -> cy 220 | de AND dk -> dm 221 | ck AND cl -> cn 222 | x RSHIFT 5 -> aa 223 | dv LSHIFT 1 -> ep 224 | he RSHIFT 2 -> hf 225 | NOT bw -> bx 226 | ck OR cl -> cm 227 | bp AND bq -> bs 228 | as OR bd -> be 229 | he AND hp -> hr 230 | ev AND ew -> ey 231 | 1 AND lu -> lv 232 | kk RSHIFT 3 -> km 233 | b AND n -> p 234 | NOT kc -> kd 235 | lc LSHIFT 1 -> lw 236 | km OR kn -> ko 237 | id AND if -> ig 238 | ih AND ij -> ik 239 | jr AND js -> ju 240 | ci RSHIFT 5 -> cl 241 | hz RSHIFT 1 -> is 242 | 1 AND ke -> kf 243 | NOT gs -> gt 244 | aw AND ay -> az 245 | x RSHIFT 2 -> y 246 | ab AND ad -> ae 247 | ff AND fh -> fi 248 | ci AND ct -> cv 249 | eq LSHIFT 1 -> fk 250 | gj RSHIFT 3 -> gl 251 | u LSHIFT 1 -> ao 252 | NOT bb -> bc 253 | NOT hj -> hk 254 | kw AND ky -> kz 255 | as AND bd -> bf 256 | dw OR dx -> dy 257 | br AND bt -> bu 258 | kk AND kv -> kx 259 | ep OR eo -> eq 260 | he RSHIFT 1 -> hx 261 | ki OR kj -> kk 262 | NOT ju -> jv 263 | ek AND em -> en 264 | kk RSHIFT 5 -> kn 265 | NOT eh -> ei 266 | hx OR hy -> hz 267 | ea OR eb -> ec 268 | s LSHIFT 15 -> w 269 | fo RSHIFT 1 -> gh 270 | kk OR kv -> kw 271 | bn RSHIFT 5 -> bq 272 | NOT ed -> ee 273 | 1 AND ht -> hu 274 | cu AND cw -> cx 275 | b RSHIFT 5 -> f 276 | kl AND kr -> kt 277 | iq OR ip -> ir 278 | ci RSHIFT 2 -> cj 279 | cj OR cp -> cq 280 | o AND q -> r 281 | dd RSHIFT 5 -> dg 282 | b RSHIFT 2 -> d 283 | ks AND ku -> kv 284 | b RSHIFT 3 -> e 285 | d OR j -> k 286 | NOT p -> q 287 | NOT cr -> cs 288 | du OR dt -> dv 289 | kf LSHIFT 15 -> kj 290 | NOT ac -> ad 291 | fo RSHIFT 5 -> fr 292 | hz OR ik -> il 293 | jx AND jz -> ka 294 | gh OR gi -> gj 295 | kk RSHIFT 1 -> ld 296 | hz RSHIFT 5 -> ic 297 | as RSHIFT 2 -> at 298 | NOT jy -> jz 299 | 1 AND am -> an 300 | ci OR ct -> cu 301 | hg AND hh -> hj 302 | jq OR jw -> jx 303 | v OR w -> x 304 | la LSHIFT 15 -> le 305 | dh AND dj -> dk 306 | dp AND dr -> ds 307 | jq AND jw -> jy 308 | au OR av -> aw 309 | NOT bf -> bg 310 | z OR aa -> ab 311 | ga AND gc -> gd 312 | hz AND ik -> im 313 | jt AND jv -> jw 314 | z AND aa -> ac 315 | jr OR js -> jt 316 | hb LSHIFT 1 -> hv 317 | hf OR hl -> hm 318 | ib OR ic -> id 319 | fq OR fr -> fs 320 | cq AND cs -> ct 321 | ia OR ig -> ih 322 | dd OR do -> dp 323 | d AND j -> l 324 | ib AND ic -> ie 325 | as RSHIFT 3 -> au 326 | be AND bg -> bh 327 | dd AND do -> dq 328 | NOT l -> m 329 | 1 AND gd -> ge 330 | y AND ae -> ag 331 | fo AND fz -> gb 332 | NOT ie -> if 333 | e AND f -> h 334 | x RSHIFT 3 -> z 335 | y OR ae -> af 336 | hf AND hl -> hn 337 | NOT h -> i 338 | NOT hn -> ho 339 | he RSHIFT 5 -> hh 340 | -------------------------------------------------------------------------------- /day3/input: -------------------------------------------------------------------------------- 1 | ^^<<>^^>^^^><^>v^>v><><><^^v>v^v>>>^<>v<^<^>>>>><>^>>^>v^>><<^>v>v<>^v^v^vvv><>^^>v><>^><^^^v>>^v^>v><>v^^><vv^<<>v>>><<<>>^^^vv>>>^><<<>><><^>v<>^>v<^v^><<<<>^<>v>^v>vv<^<<>>>>^^v>vv^^<>^<>^^^^<^^^vv<^^v^^>v>^v^^^^>><v<>^v^><>^^><<^^<^^>vv<>v^<^v^>^^>^<>v^^vv<>>v><<<>vvv<>v<>><^<^v<>^vv>^^v<^<>>vv<^>>^>>vv^v>^v^<>^>>>>vv>^^>v>vv>v><^vv^<^<<^^vv^^v>^>>v><^<>v<><>^^<>v>><>^^>^^>>vvv^><<<<<^<^vv<^<>^^^<<<^>^^^vv<>^<>v<^v>^<<>^v<>>v<<^<^<<<><><>^>>>>^>v^v<>vv<^vvv^^^^vv>^v^^v^<^vv<^vv>v<^>vv<>>^>^><^>v>^v>vvv<>^>^v<><>vv>><^v^<><>>v^v^><^<^>vv>v<^>vvv>v<<<<<^>^vv>^><><>^<v^>^><><>>^>^>><^^^>^^>^^v^^<^v^^>v^^>>><<><><>^^<<^^v^>v>><>^^^><^vvv<^^^^^v><<><><>>^>vv>>^vv^^><v<^^>^<^^<^>>>^v<>v<^^^>vvv^v<<^><>>>>v>>>^^vvv^vvv<^^^^v^v^^<<^>v^v^<<><>><^v><<>><<<>^v>v<>^^vv>>^<>v^^<<^v>>v<>>^v^^>><^>v^<^v^^>><>v^>^v^v<<v<><>vv>>>>^>v<>v<<<>^^>vv^v<>^<<<<>>^^>^v<>^v<>>^v^<<^<^>>>^vv<>v^>>v<^^v>>^>><<><<<>>>^v>><^^vv>><>v^><>vv<^^v^^^v<>><^vvv<<^<>v>>>v>><>>><>>^v>v>^^<^>^>v><>vv>^v><<>>>>>>>^<<^vv^^vvvv<^^><<vvv<>^><v<>>^^<<^^vv>v>^vv>>^v^^vvvv>^^>>v^v^^><<^>v>>^^>^<^^<>vvv^vv>v>^v<><^vv^>^v>>>^^<^<^>^v^>^>>>^v>^>^^^>>^<>v^^<>^v<<^^>^^v<^v^>><^v^>^<>>^vv^vv^>v^><^^<^v<^><>v><^v^v^^^v>v^<>^<^^>^v^^<>v^<<>>vv<>>>>v>v<>^>>>v<>^^>^<^><>^><><>^<<>>><<^>^vv^v>>vv^<<^^<<><<^v^>>>v<<<v>^vv<^v>v<^>^^vv>v>><>><>^<>><><<^<<^v^v<v>vvv<^v^^^v^><^v>^<^>^<<>v^<><>>^v<>vvv<^>><^^>^>^v^vv<^><<^v>><^^v>^v<>^>vvvv><^>^<<>v>^>>^<^<<<^v^^^>^>>^>><><<^>v^^>v<<<^>vvv^^<<><^v^v^^^>^^>^vv<>v>>v^>vv^vv>v<^v^^>>^v^v<>>^^><><>>>^>^<>^^v^^><^<>><<^>vv^>>>v<<><<^>vv>vvv>^<><>>>>vv><<><<<<>><v>v^><>v^v^^><>v>v>^^v<^v<>>^^^^^>^^>v<^<^>>>^><^^>><<>>^><>^^^>v^^^>^^v^<>^^><^>>><><^>>vv<^>v<^v>v^<^vv^^><<<><><^v^v>v^>>^^vv^^v>^<^v<>^>^><^^v><^<^<>v^^>^><>>><<<><>v<<^v^^<^><>^<><>v<^^>^^<<>>^><^><^<^>^^v<>v>>><><<>^>v><><<<>^^^v>><<^v>^>>>>^vv<^<>>^<^^<^v>v^<<^<<<<<^<^>>^><<>><>v^v>^<^>v^<>^v^v^v><^vv<<^<>^^^<>^v>^v<>>^>v<<>v<>v^v>v<<<>>v>vv>>v<<>v<>v<^>^>^>v>^>^^^v<<>>>^vvv^^>^^<^vv^^^^>v>^v^>v^^v^>>^v>^vv>^^v^<<<<>^<><^<^<<^^>v^^^v<>>vvv>vv>^<^v>>^v<^^v^v>v<>^v<<<^^v^^^<^v>v^v^v>>v<>^v>vv^v>vv<<^v^v>v>><^vv>>>><<<><>^v^<^vvv>v<>><^v>^>>vv<><><>v><>>><^>vv>>^<>v^>>^><<<^><<>^v^>>><><>vv>^<>^>^v^^><^>>><<>v^<^vv>^<^vv>>vv<><<^><>v<^^<^>vv^^^^vv<<>vv<>v<>>>>^><>^<><>v<>><<>^^vvv>^^^<><>>vvv^v>><>vv^^^v^<<>^^v<><<^^v<>^^>^<^^v>>v^v^^>>v>>>^<<^<>^>^^v>>>>^v<<<^^vv><^>vv<>>vv^>v>>v^vvv^^>vv^<v^>>v^<>>><><<^^<^v>^>>>v>v>^v<>vv>v>^v<<<>><<><><>v^>>>v^>v^>>vv^^^<>>><^>v^<>^^>v<><<<>v^v>^>v<^<>v>v^^>>v>vv^v<>>^^^^<>v^>>>>>>>>^v<^<<>>><<<^<<^>^>v^<>^<<<>v>><^vv^>^>^>>>^v<<>^>^v^><>>v^>v^>^>>v<>vv^v<<>^^>>vv<>vv>>^v<^vv>^v>v<>v^<><>v^^><<<><>^>^v^<>>v^v>v<>>^^<<^<^^vv^<>>^vv^<>>^^^^v>v><^^^v^<<<>^<^<<>><>>v<<^v^>><>>^vv^v>vv>>>>>>^^<<>v^>v^v>^^>>>^v>>^^^<>><>v^<<v>v^^^>^v>^v<^<<><>vv>^^^<^^vv^^>vv>v<<^>^vv><^>^^^^v<v^<<^^>>^^vvvv^v^>vv>>v^vvv<>>^><>>v^^>>^<>>vvvv^>>>v<<^<<^>v^>><<v>v^>^v><>v<<>vv>>><^>>^^v>^>><>vv^><<>>vv<<<^<^^>^<<^>>>>>v>vv<^>^v><>>vv^vvvv>v^>>v><<^^^v>>vv^^>v>^v>^v^^>^<^vvvv<<^>>^<<^^>>^<^>v^><^vv>^^v>>><>v^v>^v<^><<<>vv>v<><>>v^<>^^>^<>^<<^>>vv^><^>v^>>v^>v>vv><>>v<^>><<vvv^vvv^vv^>^>v>>>>vv^>^<>v<^>^<^v>vv<^<<>>^<^<^^<>^<v<<>v>><^v<<^vvv>v>v<<^^<^^>v^^^>^>vv^^^vv>v<>>>vv>><><^><><<>vv>vv^v^>>><>v>>vv>^^vvv^>^^>^>^>^v<<^vv^>vvv^^vv><^>^v^>^><>v<^^vv<^<>>^^v^v>v^vv<>><^v>^<^v>^<>^v>>>><>>>v><^v^vv><<^v<<>^^<^v>vvv<><^^><<^v><>^<^v<^^<^vvvv^^>>>>vv>v>>>v<<<>v^>>vv^vvv<>vvv>>>><>>><>^v>><>>^vv<<^^vv><^v^vv^^^vv>^><^vvv<<>^vvv^>>>^<<<><<<<<^v<^^>>>>^>^v<<<^<^>>v^<<><<^^vvv^>v<>>^^>v>^v>>v>>>^<^<^>v^v^>><>^<<^vvv^^<>^v^>^^<<^>^vv>>v^v^>v>^<^^<>^>^>>>^^vvv^<<>v^<<>><>v<^<^>v^>^vv>^>>^<^v^<<<<^v^>v^><<<><^^^^>v>^^>v><>>^><<><^<>>^^>vv<^><^v^>>>vvv<^<>>^>>^v^<^^v>^^^v<^vv^>>^v><<^<><>>^>vv<<>^^^v^^><>>vv>v^>vvv^^v>^>>^>>v^<<v^<^v^vv^><^<^v<v>^v^<<^^>>^^^v>>>><^^v^>>^^>>^v^<^v>v^v^v^v^>v^vv<><>^^<>^><^^^<<<^v<<>^<^^^^^v^<^<<^^>^vv<>v^>><>>^>v>v<>^>v>><>^<>>>^>^>>v^>v><^vv^>v<v<><^><^v<<>v<>^^><<>v>vv<^vvv><><>vv^<<>^>^<^>>>^v>v<^v^^^vv<>>>^<<^>>><<^^v^>v^<^v>vvv>v^^vv>^^>>v<>^<<>^<><^^v^>><>^>v>>^^^<<^^v<>^^>^<>^>><^>^vvv><^>^<^>^>>vv<^>>^v>>^<>>^^>>>v^>v<>v^^vv>v><^v^^>v<<>v^^<><>^>vvv><^^^>^v^>v>>^vvv<^vv>^^>^>>v<>><<^v<^><>vv^<<^^vv>>^<^><^^v^<<>^v^^>v^>>^^^<^vv>v^>>>vv<<>v>>>^>v^^>v^<<>>vv<<^v>v<<^^>v>>v>v^>>^>>v>^><<^<<>^v>><^^<^<<^>vv<<>^<>^vv>^^^v<^v>vv>^^^^>v>v><<^<<<^vv><^<<<>>v<v>^v^v^<^<^vv>vvv<^^v<>v<<<<>v^<<><<<>v<^>^^v<^^v^>vv>vvv>v>>^><^>>v<v<<^^^v<<^v^^><><<<><<>v>^<<>v<<<^v>>v>><<^<><^v^^v^>^>vvvv<<><<>>^^^>v>v^><>>><^><<><<<^<>v^>>^v^>v^<>>v>^^><^<^v^>v>^vvv<>>v<>^vvvv><<<<<<<v<<<<^v<<><^<<>vv^<<>><^^<<>>>vv>>>>>>^v>v^v^^><<^v^^^<>^>>><>v^v^vvv^>>v>>>^^<<^^vv><<<^^^<<<^^>>>>vvv^v<^>^^>v<^<>v>>>^vv<<^^v^>^>^v>v>v^v^>v<><>>>>><<^v^<>^v<>vvv^>v>v^<><><>^>>><>^>^^<>v^^>^><>><>v^v^^v>>>>vv>>^v<<^v^<>^>v^^>^^<^><<<^^^v^^^^v<^<>v<^^<>vv^^v^<>^<<^>>v>v<<<^^^^vvv^<^<><>v<>><<><<^^^^vv><<>>>^v<<>^>>>v^>v>^^<>^<^>v>^>>>><>^^>v^^v>^vv^^v^><<<>>v<>v<<<>^<^<<>v>>>>^<vvv<^><^<<^>v>>v><>^>>>^v^v>v^^vv^>^<^^>>^><^vv^^vv^<>>^^^^<^^><>>^>>^>^vvv<^<^><>>>^^<><><<>>>>^<<>>>^<^v^>><<^>>>^<^>><>^^<>^v^^vv<><^>vv^^v^<^^^v^vvv^>><>>v<>^<^vvv<<^^>vv^^<<>>><^^vvv<<<^>^<><^>vv^><^<<>vv<>vv>v>v^<<>^^^^v^^^^^<<^><><^^v^>v>^>><^><<>v^>>^vvv>>^<^<>^^v^vv^^v><>>v<<<>v>^<>v<<>v^>^<<><<>v^>v<><^^>^<^v^^><^>vv>^>vvvv>^^><<>vv^>^v<<^<<^<<>vv>>^>>>>>v^v<^v>v>^^^vv^v<^<>v><>>vv>v><>v>^v<><<<<<>v^vv<<<<^<>^>><>^^vv>^<^<<>vv>>vv><>><^^><^<>^><>v^^^^v^^vv<>v<>v>^vv^>^<>^^^>v^>>>v><<^>>v<^v<>^^v<><<>v<^<^>v<>v^>v>^^<<<^^vv^<><<<>>v>^^<>v>>>><<>v^v<>v>><<<<^<<^>^>v^vv^><^v^^<>^^><>vv>^>vvv<^v^>>^>^>^^<<^>^>^v><>>^<^^v>^>>^^<><>>>^^>^^vvv>v<^^<>v^v^^v^v>><<^^^>>v>^vv>^>^^v<>^^<>v^^<>v^><<>vv<<^vvvv><<v>v^>v^<>v^>^^<>^>^^v<>><<<>^v^^v^v<<<^v^<>^<>v>^^>vv>^^<<<><<^>v<^^<^<<>^>>>>>^v^v<vvv<<>v>v>>^v^v^>><<<<>v^<<>>>^>>^>>< -------------------------------------------------------------------------------- /day6/input: -------------------------------------------------------------------------------- 1 | turn off 660,55 through 986,197 2 | turn off 341,304 through 638,850 3 | turn off 199,133 through 461,193 4 | toggle 322,558 through 977,958 5 | toggle 537,781 through 687,941 6 | turn on 226,196 through 599,390 7 | turn on 240,129 through 703,297 8 | turn on 317,329 through 451,798 9 | turn on 957,736 through 977,890 10 | turn on 263,530 through 559,664 11 | turn on 158,270 through 243,802 12 | toggle 223,39 through 454,511 13 | toggle 544,218 through 979,872 14 | turn on 313,306 through 363,621 15 | toggle 173,401 through 496,407 16 | toggle 333,60 through 748,159 17 | turn off 87,577 through 484,608 18 | turn on 809,648 through 826,999 19 | toggle 352,432 through 628,550 20 | turn off 197,408 through 579,569 21 | turn off 1,629 through 802,633 22 | turn off 61,44 through 567,111 23 | toggle 880,25 through 903,973 24 | turn on 347,123 through 864,746 25 | toggle 728,877 through 996,975 26 | turn on 121,895 through 349,906 27 | turn on 888,547 through 931,628 28 | toggle 398,782 through 834,882 29 | turn on 966,850 through 989,953 30 | turn off 891,543 through 914,991 31 | toggle 908,77 through 916,117 32 | turn on 576,900 through 943,934 33 | turn off 580,170 through 963,206 34 | turn on 184,638 through 192,944 35 | toggle 940,147 through 978,730 36 | turn off 854,56 through 965,591 37 | toggle 717,172 through 947,995 38 | toggle 426,987 through 705,998 39 | turn on 987,157 through 992,278 40 | toggle 995,774 through 997,784 41 | turn off 796,96 through 845,182 42 | turn off 451,87 through 711,655 43 | turn off 380,93 through 968,676 44 | turn on 263,468 through 343,534 45 | turn on 917,936 through 928,959 46 | toggle 478,7 through 573,148 47 | turn off 428,339 through 603,624 48 | turn off 400,880 through 914,953 49 | toggle 679,428 through 752,779 50 | turn off 697,981 through 709,986 51 | toggle 482,566 through 505,725 52 | turn off 956,368 through 993,516 53 | toggle 735,823 through 783,883 54 | turn off 48,487 through 892,496 55 | turn off 116,680 through 564,819 56 | turn on 633,865 through 729,930 57 | turn off 314,618 through 571,922 58 | toggle 138,166 through 936,266 59 | turn on 444,732 through 664,960 60 | turn off 109,337 through 972,497 61 | turn off 51,432 through 77,996 62 | turn off 259,297 through 366,744 63 | toggle 801,130 through 917,544 64 | toggle 767,982 through 847,996 65 | turn on 216,507 through 863,885 66 | turn off 61,441 through 465,731 67 | turn on 849,970 through 944,987 68 | toggle 845,76 through 852,951 69 | toggle 732,615 through 851,936 70 | toggle 251,128 through 454,778 71 | turn on 324,429 through 352,539 72 | toggle 52,450 through 932,863 73 | turn off 449,379 through 789,490 74 | turn on 317,319 through 936,449 75 | toggle 887,670 through 957,838 76 | toggle 671,613 through 856,664 77 | turn off 186,648 through 985,991 78 | turn off 471,689 through 731,717 79 | toggle 91,331 through 750,758 80 | toggle 201,73 through 956,524 81 | toggle 82,614 through 520,686 82 | toggle 84,287 through 467,734 83 | turn off 132,367 through 208,838 84 | toggle 558,684 through 663,920 85 | turn on 237,952 through 265,997 86 | turn on 694,713 through 714,754 87 | turn on 632,523 through 862,827 88 | turn on 918,780 through 948,916 89 | turn on 349,586 through 663,976 90 | toggle 231,29 through 257,589 91 | toggle 886,428 through 902,993 92 | turn on 106,353 through 236,374 93 | turn on 734,577 through 759,684 94 | turn off 347,843 through 696,912 95 | turn on 286,699 through 964,883 96 | turn on 605,875 through 960,987 97 | turn off 328,286 through 869,461 98 | turn off 472,569 through 980,848 99 | toggle 673,573 through 702,884 100 | turn off 398,284 through 738,332 101 | turn on 158,50 through 284,411 102 | turn off 390,284 through 585,663 103 | turn on 156,579 through 646,581 104 | turn on 875,493 through 989,980 105 | toggle 486,391 through 924,539 106 | turn on 236,722 through 272,964 107 | toggle 228,282 through 470,581 108 | toggle 584,389 through 750,761 109 | turn off 899,516 through 900,925 110 | turn on 105,229 through 822,846 111 | turn off 253,77 through 371,877 112 | turn on 826,987 through 906,992 113 | turn off 13,152 through 615,931 114 | turn on 835,320 through 942,399 115 | turn on 463,504 through 536,720 116 | toggle 746,942 through 786,998 117 | turn off 867,333 through 965,403 118 | turn on 591,477 through 743,692 119 | turn off 403,437 through 508,908 120 | turn on 26,723 through 368,814 121 | turn on 409,485 through 799,809 122 | turn on 115,630 through 704,705 123 | turn off 228,183 through 317,220 124 | toggle 300,649 through 382,842 125 | turn off 495,365 through 745,562 126 | turn on 698,346 through 744,873 127 | turn on 822,932 through 951,934 128 | toggle 805,30 through 925,421 129 | toggle 441,152 through 653,274 130 | toggle 160,81 through 257,587 131 | turn off 350,781 through 532,917 132 | toggle 40,583 through 348,636 133 | turn on 280,306 through 483,395 134 | toggle 392,936 through 880,955 135 | toggle 496,591 through 851,934 136 | turn off 780,887 through 946,994 137 | turn off 205,735 through 281,863 138 | toggle 100,876 through 937,915 139 | turn on 392,393 through 702,878 140 | turn on 956,374 through 976,636 141 | toggle 478,262 through 894,775 142 | turn off 279,65 through 451,677 143 | turn on 397,541 through 809,847 144 | turn on 444,291 through 451,586 145 | toggle 721,408 through 861,598 146 | turn on 275,365 through 609,382 147 | turn on 736,24 through 839,72 148 | turn off 86,492 through 582,712 149 | turn on 676,676 through 709,703 150 | turn off 105,710 through 374,817 151 | toggle 328,748 through 845,757 152 | toggle 335,79 through 394,326 153 | toggle 193,157 through 633,885 154 | turn on 227,48 through 769,743 155 | toggle 148,333 through 614,568 156 | toggle 22,30 through 436,263 157 | toggle 547,447 through 688,969 158 | toggle 576,621 through 987,740 159 | turn on 711,334 through 799,515 160 | turn on 541,448 through 654,951 161 | toggle 792,199 through 798,990 162 | turn on 89,956 through 609,960 163 | toggle 724,433 through 929,630 164 | toggle 144,895 through 201,916 165 | toggle 226,730 through 632,871 166 | turn off 760,819 through 828,974 167 | toggle 887,180 through 940,310 168 | toggle 222,327 through 805,590 169 | turn off 630,824 through 885,963 170 | turn on 940,740 through 954,946 171 | turn on 193,373 through 779,515 172 | toggle 304,955 through 469,975 173 | turn off 405,480 through 546,960 174 | turn on 662,123 through 690,669 175 | turn off 615,238 through 750,714 176 | turn on 423,220 through 930,353 177 | turn on 329,769 through 358,970 178 | toggle 590,151 through 704,722 179 | turn off 884,539 through 894,671 180 | toggle 449,241 through 984,549 181 | toggle 449,260 through 496,464 182 | turn off 306,448 through 602,924 183 | turn on 286,805 through 555,901 184 | toggle 722,177 through 922,298 185 | toggle 491,554 through 723,753 186 | turn on 80,849 through 174,996 187 | turn off 296,561 through 530,856 188 | toggle 653,10 through 972,284 189 | toggle 529,236 through 672,614 190 | toggle 791,598 through 989,695 191 | turn on 19,45 through 575,757 192 | toggle 111,55 through 880,871 193 | turn off 197,897 through 943,982 194 | turn on 912,336 through 977,605 195 | toggle 101,221 through 537,450 196 | turn on 101,104 through 969,447 197 | toggle 71,527 through 587,717 198 | toggle 336,445 through 593,889 199 | toggle 214,179 through 575,699 200 | turn on 86,313 through 96,674 201 | toggle 566,427 through 906,888 202 | turn off 641,597 through 850,845 203 | turn on 606,524 through 883,704 204 | turn on 835,775 through 867,887 205 | toggle 547,301 through 897,515 206 | toggle 289,930 through 413,979 207 | turn on 361,122 through 457,226 208 | turn on 162,187 through 374,746 209 | turn on 348,461 through 454,675 210 | turn off 966,532 through 985,537 211 | turn on 172,354 through 630,606 212 | turn off 501,880 through 680,993 213 | turn off 8,70 through 566,592 214 | toggle 433,73 through 690,651 215 | toggle 840,798 through 902,971 216 | toggle 822,204 through 893,760 217 | turn off 453,496 through 649,795 218 | turn off 969,549 through 990,942 219 | turn off 789,28 through 930,267 220 | toggle 880,98 through 932,434 221 | toggle 568,674 through 669,753 222 | turn on 686,228 through 903,271 223 | turn on 263,995 through 478,999 224 | toggle 534,675 through 687,955 225 | turn off 342,434 through 592,986 226 | toggle 404,768 through 677,867 227 | toggle 126,723 through 978,987 228 | toggle 749,675 through 978,959 229 | turn off 445,330 through 446,885 230 | turn off 463,205 through 924,815 231 | turn off 417,430 through 915,472 232 | turn on 544,990 through 912,999 233 | turn off 201,255 through 834,789 234 | turn off 261,142 through 537,862 235 | turn off 562,934 through 832,984 236 | turn off 459,978 through 691,980 237 | turn off 73,911 through 971,972 238 | turn on 560,448 through 723,810 239 | turn on 204,630 through 217,854 240 | turn off 91,259 through 611,607 241 | turn on 877,32 through 978,815 242 | turn off 950,438 through 974,746 243 | toggle 426,30 through 609,917 244 | toggle 696,37 through 859,201 245 | toggle 242,417 through 682,572 246 | turn off 388,401 through 979,528 247 | turn off 79,345 through 848,685 248 | turn off 98,91 through 800,434 249 | toggle 650,700 through 972,843 250 | turn off 530,450 through 538,926 251 | turn on 428,559 through 962,909 252 | turn on 78,138 through 92,940 253 | toggle 194,117 through 867,157 254 | toggle 785,355 through 860,617 255 | turn off 379,441 through 935,708 256 | turn off 605,133 through 644,911 257 | toggle 10,963 through 484,975 258 | turn off 359,988 through 525,991 259 | turn off 509,138 through 787,411 260 | toggle 556,467 through 562,773 261 | turn on 119,486 through 246,900 262 | turn on 445,561 through 794,673 263 | turn off 598,681 through 978,921 264 | turn off 974,230 through 995,641 265 | turn off 760,75 through 800,275 266 | toggle 441,215 through 528,680 267 | turn off 701,636 through 928,877 268 | turn on 165,753 through 202,780 269 | toggle 501,412 through 998,516 270 | toggle 161,105 through 657,395 271 | turn on 113,340 through 472,972 272 | toggle 384,994 through 663,999 273 | turn on 969,994 through 983,997 274 | turn on 519,600 through 750,615 275 | turn off 363,899 through 948,935 276 | turn on 271,845 through 454,882 277 | turn off 376,528 through 779,640 278 | toggle 767,98 through 854,853 279 | toggle 107,322 through 378,688 280 | turn off 235,899 through 818,932 281 | turn on 445,611 through 532,705 282 | toggle 629,387 through 814,577 283 | toggle 112,414 through 387,421 284 | toggle 319,184 through 382,203 285 | turn on 627,796 through 973,940 286 | toggle 602,45 through 763,151 287 | turn off 441,375 through 974,545 288 | toggle 871,952 through 989,998 289 | turn on 717,272 through 850,817 290 | toggle 475,711 through 921,882 291 | toggle 66,191 through 757,481 292 | turn off 50,197 through 733,656 293 | toggle 83,575 through 915,728 294 | turn on 777,812 through 837,912 295 | turn on 20,984 through 571,994 296 | turn off 446,432 through 458,648 297 | turn on 715,871 through 722,890 298 | toggle 424,675 through 740,862 299 | toggle 580,592 through 671,900 300 | toggle 296,687 through 906,775 -------------------------------------------------------------------------------- /day2/input: -------------------------------------------------------------------------------- 1 | 4x23x21 2 | 22x29x19 3 | 11x4x11 4 | 8x10x5 5 | 24x18x16 6 | 11x25x22 7 | 2x13x20 8 | 24x15x14 9 | 14x22x2 10 | 30x7x3 11 | 30x22x25 12 | 29x9x9 13 | 29x29x26 14 | 14x3x16 15 | 1x10x26 16 | 29x2x30 17 | 30x10x25 18 | 10x26x20 19 | 1x2x18 20 | 25x18x5 21 | 21x3x24 22 | 2x5x7 23 | 22x11x21 24 | 11x8x8 25 | 16x18x2 26 | 13x3x8 27 | 1x16x19 28 | 19x16x12 29 | 21x15x1 30 | 29x9x4 31 | 27x10x8 32 | 2x7x27 33 | 2x20x23 34 | 24x11x5 35 | 2x8x27 36 | 10x28x10 37 | 24x11x10 38 | 19x2x12 39 | 27x5x10 40 | 1x14x25 41 | 5x14x30 42 | 15x26x12 43 | 23x20x22 44 | 5x12x1 45 | 9x26x9 46 | 23x25x5 47 | 28x16x19 48 | 17x23x17 49 | 2x27x20 50 | 18x27x13 51 | 16x7x18 52 | 22x7x29 53 | 17x28x6 54 | 9x22x17 55 | 10x5x6 56 | 14x2x12 57 | 25x5x6 58 | 26x9x10 59 | 19x21x6 60 | 19x4x27 61 | 23x16x14 62 | 21x17x29 63 | 24x18x10 64 | 7x19x6 65 | 14x15x10 66 | 9x10x19 67 | 20x18x4 68 | 11x14x8 69 | 30x15x9 70 | 25x12x24 71 | 3x12x5 72 | 12x21x28 73 | 8x23x10 74 | 18x26x8 75 | 17x1x8 76 | 2x29x15 77 | 3x13x28 78 | 23x20x11 79 | 27x25x6 80 | 19x21x3 81 | 30x22x27 82 | 28x24x4 83 | 26x18x21 84 | 11x7x16 85 | 22x27x6 86 | 27x5x26 87 | 4x10x4 88 | 4x2x27 89 | 2x3x26 90 | 26x29x19 91 | 30x26x24 92 | 8x25x12 93 | 16x17x5 94 | 13x2x3 95 | 1x30x22 96 | 20x9x1 97 | 24x26x19 98 | 26x18x1 99 | 18x29x24 100 | 1x6x9 101 | 20x27x2 102 | 3x22x21 103 | 4x16x8 104 | 29x18x16 105 | 7x16x23 106 | 13x8x14 107 | 19x25x10 108 | 23x29x6 109 | 23x21x1 110 | 22x26x10 111 | 14x4x2 112 | 18x29x17 113 | 9x4x18 114 | 7x22x9 115 | 19x5x26 116 | 27x29x19 117 | 7x13x14 118 | 19x10x1 119 | 6x22x3 120 | 12x21x5 121 | 24x20x12 122 | 28x2x11 123 | 16x18x23 124 | 2x13x25 125 | 11x7x17 126 | 27x21x4 127 | 2x10x25 128 | 22x16x17 129 | 23x22x15 130 | 17x13x13 131 | 23x24x26 132 | 27x18x24 133 | 24x7x28 134 | 30x12x15 135 | 14x28x19 136 | 2x15x29 137 | 12x13x5 138 | 17x22x21 139 | 27x10x27 140 | 17x6x25 141 | 22x2x1 142 | 1x10x9 143 | 9x7x2 144 | 30x28x3 145 | 28x11x10 146 | 8x23x15 147 | 23x4x20 148 | 12x5x4 149 | 13x17x14 150 | 28x11x2 151 | 21x11x29 152 | 10x23x22 153 | 27x23x14 154 | 7x15x23 155 | 20x2x13 156 | 8x21x4 157 | 10x20x11 158 | 23x28x11 159 | 21x22x25 160 | 23x11x17 161 | 2x29x10 162 | 28x16x5 163 | 30x26x10 164 | 17x24x16 165 | 26x27x25 166 | 14x13x25 167 | 22x27x5 168 | 24x15x12 169 | 5x21x25 170 | 4x27x1 171 | 25x4x10 172 | 15x13x1 173 | 21x23x7 174 | 8x3x4 175 | 10x5x7 176 | 9x13x30 177 | 2x2x30 178 | 26x4x29 179 | 5x14x14 180 | 2x27x9 181 | 22x16x1 182 | 4x23x5 183 | 13x7x26 184 | 2x12x10 185 | 12x7x22 186 | 26x30x26 187 | 28x16x28 188 | 15x19x11 189 | 4x18x1 190 | 20x14x24 191 | 6x10x22 192 | 9x20x3 193 | 14x9x27 194 | 26x17x9 195 | 10x30x28 196 | 6x3x29 197 | 4x16x28 198 | 8x24x11 199 | 23x10x1 200 | 11x7x7 201 | 29x6x15 202 | 13x25x12 203 | 29x14x3 204 | 26x22x21 205 | 8x3x11 206 | 27x13x25 207 | 27x6x2 208 | 8x11x7 209 | 25x12x9 210 | 24x30x12 211 | 13x1x30 212 | 25x23x16 213 | 9x13x29 214 | 29x26x16 215 | 11x15x9 216 | 11x23x6 217 | 15x27x28 218 | 27x24x21 219 | 6x24x1 220 | 25x25x5 221 | 11x1x26 222 | 21x4x24 223 | 10x5x12 224 | 4x30x13 225 | 24x22x5 226 | 26x7x21 227 | 23x3x17 228 | 22x18x2 229 | 25x1x14 230 | 23x25x30 231 | 8x7x7 232 | 30x19x8 233 | 17x6x15 234 | 2x11x20 235 | 8x3x22 236 | 23x14x26 237 | 8x22x25 238 | 27x1x2 239 | 10x26x2 240 | 28x30x7 241 | 5x30x7 242 | 27x16x30 243 | 28x29x1 244 | 8x25x18 245 | 20x12x29 246 | 9x19x9 247 | 7x25x15 248 | 25x18x18 249 | 11x8x2 250 | 4x20x6 251 | 18x5x20 252 | 2x3x29 253 | 25x26x22 254 | 18x25x26 255 | 9x12x16 256 | 18x7x27 257 | 17x20x9 258 | 6x29x26 259 | 17x7x19 260 | 21x7x5 261 | 29x15x12 262 | 22x4x1 263 | 11x12x11 264 | 26x30x4 265 | 12x24x13 266 | 13x8x3 267 | 26x25x3 268 | 21x26x10 269 | 14x9x26 270 | 20x1x7 271 | 11x12x3 272 | 12x11x4 273 | 11x15x30 274 | 17x6x25 275 | 20x22x3 276 | 1x16x17 277 | 11x5x20 278 | 12x12x7 279 | 2x14x10 280 | 14x27x3 281 | 14x16x18 282 | 21x28x24 283 | 14x20x1 284 | 29x14x1 285 | 10x10x9 286 | 25x23x4 287 | 17x15x14 288 | 9x20x26 289 | 16x2x17 290 | 13x28x25 291 | 16x1x11 292 | 19x16x8 293 | 20x21x2 294 | 27x9x22 295 | 24x18x3 296 | 23x30x6 297 | 4x18x3 298 | 30x15x8 299 | 27x20x19 300 | 28x29x26 301 | 2x21x18 302 | 1x23x30 303 | 1x9x12 304 | 4x11x30 305 | 1x28x4 306 | 17x10x10 307 | 12x14x6 308 | 8x9x24 309 | 8x3x3 310 | 29x8x20 311 | 26x29x2 312 | 29x25x25 313 | 11x17x23 314 | 6x30x21 315 | 13x18x29 316 | 2x10x8 317 | 29x29x27 318 | 27x15x15 319 | 16x17x30 320 | 3x3x22 321 | 21x12x6 322 | 22x1x5 323 | 30x8x20 324 | 6x28x13 325 | 11x2x23 326 | 14x18x27 327 | 6x26x13 328 | 10x24x24 329 | 4x24x6 330 | 20x8x3 331 | 23x11x5 332 | 29x5x24 333 | 14x15x22 334 | 21x17x13 335 | 10x10x8 336 | 1x11x23 337 | 21x19x24 338 | 19x9x13 339 | 21x26x28 340 | 25x11x28 341 | 2x17x1 342 | 18x9x8 343 | 5x21x6 344 | 12x5x2 345 | 23x8x15 346 | 30x16x24 347 | 7x9x27 348 | 16x30x7 349 | 2x21x28 350 | 5x10x6 351 | 8x7x1 352 | 28x13x5 353 | 11x5x14 354 | 26x22x29 355 | 23x15x13 356 | 14x2x16 357 | 22x21x9 358 | 4x20x3 359 | 18x17x19 360 | 12x7x9 361 | 6x12x25 362 | 3x30x27 363 | 8x19x22 364 | 1x9x27 365 | 23x20x12 366 | 14x7x29 367 | 9x12x12 368 | 30x2x6 369 | 15x7x16 370 | 19x13x18 371 | 11x8x13 372 | 16x5x3 373 | 19x26x24 374 | 26x8x21 375 | 21x20x7 376 | 15x1x25 377 | 29x15x21 378 | 22x17x7 379 | 16x17x10 380 | 6x12x24 381 | 8x13x27 382 | 30x25x14 383 | 25x7x10 384 | 15x2x2 385 | 18x15x19 386 | 18x13x24 387 | 19x30x1 388 | 17x1x3 389 | 26x21x15 390 | 10x10x18 391 | 9x16x6 392 | 29x7x30 393 | 11x10x30 394 | 6x11x2 395 | 7x29x23 396 | 13x2x30 397 | 25x27x13 398 | 5x15x21 399 | 4x8x30 400 | 15x27x11 401 | 27x1x6 402 | 2x24x11 403 | 16x20x19 404 | 25x28x20 405 | 6x8x4 406 | 27x16x11 407 | 1x5x27 408 | 12x19x26 409 | 18x24x14 410 | 4x25x17 411 | 24x24x26 412 | 28x3x18 413 | 8x20x28 414 | 22x7x21 415 | 24x5x28 416 | 23x30x29 417 | 25x16x27 418 | 28x10x30 419 | 9x2x4 420 | 30x2x23 421 | 21x9x23 422 | 27x4x26 423 | 2x23x16 424 | 24x26x30 425 | 26x1x30 426 | 10x4x28 427 | 11x29x12 428 | 28x13x30 429 | 24x10x28 430 | 8x12x12 431 | 19x27x11 432 | 11x28x7 433 | 14x6x3 434 | 6x27x5 435 | 6x17x14 436 | 24x24x17 437 | 18x23x14 438 | 17x5x7 439 | 11x4x23 440 | 5x1x17 441 | 26x15x24 442 | 3x9x24 443 | 5x3x15 444 | 5x20x19 445 | 5x21x2 446 | 13x5x30 447 | 19x6x24 448 | 19x17x6 449 | 23x7x13 450 | 28x23x13 451 | 9x1x6 452 | 15x12x16 453 | 21x19x9 454 | 25x5x5 455 | 9x7x9 456 | 6x5x8 457 | 3x11x18 458 | 23x25x11 459 | 25x4x6 460 | 4x27x1 461 | 4x3x3 462 | 30x11x5 463 | 9x17x12 464 | 15x6x24 465 | 10x22x15 466 | 29x27x9 467 | 20x21x11 468 | 18x10x5 469 | 11x2x2 470 | 9x8x8 471 | 1x26x21 472 | 11x11x16 473 | 2x18x30 474 | 29x27x24 475 | 27x8x18 476 | 19x3x17 477 | 30x21x26 478 | 25x13x25 479 | 20x22x1 480 | 10x1x12 481 | 11x17x15 482 | 29x11x30 483 | 17x30x27 484 | 21x22x17 485 | 13x6x22 486 | 22x16x12 487 | 27x18x19 488 | 4x13x6 489 | 27x29x10 490 | 3x23x10 491 | 26x16x24 492 | 18x26x20 493 | 11x28x16 494 | 21x6x15 495 | 9x26x17 496 | 8x15x8 497 | 3x7x10 498 | 2x28x8 499 | 1x2x24 500 | 7x8x9 501 | 19x4x22 502 | 11x20x9 503 | 12x22x16 504 | 26x8x19 505 | 13x28x24 506 | 4x10x16 507 | 12x8x10 508 | 14x24x24 509 | 19x19x28 510 | 29x1x15 511 | 10x5x14 512 | 20x19x23 513 | 10x7x12 514 | 1x7x13 515 | 5x12x13 516 | 25x21x8 517 | 22x28x8 518 | 7x9x4 519 | 3x20x15 520 | 15x27x19 521 | 18x24x12 522 | 16x10x16 523 | 22x19x8 524 | 15x4x3 525 | 9x30x25 526 | 1x1x6 527 | 24x4x25 528 | 13x18x29 529 | 10x2x8 530 | 21x1x17 531 | 29x14x22 532 | 17x29x11 533 | 10x27x16 534 | 25x16x15 535 | 14x2x17 536 | 12x27x3 537 | 14x17x25 538 | 24x4x1 539 | 18x28x18 540 | 9x14x26 541 | 28x24x17 542 | 1x26x12 543 | 2x18x20 544 | 12x19x22 545 | 19x25x20 546 | 5x17x27 547 | 17x29x16 548 | 29x19x11 549 | 16x2x4 550 | 23x24x1 551 | 19x18x3 552 | 28x14x6 553 | 18x5x23 554 | 9x24x12 555 | 15x4x6 556 | 15x7x24 557 | 22x15x8 558 | 22x1x22 559 | 6x4x22 560 | 26x1x30 561 | 8x21x27 562 | 7x1x11 563 | 9x8x18 564 | 20x27x12 565 | 26x23x20 566 | 26x22x30 567 | 24x3x16 568 | 8x24x28 569 | 13x28x5 570 | 4x29x23 571 | 22x5x8 572 | 20x22x3 573 | 9x9x17 574 | 28x3x30 575 | 10x13x10 576 | 10x25x13 577 | 9x20x3 578 | 1x21x25 579 | 24x21x15 580 | 21x5x14 581 | 13x8x20 582 | 29x17x3 583 | 5x17x28 584 | 16x12x7 585 | 23x1x24 586 | 4x24x29 587 | 23x25x14 588 | 8x27x2 589 | 23x11x13 590 | 13x4x5 591 | 24x1x26 592 | 21x1x23 593 | 10x12x12 594 | 21x29x25 595 | 27x25x30 596 | 24x23x4 597 | 1x30x23 598 | 29x28x14 599 | 4x11x30 600 | 9x25x10 601 | 17x11x6 602 | 14x29x30 603 | 23x5x5 604 | 25x18x21 605 | 8x7x1 606 | 27x11x3 607 | 5x10x8 608 | 11x1x11 609 | 16x17x26 610 | 15x22x19 611 | 16x9x6 612 | 18x13x27 613 | 26x4x22 614 | 1x20x21 615 | 6x14x29 616 | 11x7x6 617 | 1x23x7 618 | 12x19x13 619 | 18x21x25 620 | 15x17x20 621 | 23x8x9 622 | 15x9x26 623 | 9x12x9 624 | 12x13x14 625 | 27x26x7 626 | 11x19x22 627 | 16x12x21 628 | 10x30x28 629 | 21x2x7 630 | 12x9x18 631 | 7x17x14 632 | 13x17x17 633 | 3x21x10 634 | 30x9x15 635 | 2x8x15 636 | 15x12x10 637 | 23x26x9 638 | 29x30x10 639 | 30x22x17 640 | 17x26x30 641 | 27x26x20 642 | 17x28x17 643 | 30x12x16 644 | 7x23x15 645 | 30x15x19 646 | 13x19x10 647 | 22x10x4 648 | 17x23x10 649 | 2x28x18 650 | 27x21x28 651 | 24x26x5 652 | 6x23x25 653 | 17x4x16 654 | 14x1x13 655 | 23x21x11 656 | 14x15x30 657 | 26x13x10 658 | 30x19x25 659 | 26x6x26 660 | 9x16x29 661 | 15x2x24 662 | 13x3x20 663 | 23x12x30 664 | 22x23x23 665 | 8x21x2 666 | 18x28x5 667 | 21x27x14 668 | 29x28x23 669 | 12x30x28 670 | 17x16x3 671 | 5x19x11 672 | 28x22x22 673 | 1x4x28 674 | 10x10x14 675 | 18x15x7 676 | 18x11x1 677 | 12x7x16 678 | 10x22x24 679 | 27x25x6 680 | 19x29x25 681 | 10x1x26 682 | 26x27x30 683 | 4x23x19 684 | 24x19x4 685 | 21x11x14 686 | 4x13x27 687 | 9x1x11 688 | 16x20x8 689 | 4x3x11 690 | 1x16x12 691 | 14x6x30 692 | 8x1x10 693 | 11x18x7 694 | 29x28x30 695 | 4x21x8 696 | 3x21x4 697 | 6x1x5 698 | 26x18x3 699 | 28x27x27 700 | 17x3x12 701 | 6x1x22 702 | 23x12x28 703 | 12x13x2 704 | 11x2x13 705 | 7x1x28 706 | 27x6x25 707 | 14x14x3 708 | 14x11x20 709 | 2x27x7 710 | 22x24x23 711 | 7x15x20 712 | 30x6x17 713 | 20x23x25 714 | 18x16x27 715 | 2x9x6 716 | 9x18x19 717 | 20x11x22 718 | 11x16x19 719 | 14x29x23 720 | 14x9x20 721 | 8x10x12 722 | 18x17x6 723 | 28x7x16 724 | 12x19x28 725 | 5x3x16 726 | 1x25x10 727 | 4x14x10 728 | 9x6x3 729 | 15x27x28 730 | 13x26x14 731 | 21x8x25 732 | 29x10x20 733 | 14x26x30 734 | 25x13x28 735 | 1x15x23 736 | 6x20x21 737 | 18x2x1 738 | 22x25x16 739 | 23x25x17 740 | 2x14x21 741 | 14x25x16 742 | 12x17x6 743 | 19x29x15 744 | 25x9x6 745 | 19x17x13 746 | 24x22x5 747 | 19x4x13 748 | 10x18x6 749 | 6x25x6 750 | 23x24x20 751 | 8x22x13 752 | 25x10x29 753 | 5x12x25 754 | 20x5x11 755 | 7x16x29 756 | 29x24x22 757 | 28x20x1 758 | 10x27x10 759 | 6x9x27 760 | 26x15x30 761 | 26x3x19 762 | 20x11x3 763 | 26x1x29 764 | 6x23x4 765 | 6x13x21 766 | 9x23x25 767 | 15x1x10 768 | 29x12x13 769 | 7x8x24 770 | 29x30x27 771 | 3x29x19 772 | 14x16x17 773 | 4x8x27 774 | 26x17x8 775 | 10x27x17 776 | 11x28x17 777 | 17x16x27 778 | 1x8x22 779 | 6x30x16 780 | 7x30x22 781 | 20x12x3 782 | 18x10x2 783 | 20x21x26 784 | 11x1x17 785 | 9x15x15 786 | 19x14x30 787 | 24x22x20 788 | 11x26x23 789 | 14x3x23 790 | 1x28x29 791 | 29x20x4 792 | 1x4x20 793 | 12x26x8 794 | 14x11x14 795 | 14x19x13 796 | 15x13x24 797 | 16x7x26 798 | 11x20x11 799 | 5x24x26 800 | 24x25x7 801 | 21x3x14 802 | 24x29x20 803 | 7x12x1 804 | 16x17x4 805 | 29x16x21 806 | 28x8x17 807 | 11x30x25 808 | 1x26x23 809 | 25x19x28 810 | 30x24x5 811 | 26x29x15 812 | 4x25x23 813 | 14x25x19 814 | 29x10x7 815 | 29x29x28 816 | 19x13x24 817 | 21x28x5 818 | 8x15x24 819 | 1x10x12 820 | 2x26x6 821 | 14x14x4 822 | 10x16x27 823 | 9x17x25 824 | 25x8x7 825 | 1x9x28 826 | 10x8x17 827 | 4x12x1 828 | 17x26x29 829 | 23x12x26 830 | 2x21x22 831 | 18x23x13 832 | 1x14x5 833 | 25x27x26 834 | 4x30x30 835 | 5x13x2 836 | 17x9x6 837 | 28x18x28 838 | 7x30x2 839 | 28x22x17 840 | 14x15x14 841 | 10x14x19 842 | 6x15x22 843 | 27x4x17 844 | 28x21x6 845 | 19x29x26 846 | 6x17x17 847 | 20x13x16 848 | 25x4x1 849 | 2x9x5 850 | 30x3x1 851 | 24x21x2 852 | 14x19x12 853 | 22x5x23 854 | 14x4x21 855 | 10x2x17 856 | 3x14x10 857 | 17x5x3 858 | 22x17x13 859 | 5x19x3 860 | 29x22x6 861 | 12x28x3 862 | 9x21x25 863 | 10x2x14 864 | 13x26x7 865 | 18x23x2 866 | 9x14x17 867 | 21x3x13 868 | 13x23x9 869 | 1x20x4 870 | 11x4x1 871 | 19x5x30 872 | 9x9x29 873 | 26x29x14 874 | 1x4x10 875 | 7x27x30 876 | 8x3x23 877 | 1x27x27 878 | 7x27x27 879 | 1x26x16 880 | 29x16x14 881 | 18x6x12 882 | 24x24x24 883 | 26x2x19 884 | 15x17x4 885 | 11x7x14 886 | 14x19x10 887 | 9x10x1 888 | 14x17x9 889 | 20x19x13 890 | 25x20x8 891 | 24x20x21 892 | 26x30x2 893 | 24x2x10 894 | 28x4x13 895 | 27x17x11 896 | 15x3x8 897 | 11x29x10 898 | 26x15x16 899 | 4x28x22 900 | 7x5x22 901 | 10x28x9 902 | 6x28x13 903 | 10x5x6 904 | 20x12x6 905 | 25x30x30 906 | 17x16x14 907 | 14x20x3 908 | 16x10x8 909 | 9x28x14 910 | 16x12x12 911 | 11x13x25 912 | 21x16x28 913 | 10x3x18 914 | 5x9x20 915 | 17x23x5 916 | 3x13x16 917 | 29x30x17 918 | 2x2x8 919 | 15x8x30 920 | 20x1x16 921 | 23x10x29 922 | 4x5x4 923 | 6x18x12 924 | 26x10x22 925 | 21x10x17 926 | 26x12x29 927 | 7x20x21 928 | 18x9x15 929 | 10x23x20 930 | 20x1x27 931 | 10x10x3 932 | 25x12x23 933 | 30x11x15 934 | 16x22x3 935 | 22x10x11 936 | 15x10x20 937 | 2x20x17 938 | 20x20x1 939 | 24x16x4 940 | 23x27x7 941 | 7x27x22 942 | 24x16x8 943 | 20x11x25 944 | 30x28x11 945 | 21x6x24 946 | 15x2x9 947 | 16x30x24 948 | 21x27x9 949 | 7x19x8 950 | 24x13x28 951 | 12x26x28 952 | 16x21x11 953 | 25x5x13 954 | 23x3x17 955 | 23x1x17 956 | 4x17x18 957 | 17x13x18 958 | 25x12x19 959 | 17x4x19 960 | 4x21x26 961 | 6x28x1 962 | 23x22x15 963 | 6x23x12 964 | 21x17x9 965 | 30x4x23 966 | 2x19x21 967 | 28x24x7 968 | 19x24x14 969 | 13x20x26 970 | 19x24x29 971 | 8x26x3 972 | 16x12x14 973 | 17x4x21 974 | 8x4x20 975 | 13x27x17 976 | 9x21x1 977 | 29x25x6 978 | 7x9x26 979 | 13x25x5 980 | 6x9x21 981 | 12x10x11 982 | 30x28x21 983 | 15x6x2 984 | 8x18x19 985 | 26x20x24 986 | 26x17x14 987 | 27x8x1 988 | 19x19x18 989 | 25x24x27 990 | 14x29x15 991 | 22x26x1 992 | 14x17x9 993 | 2x6x23 994 | 29x7x5 995 | 14x16x19 996 | 14x21x18 997 | 10x15x23 998 | 21x29x14 999 | 20x29x30 1000 | 23x11x5 -------------------------------------------------------------------------------- /day5/input: -------------------------------------------------------------------------------- 1 | uxcplgxnkwbdwhrp 2 | suerykeptdsutidb 3 | dmrtgdkaimrrwmej 4 | ztxhjwllrckhakut 5 | gdnzurjbbwmgayrg 6 | gjdzbtrcxwprtery 7 | fbuqqaatackrvemm 8 | pcjhsshoveaodyko 9 | lrpprussbesniilv 10 | mmsebhtqqjiqrusd 11 | vumllmrrdjgktmnb 12 | ptsqjcfbmgwdywgi 13 | mmppavyjgcfebgpl 14 | zexyxksqrqyonhui 15 | npulalteaztqqnrl 16 | mscqpccetkktaknl 17 | ydssjjlfejdxrztr 18 | jdygsbqimbxljuue 19 | ortsthjkmlonvgci 20 | jfjhsbxeorhgmstc 21 | vdrqdpojfuubjbbg 22 | xxxddetvrlpzsfpq 23 | zpjxvrmaorjpwegy 24 | laxrlkntrukjcswz 25 | pbqoungonelthcke 26 | niexeyzvrtrlgfzw 27 | zuetendekblknqng 28 | lyazavyoweyuvfye 29 | tegbldtkagfwlerf 30 | xckozymymezzarpy 31 | ehydpjavmncegzfn 32 | jlnespnckgwmkkry 33 | bfyetscttekoodio 34 | bnokwopzvsozsbmj 35 | qpqjhzdbuhrxsipy 36 | vveroinquypehnnk 37 | ykjtxscefztrmnen 38 | vxlbxagsmsuuchod 39 | punnnfyyufkpqilx 40 | zibnnszmrmtissww 41 | cxoaaphylmlyljjz 42 | zpcmkcftuuesvsqw 43 | wcqeqynmbbarahtz 44 | kspontxsclmbkequ 45 | jeomqzucrjxtypwl 46 | ixynwoxupzybroij 47 | ionndmdwpofvjnnq 48 | tycxecjvaxyovrvu 49 | uxdapggxzmbwrity 50 | csskdqivjcdsnhpe 51 | otflgdbzevmzkxzx 52 | verykrivwbrmocta 53 | ccbdeemfnmtputjw 54 | suyuuthfhlysdmhr 55 | aigzoaozaginuxcm 56 | ycxfnrjnrcubbmzs 57 | fgbqhrypnrpiizyy 58 | taoxrnwdhsehywze 59 | echfzdbnphlwjlew 60 | jhmomnrbfaawicda 61 | fywndkvhbzxxaihx 62 | aftuyacfkdzzzpem 63 | yytzxsvwztlcljvb 64 | iblbjiotoabgnvld 65 | kvpwzvwrsmvtdxcx 66 | ardgckwkftcefunk 67 | oqtivsqhcgrcmbbd 68 | wkaieqxdoajyvaso 69 | rkemicdsrtxsydvl 70 | sobljmgiahyqbirc 71 | pbhvtrxajxisuivj 72 | ggqywcbfckburdrr 73 | gmegczjawxtsywwq 74 | kgjhlwyonwhojyvq 75 | bpqlmxtarjthtjpn 76 | pxfnnuyacdxyfclr 77 | isdbibbtrqdfuopn 78 | vucsgcviofwtdjcg 79 | ywehopujowckggkg 80 | mzogxlhldvxytsgl 81 | mllyabngqmzfcubp 82 | uwvmejelibobdbug 83 | brebtoppnwawcmxa 84 | fcftkhghbnznafie 85 | sqiizvgijmddvxxz 86 | qzvvjaonnxszeuar 87 | abekxzbqttczywvy 88 | bkldqqioyhrgzgjs 89 | lilslxsibyunueff 90 | ktxxltqgfrnscxnx 91 | iwdqtlipxoubonrg 92 | twncehkxkhouoctj 93 | bdwlmbahtqtkduxz 94 | smbzkuoikcyiulxq 95 | bjmsdkqcmnidxjsr 96 | icbrswapzdlzdanh 97 | eyszxnhbjziiplgn 98 | pdxhrkcbhzqditwb 99 | nfulnpvtzimbzsze 100 | glayzfymwffmlwhk 101 | bejxesxdnwdlpeup 102 | ukssntwuqvhmsgwj 103 | hoccqxlxuuoomwyc 104 | rapztrdfxrosxcig 105 | cxowzhgmzerttdfq 106 | yzhcurqhdxhmolak 107 | kqgulndpxbwxesxi 108 | yjkgcvtytkitvxiu 109 | xnhfqhnnaceaqyue 110 | qkuqreghngfndifr 111 | xesxgeaucmhswnex 112 | occbvembjeuthryi 113 | dmefxmxqjncirdwj 114 | ystmvxklmcdlsvin 115 | pplykqlxmkdrmydq 116 | cbbjkpbdvjhkxnuc 117 | embhffzsciklnxrz 118 | asrsxtvsdnuhcnco 119 | xcbcrtcnzqedktpi 120 | mglwujflcnixbkvn 121 | mnurwhkzynhahbjp 122 | cekjbablkjehixtj 123 | kbkcmjhhipcjcwru 124 | usifwcsfknoviasj 125 | rsfgocseyeflqhku 126 | prgcyqrickecxlhm 127 | asbawplieizkavmq 128 | sylnsirtrxgrcono 129 | nzspjfovbtfkloya 130 | qfxmsprfytvaxgtr 131 | yckpentqodgzngnv 132 | ycsfscegcexcnbwq 133 | kbmltycafudieyuh 134 | tpahmvkftilypxuf 135 | qivqozjrmguypuxu 136 | gdhbfradjuidunbk 137 | vxqevjncsqqnhmkl 138 | rpricegggcfeihst 139 | xucvzpprwtdpzifq 140 | egyjcyyrrdnyhxoo 141 | kfbrzmbtrrwyeofp 142 | qpjdsocrtwzpjdkd 143 | reboldkprsgmmbit 144 | vwkrzqvvhqkensuy 145 | ydvmssepskzzvfdp 146 | vqbigplejygdijuu 147 | mzpgnahrhxgjriqm 148 | uiejixjadpfsxqcv 149 | tosatnvnfjkqiaha 150 | yipuojpxfqnltclx 151 | pcxwvgcghfpptjlf 152 | shrudjvvapohziaj 153 | jdckfjdtjsszdzhj 154 | hgisfhcbdgvxuilk 155 | gytnfjmrfujnmnpp 156 | ohflkgffnxmpwrrs 157 | jzxajbkwwjknasjh 158 | xrcxfollmejrislv 159 | djjlwykouhyfukob 160 | rittommltkbtsequ 161 | lpbvkxdcnlikwcxm 162 | vkcrjmcifhwgfpdj 163 | dkhjqwtggdrmcslq 164 | swnohthfvjvoasvt 165 | yrzoksmcnsagatii 166 | duommjnueqmdxftp 167 | inlvzlppdlgfmvmx 168 | xibilzssabuqihtq 169 | inkmwnvrkootrged 170 | ldfianvyugqtemax 171 | gbvwtiexcuvtngti 172 | temjkvgnwxrhdidc 173 | askbbywyyykerghp 174 | onezejkuwmrqdkfr 175 | kybekxtgartuurbq 176 | ubzjotlasrewbbkl 177 | stueymlsovqgmwkh 178 | lhduseycrewwponi 179 | yohdmucunrgemqcu 180 | onnfbxcuhbuifbyc 181 | odrjkigbrsojlqbt 182 | imqkqqlkgmttpxtx 183 | sxmlkspqoluidnxw 184 | akaauujpxhnccleb 185 | xvgpghhdtpgvefnk 186 | jdxeqxzsbqtvgvcq 187 | mdusenpygmerxnni 188 | agihtqvgkmgcbtaw 189 | dovxcywlyvspixad 190 | uulgazeyvgtxqkfz 191 | ndhmvrwuflhktzyo 192 | hcaqkmrbvozaanvm 193 | tvfozbqavqxdqwqv 194 | rlkpycdzopitfbsv 195 | dmyjtmjbtnvnedhs 196 | fmwmqeigbzrxjvdu 197 | twgookcelrjmczqi 198 | grxosmxvzgymjdtz 199 | zsstljhzugqybueo 200 | jpeapxlytnycekbd 201 | iasykpefrwxrlvxl 202 | azohkkqybcnsddus 203 | aoaekngakjsgsonx 204 | awsqaoswqejanotc 205 | sgdxmketnjmjxxcp 206 | ylnyuloaukdrhwuy 207 | ewoqjmakifbefdib 208 | ytjfubnexoxuevbp 209 | ewlreawvddptezdd 210 | vmkonztwnfgssdog 211 | ahbpuqygcwmudyxn 212 | kmahpxfjximorkrh 213 | otjbexwssgpnpccn 214 | aewskyipyztvskkl 215 | urqmlaiqyfqpizje 216 | nrfrbedthzymfgfa 217 | vndwwrjrwzoltfgi 218 | iiewevdzbortcwwe 219 | qiblninjkrkhzxgi 220 | xmvaxqruyzesifuu 221 | yewuzizdaucycsko 222 | hmasezegrhycbucy 223 | dwpjrmkhsmnecill 224 | hnffpbodtxprlhss 225 | avmrgrwahpsvzuhm 226 | nksvvaswujiukzxk 227 | zzzapwhtffilxphu 228 | vwegwyjkbzsrtnol 229 | qurpszehmkfqwaok 230 | iknoqtovqowthpno 231 | brlmpjviuiagymek 232 | efxebhputzeulthq 233 | mzkquarxlhlvvost 234 | xsigcagzqbhwwgps 235 | qufztljyzjxgahdp 236 | dlfkavnhobssfxvx 237 | hgdpcgqxjegnhjlr 238 | fboomzcvvqudjfbi 239 | wnjuuiivaxynqhrd 240 | nhcgzmpujgwisguw 241 | wjeiacxuymuhykgk 242 | qmeebvxijcgdlzpf 243 | nmmnxsehhgsgoich 244 | ejluaraxythbqfkl 245 | mdbsbwnaypvlatcj 246 | nnfshfibmvfqrbka 247 | dvckdmihzamgqpxr 248 | foztgqrjbwyxvewk 249 | okpryqcbvorcxhoh 250 | fpiwsndulvtthctx 251 | zrbiovlmzdmibsiq 252 | setwafbnnzcftutg 253 | nyvqghxhgkxfobdm 254 | enpvqadzarauhajl 255 | twblhpvkazpdmhmr 256 | lbhlllsgswvhdesh 257 | tdfwkgxnqjxcvsuo 258 | lnvyjjbwycjbvrrb 259 | jsxqdvmzaydbwekg 260 | xirbcbvwlcptuvoa 261 | hwnukxenilatlfsk 262 | khwopjqkxprgopmd 263 | sljzdoviweameskw 264 | stkrdmxmpaijximn 265 | fdilorryzhmeqwkc 266 | mfchaaialgvoozra 267 | gjxhoxeqgkbknmze 268 | beowovcoqnginrno 269 | mkgmsgwkwhizunxo 270 | phnhfusyoylvjdou 271 | csehdlcmwepcpzmq 272 | pgojomirzntgzohj 273 | fkffgyfsvwqhmboz 274 | mrvduasiytbzfwdn 275 | epzrmsifpmfaewng 276 | ooqxnoyqrlozbbyf 277 | ahcxfmgtedywrbnx 278 | ibqktvqmgnirqjot 279 | xarssauvofdiaefn 280 | xradvurskwbfzrnw 281 | nxklmulddqcmewad 282 | twichytatzoggchg 283 | qmgvroqwrjgcycyv 284 | yvezgulgrtgvyjjm 285 | jgmcklzjdmznmuqk 286 | bytajdwwconasjzt 287 | apjttucpycyghqhu 288 | flfejjzihodwtyup 289 | gmrtrwyewucyqotv 290 | nlohdrlymbkoenyl 291 | wxcmqwbrwgtmkyfe 292 | njtzlceyevmisxfn 293 | htbbidsfbbshmzlt 294 | gxhjeypjwghnrbsf 295 | cifcwnbtazronikv 296 | ezvjijcjcyszwdjy 297 | srffeyrvyetbecmc 298 | xpjefrtatrlkbkzl 299 | yhncvfqjcyhsxhbb 300 | pqhcufzlcezhihpr 301 | qtdsfvxfqmsnzisp 302 | dfonzdicxxhzxkrx 303 | mqqqzhxkyfpofzty 304 | dodjadoqyxsuazxt 305 | jjwkrlquazzjbvlm 306 | ttosfloajukoytfb 307 | llateudmzxrzbqph 308 | criqihrysgesmpsx 309 | npszvlittbcxxknj 310 | qmzojrvraitrktil 311 | cfyoozzpwxwkwoto 312 | daxohtcgvtktggfw 313 | vthkpkoxmiuotjaj 314 | pkfkyobvzjeecnui 315 | ojcjiqrfltbhcdze 316 | scbivhpvjkjbauun 317 | ysowvwtzmqpjfwyp 318 | laeplxlunwkfeaou 319 | jufhcikovykwjhsa 320 | xrucychehzksoitr 321 | pyaulaltjkktlfkq 322 | oypfrblfdhwvqxcv 323 | zybrgxixvhchgzcf 324 | puoagefcmlxelvlp 325 | xjnhfdrsbhszfsso 326 | ocgvzryoydaoracw 327 | bxpnqllmptkpeena 328 | pziyeihxlxbbgdio 329 | bvtrhtlbfzmglsfc 330 | ggpuvtseebylsrfk 331 | pukenexjqecnivfj 332 | jswabfbzpnhhdbpn 333 | enojrtwqpfziyqsv 334 | rjtmxudgcudefuiz 335 | iqmjxynvtvdacffc 336 | uheywxlsusklitvl 337 | kwhxduejafdpmqdc 338 | rspgblenbqlmcltn 339 | rczhurnrqqgjutox 340 | dqhytibjzxkdblzl 341 | hpbieadydiycvfys 342 | pucztfoqvenxiuym 343 | nqpfzgpblwijiprf 344 | ltgseeblgajbvltk 345 | mwxukbsnapewhfrc 346 | dvxluiflicdtnxix 347 | pexfbpgnqiqymxcq 348 | dakudfjjwtpxuzxy 349 | letlceyzlgmnrewu 350 | ojktahbsdifdfhmd 351 | anezoybbghjudbih 352 | sawxtlvzysaqkbbf 353 | ttnkctcevpjiwqua 354 | edrwrdvbaoqraejd 355 | wnbfilvuienjxlcr 356 | wqhzwvyybyxhhtsm 357 | jxbgvyaqczwdlxfo 358 | wbypqfmbwrsvfmdv 359 | izdxjyfpidehbets 360 | vbxbggqseurknjor 361 | egpmpoxickhvwdlz 362 | ivfrzklvpwoemxsy 363 | xkziseheibmrpdww 364 | xnrmtoihaudozksa 365 | efemdmbxdsaymlrw 366 | yjdjeckmsrckaagx 367 | vlftqxxcburxnohv 368 | fwyquwgajaxebduj 369 | dwpmqvcxqwwnfkkr 370 | isduxxjfsluuvwga 371 | avdtdppodpntojgf 372 | vrcoekdnutbnlgqk 373 | kbhboxjmgomizxkl 374 | cgsfpjrmewexgzfy 375 | usdtnhjxbvtnafvp 376 | bjoddgxbuxzhnsqd 377 | hoyqdzofddedevsb 378 | rwiwbvqfjajotaoj 379 | iabomphsuyfptoos 380 | bubeonwbukprpvhy 381 | xurgunofmluhisxm 382 | puyojzdvhktawkua 383 | dbvqhztzdsncrxkb 384 | oaeclqzyshuuryvm 385 | nmgwfssnflxvcupr 386 | vjkiwbpunkahtsrw 387 | romyflhrarxchmyo 388 | yecssfmetezchwjc 389 | qwtocacqdslhozkd 390 | mesexvfbtypblmam 391 | mtjucgtjesjppdtt 392 | pvodhqqoeecjsvwi 393 | vvlcwignechiqvxj 394 | wiqmzmmjgjajwgov 395 | kwneobiiaixhclev 396 | lkdeglzrrxuomsyt 397 | oqovuwcpwbghurva 398 | lfsdcxsasmuarwwg 399 | awkbafhswnfbhvck 400 | sztxlnmyvqsiwljg 401 | hozxgyxbcxjzedvs 402 | oifkqgfqmflxvyzn 403 | mfvnehsajlofepib 404 | delgbyfhsyhmyrfa 405 | uenimmwriihxoydv 406 | vjqutpilsztquutn 407 | kfebsaixycrodhvl 408 | coifyqfwzlovrpaj 409 | xiyvdxtkqhcqfsqr 410 | hoidcbzsauirpkyt 411 | fiumhfaazfkbaglq 412 | fzwdormfbtkdjgfm 413 | faxqrortjdeihjfv 414 | ljhaszjklhkjvrfi 415 | pzrxsffkuockoqyl 416 | immbtokjmwyrktzn 417 | lzgjhyiywwnuxpfx 418 | vhkocmwzkfwjuzog 419 | ghntjkszahmdzfbl 420 | gbcthxesvqbmzggy 421 | oyttamhpquflojkh 422 | nbscpfjwzylkfbtv 423 | wnumxzqbltvxtbzs 424 | jfhobjxionolnouc 425 | nrtxxmvqjhasigvm 426 | hweodfomsnlgaxnj 427 | lfgehftptlfyvvaj 428 | ccoueqkocrdgwlvy 429 | euhgvirhsaotuhgf 430 | pdlsanvgitjvedhd 431 | seokvlbhrfhswanv 432 | pntdqaturewqczti 433 | jkktayepxcifyurj 434 | dhzzbiaisozqhown 435 | wehtwakcmqwczpbu 436 | zwvozvspqmuckkcd 437 | efucjlrwxuhmjubr 438 | lzodaxuyntrnxwvp 439 | qdezfvpyowfpmtwd 440 | mizijorwrkanesva 441 | txmitbiqoiryxhpz 442 | xhsqgobpouwnlvps 443 | muixgprsknlqaele 444 | disgutskxwplodra 445 | bmztllsugzsqefrm 446 | ymwznyowpaaefkhm 447 | ebfifzloswvoagqh 448 | pkldomvvklefcicw 449 | ziqzbbfunmcgrbtq 450 | iuekfpbkraiwqkic 451 | jflgjidirjapcuqo 452 | achsfbroyrnqnecg 453 | udbhouhlgjjzapzr 454 | arerrohyhhkmwhyo 455 | txyjzkqexgvzdtow 456 | ogzrjwibvzoucrpg 457 | rfdftaesxdnghwhd 458 | axdhwmpuxelmpabo 459 | gtktemowbsvognac 460 | wkfuclilhqjzxztk 461 | qbwjouutzegaxhrz 462 | opfziwqqbwhzzqhj 463 | pvcvcsupfwsmeacs 464 | xsbohvbguzsgpawn 465 | sczoefukwywxriwj 466 | oqkhcqfdeaifbqoc 467 | vtsrholxbjkhwoln 468 | yuvapljnwbssfbhi 469 | dxdfwccqvyzeszyl 470 | gdbmjtonbiugitmb 471 | qunirtqbubxalmxr 472 | zzxsirhdaippnopr 473 | fibtndkqjfechbmq 474 | gqgqyjvqmfiwiyio 475 | ihwsfkwhtzuydlzw 476 | eygyuffeyrbbhlit 477 | zdlsaweqomzrhdyy 478 | ptbgfzuvxiuuxyds 479 | llxlfdquvovzuqva 480 | wfrltggyztqtyljv 481 | kwipfevnbralidbm 482 | gbhqfbrvuseellbx 483 | obkbuualrzrakknv 484 | hlradjrwyjgfqugu 485 | vtqlxbyiaiorzdsp 486 | tedcbqoxsmbfjeyy 487 | cxdppfvklbdayghy 488 | gjnofexywmdtgeft 489 | ldzeimbbjmgpgeax 490 | egrwsmshbvbawvja 491 | vadfrjvcrdlonrkg 492 | mojorplakzfmzvtp 493 | jyurlsoxhubferpo 494 | ijwqogivvzpbegkm 495 | cnmetoionfxlutzg 496 | lawigelyhegqtyil 497 | mqosapvnduocctcd 498 | eqncubmywvxgpfld 499 | vigfretuzppxkrfy 500 | ncwynsziydoflllq 501 | cbllqinsipfknabg 502 | ndtbvdivzlnafziq 503 | iqrrzgzntjquzlrs 504 | damkuheynobqvusp 505 | jxctymifsqilyoxa 506 | ylritbpusymysmrf 507 | paoqcuihyooaghfu 508 | obhpkdaibwixeepl 509 | igrmhawvctyfjfhd 510 | ybekishyztlahopt 511 | vkbniafnlfqhhsrq 512 | kltdigxmbhazrywf 513 | ufhcoyvvxqzeixpr 514 | klcxdcoglwmeynjt 515 | funpjuvfbzcgdhgs 516 | akgyvyfzcpmepiuc 517 | zhlkgvhmjhwrfmua 518 | ibsowtbnrsnxexuz 519 | vpufbqilksypwlrn 520 | ngrintxhusvdkfib 521 | ziuwswlbrxcxqslw 522 | sucledgxruugrnic 523 | zwnsfsyotmlpinew 524 | oaekskxfcwwuzkor 525 | qjmqwaktpzhwfldu 526 | tmgfgqgpxaryktxo 527 | qfaizepgauqxvffk 528 | addkqofusrstpamf 529 | shdnwnnderkemcts 530 | gwfygbsugzptvena 531 | fpziernelahopdsj 532 | bkkrqbsjvyjtqfax 533 | gxrljlqwxghbgjox 534 | ipfwnqaskupkmevm 535 | nnyoyhnqyfydqpno 536 | lgzltbrrzeqqtydq 537 | fgzxqurhtdfucheb 538 | jvpthtudlsoivdwj 539 | bmlhymalgvehvxys 540 | fhklibetnvghlgnp 541 | hfcyhptxzvblvlst 542 | donanindroexgrha 543 | oqawfmslbgjqimzx 544 | jzgehjfjukizosep 545 | bhlgamcjqijpvipb 546 | jrcrdjrvsyxzidsk 547 | ouwfwwjqezkofqck 548 | wrvsbnkhyzayialf 549 | knhivfqjxrxnafdl 550 | hbxbgqsqwzijlngf 551 | qlffukpfmnxpfiyq 552 | evhxlouocemdkwgk 553 | baxhdrmhaukpmatw 554 | nwlyytsvreqaminp 555 | ljsjjzmlsilvxgal 556 | onunatwxfzwlmgpk 557 | njgolfwndqnwdqde 558 | ngdgcjzxupkzzbqi 559 | ieawycvvmvftbikq 560 | ccyvnexuvczvtrit 561 | enndfwjpwjyasjvv 562 | tcihprzwzftaioqu 563 | bkztdkbrxfvfeddu 564 | qkvhtltdrmryzdco 565 | rurtxgibkeaibofs 566 | mjxypgscrqiglzbp 567 | unpkojewduprmymd 568 | csqtkhjxpbzbnqog 569 | mednhjgbwzlhmufi 570 | sfrwfazygygzirwd 571 | ijqeupbrhhpqxota 572 | cmhpncanwudyysyh 573 | wwcxbwzrplfzrwxd 574 | jriomldifuobjpmq 575 | radonyagpulnnyee 576 | ryqjwxsspbbhnptd 577 | yeoqpnsdhludlmzf 578 | qsqlkeetyalenueh 579 | qnnedenwsjdrcrzt 580 | lejkuhsllxbhfcrx 581 | anddbvllrrqefvke 582 | wdtljquijaksvdsv 583 | adslgvfuqqdkzvbc 584 | whbccefjpcnjwhaq 585 | kqrfuankaibohqsg 586 | fyxisfwihvylgnfd 587 | rwqdrddghyqudcif 588 | syhzowthaaiiouaf 589 | zjmrtgrnohxmtidu 590 | deecwkfvjffxrzge 591 | dztmvolqxkhdscxe 592 | cdghcrgavygojhqn 593 | pepqmdbjhnbugqeu 594 | pnumdjpnddbxhieg 595 | jzfhxeyahiagizfw 596 | hdkwugrhcniueyor 597 | gmgudeqlbmqynflu 598 | toidiotdmfkxbzvm 599 | pyymuoevoezlfkjb 600 | etrbwuafvteqynlr 601 | usvytbytsecnmqtd 602 | dfmlizboawrhmvim 603 | vrbtuxvzzefedlvs 604 | vslcwudvasvxbnje 605 | xdxyvoxaubtwjoif 606 | mduhzhascirittdf 607 | cqoqdhdxgvvvxamk 608 | dshnfwhqjbhuznqr 609 | zimthfxbdmkulkjg 610 | luylgfmmwbptyzpj 611 | iujpcgogshhotqrc 612 | caqcyzqcumfljvsp 613 | sprtitjlbfpygxya 614 | fnconnrtnigkpykt 615 | irmqaqzjexdtnaph 616 | bbqrtoblmltvwome 617 | ozjkzjfgnkhafbye 618 | hwljjxpxziqbojlw 619 | zahvyqyoqnqjlieb 620 | dptshrgpbgusyqsc 621 | uzlbnrwetkbkjnlm 622 | yccaifzmvbvwxlcc 623 | wilnbebdshcrrnuu 624 | evxnoebteifbffuq 625 | khbajekbyldddzfo 626 | kjivdcafcyvnkojr 627 | wtskbixasmakxxnv 628 | uzmivodqzqupqkwx 629 | rxexcbwhiywwwwnu 630 | rowcapqaxjzcxwqi 631 | fkeytjyipaxwcbqn 632 | pyfbntonlrunkgvq 633 | qiijveatlnplaifi 634 | ltnhlialynlafknw 635 | urrhfpxmpjwotvdn 636 | xklumhfyehnqssys 637 | civrvydypynjdoap 638 | fvbmxnfogscbbnyd 639 | oznavyflpzzucuvg 640 | iyshrpypfbirahqo 641 | qmzbfgelvpxvqecy 642 | xkkxaufomsjbofmk 643 | irlouftdmpitwvlq 644 | csjoptbdorqxhnjg 645 | bkryeshfsaqpdztm 646 | guxbdqzfafsjoadl 647 | tgrltexgrzatzwxf 648 | cwsgsijqdanubxad 649 | xafnexgturwrzyrg 650 | apcrsqdbsbaxocxr 651 | pspgxnzcevmvvejk 652 | szephmeegvegugdt 653 | ndjsoloeacasxjap 654 | bdnfksliscnirjfu 655 | ehglacmzpcgglpux 656 | jwweijomqfcupvzw 657 | yesblmmkqhbazmdu 658 | sjsmalypmuslzgac 659 | fkiqatyttlnuhdho 660 | tlhnyuzdocvfdihq 661 | ngehtjmycevnybga 662 | obxodzcdgtrycgry 663 | stkyrvdfbwovawmk 664 | bdkhqcfrqaxhxloo 665 | gpvumnuoiozipnrk 666 | jbhanddinpqhxeol 667 | hwkzkmbmsrvunzit 668 | rfuomegkxbyamjpw 669 | yzbljuksletipzwm 670 | eafedkagwitzqigl 671 | prenqvsbotqckgwy 672 | spedpbwzphdrfxfz 673 | cmsuqwemhwixkxet 674 | xgdyeqbqfldvaccq 675 | eooxgsrfsbdaolja 676 | kyhqylxooewrhkho 677 | mswieugqpoefmspt 678 | uszoqundysdyeqlc 679 | hkmjdggxefdyykbq 680 | dtuhjnlaliodtlvh 681 | oalbueqbhpxoxvvx 682 | oowxtxsoqdwhzbya 683 | lclajfsrpmtwvzkm 684 | fxmjufpqtpyazeqo 685 | ozlmreegxhfwwwmf 686 | mqzrajxtxbaemrho 687 | nfglecsyqduhakjr 688 | nkxqtmasjjkpkqbp 689 | jjfonbqimybvzeus 690 | vjqkhkhjlmvpwkud 691 | wxxhnvfhetsamzjr 692 | pladhajujzttgmsw 693 | dbycgxeymodsdlhm 694 | qxszeuaahuoxjvwu 695 | adultomodzrljxve 696 | dmhgrbhvvpxyzwdn 697 | slohrlwxerpahtyp 698 | mngbocwyqrsrrxdb 699 | facyrtflgowfvfui 700 | hyvazpjucgghmmxh 701 | twtrvjtncmewcxit 702 | uejkrpvilgccfpfr 703 | psqvolfagjfvqkum 704 | nvzolslmiyavugpp 705 | lpjfutvtwbddtqiu 706 | fkjnfcdorlugmcha 707 | eaplrvdckbcqqvhq 708 | xrcydhkockycburw 709 | iswmarpwcazimqxn 710 | kicnnkjdppitjwrl 711 | vwywaekzxtmeqrsu 712 | dxlgesstmqaxtjta 713 | pmeljgpkykcbujbb 714 | vhpknqzhgnkyeosz 715 | jprqitpjbxkqqzmz 716 | fiprxgsqdfymyzdl 717 | dzvfwvhfjqqsifga 718 | aeakhfalplltmgui 719 | frqrchzvenhozzsu 720 | hsvikeyewfhsdbmy 721 | puedjjhvxayiwgvg 722 | zmsonnclfovjoewb 723 | bnirelcaetdyaumi 724 | szvudroxhcitatvf 725 | sccfweuyadvrjpys 726 | yiouqrnjzsdwyhwa 727 | xyjhkqbnfmjjdefz 728 | fjwgemkfvettucvg 729 | aapqpwapzyjnusnr 730 | dytxpkvgmapdamtc 731 | hgocpfoxlheqpumw 732 | twzuiewwxwadkegg 733 | qdbosnhyqmyollqy 734 | fclbrlkowkzzitod 735 | sgxnrrpwhtkjdjth 736 | xckvsnkvnvupmirv 737 | nioicfeudrjzgoas 738 | lcemtyohztpurwtf 739 | oyjxhhbswvzekiqn 740 | idkblbyjrohxybob 741 | rthvloudwmktwlwh 742 | oyzhmirzrnoytaty 743 | ysdfhuyenpktwtks 744 | wxfisawdtbpsmwli 745 | vgmypwlezbmzeduk 746 | rpepcfpelvhzzxzj 747 | zxbovsmixfvmamnj 748 | cpkabmaahbnlrhiz 749 | jvomcbqeoqrmynjj 750 | iqdeisnegnkrkdws 751 | ilhemlrtxdsdnirr 752 | fjimtscrwbfuwmpo 753 | lmfiylebtzwtztmx 754 | ddouhysvomrkcpgu 755 | xtjwvzdhgnwwauwi 756 | cntzuwcumbsebwyy 757 | hieqvdlvnxkygeda 758 | hushfszxskjdrjxi 759 | xvdfzqblccfoxvyq 760 | nldnrtieteunyxnb 761 | vszpidfocenlhzqb 762 | ofcuvtwhortxesoq 763 | bwniqemqwxlejcfq 764 | wkqiwdjnytjnomps 765 | rbadoommlmrictte 766 | nsmxhpothlulxivt 767 | bvzbfcvenskqxejr 768 | sdqeczmzpqqtqabq 769 | bjveyzniaaliatkw 770 | zxsqlntyjajjxytk 771 | jkoxlerbtidsuepg 772 | ewtlibdkeqwgxnqt 773 | lmrshemwxrdwzrgc 774 | nekcdyxmftlymfir 775 | edaqvmulzkskzsfy 776 | znmvqaupykjmyebx 777 | ximtebuxwhqpzubd 778 | rrlstppkknqyxlho 779 | uyibwcitxixjfwcr 780 | chrvoierkimesqmm 781 | dltxmwhheldvxwqe 782 | xfuthxjuuizanfjy 783 | vtiwavmxwonpkpug 784 | phchnujfnxewglht 785 | owvmetdjcynohxtw 786 | cbtujdrumixxatry 787 | iirzildsfxipfipe 788 | sqxcscqyofohotcy 789 | sbubnekndkvovuqg 790 | jzhsqqxqdrtibtcd 791 | mscwasyvxkhlvwbn 792 | bpafxtagbuxivbwz 793 | uhvueesygaxrqffw 794 | trrxlibhtmzuwkkl 795 | yktkmkokmfslgkml 796 | gfzzzdptaktytnqg 797 | pgqmaiwzhplnbyhg 798 | qjiptlkwfshunsfb 799 | lewvlpescsyunxck 800 | tywsfatykshogjas 801 | qtrnwjjgxdektjgi 802 | arypcritpwijczkn 803 | jwxvngigbhfpiubf 804 | upsjdctitlbqlnhf 805 | lvpjlrpnmdjiscrq 806 | jvzchdrsnkgpgsti 807 | wuoesbwunpseyqzu 808 | xuqspvoshgxmrnrb 809 | icdawnmfnpnmyzof 810 | hwcwtibgpvctznuo 811 | bzdjrniddyamfloq 812 | hffkxtzuazageruv 813 | deixfxjvzbitalnc 814 | zihsohukiqrgsnvw 815 | nwoondfnlgowavkg 816 | qnuulsywgnoillgn 817 | koozejhfjyzuhviy 818 | oetcoipohymhpump 819 | cizwpfczfoodwuly 820 | jghlinczhtaxifau 821 | svjejifbidnvvdvy 822 | rxmbsnaqhzcnbfcl 823 | vveubmiecvdtrket 824 | sbihpvrcnzjtgfep 825 | iqbuljuxkwrlebvw 826 | ptrhvxrpezqvmmvv 827 | duwzugnhktpiybjw 828 | lijafjnujfeflkva 829 | coylvegferuuyfop 830 | fowsjrgammrqkkof 831 | pgmcruaioccmbrbz 832 | osejwflxagwqtjoi 833 | otqflckqgxzvtper 834 | slwyntdcrncktoka 835 | hzcdzsppcfkrblqg 836 | jksdmmvtzkqaompg 837 | galwwwgugetdohkg 838 | zbghtjvuikmfjuef 839 | dmqwcamjtlcofqib 840 | zbczldlfdzemxeys 841 | mdlqoklybhppdkwe 842 | tuyajhkexrrrvnlb 843 | ylfolaubymxmkowo 844 | nnsyrfnoyrxswzxn 845 | zkhunhhhigbsslfk 846 | spbokzdfkbmflanz 847 | zmzxvrwdhiegfely 848 | imywhfczvmgahxwl 849 | fnvabvxeiqvsarqq 850 | yschramprctnputs 851 | ubyjrgdzsvxzvouj 852 | qnvdhpptympctfer 853 | smipxcntyhjpowug 854 | ouhjibgcmotegljy 855 | zpflubaijjqqsptz 856 | fgysnxrnfnxprdmf 857 | pbpznrexzxomzfvj 858 | thhzjresjpmnwtdv 859 | sbmokolkhvbfqmua 860 | sxxpdohxlezmqhhx 861 | pevvsyqgoirixtqh 862 | wdxrornmhqsbfznb 863 | zjqziqbctxkshqcn 864 | nbqcwpzfwfaahylk 865 | bxbvkonpcxprxqjf 866 | xplbpqcnwzwqxheb 867 | prsakggmnjibrpoy 868 | xoguxbpnrvyqarjl 869 | ilrgryrmgwjvpzjy 870 | efwrmokaoigjtrij 871 | yhcncebopycjzuli 872 | gwcmzbzaissohjgn 873 | lggmemwbbjuijtcf 874 | fkqedbfrluvkrwwl 875 | jcbppekecevkwpuk 876 | onvolrckkxeyzfjt 877 | zzousprgrmllxboy 878 | cajthmamvxuesujl 879 | rmiozfsikufkntpg 880 | lvekypkwjbpddkcv 881 | dwaqzfnzcnabersa 882 | pcdsskjopcqwhyis 883 | uabepbrrnxfbpyvx 884 | yxlgdomczciiunrk 885 | ccerskfzctqxvrkz 886 | edvmkntljlncwhax 887 | xtcbwecdwygrvowo 888 | axqgqjqkqwrgcqot 889 | tyjrynolpzqwnjgj 890 | thrtmlegdjsuofga 891 | mpgoeqkzzqqugait 892 | emuslxgoefdjyivl 893 | klehpcehdznpssfb 894 | xfgvugyrdxolixkc 895 | acenyrbdwxywmwst 896 | yqgperajsfsamgan 897 | dbjxlnumrmhipquw 898 | hsnhirmswcenewxm 899 | qehqkbhmgucjjpwo 900 | gprjdglsbtsfzqcw 901 | wvqkyrkoratfmvfi 902 | myhzlerupqbduqsl 903 | couyazesiuhwwhht 904 | scxzehubxhkfejrr 905 | gqlitwfriqkmzqdd 906 | pxtbmqelssoagxko 907 | dzhklewjqzmrfzsw 908 | yxgeypduywntnbji 909 | kwzbgzhkzbgedlfh 910 | vukmuyfstgmscuab 911 | vcmaybfvdgwnasgt 912 | qmybkqqdhjigzmum 913 | cbnuicuncvczyalu 914 | qdgpsdpdlgjasjqr 915 | kdzxqqheurupejjo 916 | mcatrxfchbqnxelm 917 | badunwkeggdkcgco 918 | ntaeanvcylpoqmxi 919 | ghnyfytpzgvuokjn 920 | ozepydixmjijdmts 921 | qefcfwzdhwmcyfvp 922 | ycyktmpaqgaxqsxt 923 | edpizkxnsxeeebfl 924 | uwciveajsxxwoqyr 925 | rbvjkljpxtglqjsh 926 | nbplrskduutrptfk 927 | vewrbadvkseuloec 928 | upaotnjxquomoflx 929 | qfwxkinrousqywdd 930 | mqzxvvskslbxvyjt 931 | oxicszyiqifoyugx 932 | bkitxwzjpabvhraj 933 | ydrbyjecggynjpir 934 | hezyteaublxxpamq 935 | hxkuektnoovsehnd 936 | cwtbbavnhlpiknza 937 | qrwvkhbyasgfxwol 938 | qryjbohkprfazczc 939 | wjksnogpxracrbud 940 | znmsxbhliqxhvesr 941 | gkippedrjzmnnwkp 942 | pklylwsnsyyxwcwg 943 | osdpwbxoegwaiemr 944 | kpslrrrljgtjiqka 945 | vuqkloqucpyzfxgk 946 | bvtdsisgvkuzghyl 947 | qlcayluuyvlhdfyy 948 | kbimqwnzanlygaya 949 | nvoeanlcfhczijed 950 | kqvcijcuobtdwvou 951 | pmhdpcmxnprixitl 952 | yueilssewzabzmij 953 | zqxhafrvjyeyznyg 954 | mhdounmxkvnnsekx 955 | hnacyglnzicxjakg 956 | iaxfdqibnrcjdlyl 957 | iypoelspioegrwix 958 | uiqouxzmlnjxnbqt 959 | kslgjfmofraorvjo 960 | bgvotsdqcdlpkynk 961 | huwcgxhvrrbvmmth 962 | vpqyfnkqqjacpffw 963 | hpjgdfovgmrzvrcl 964 | vbntbhbvdeszihzj 965 | nrbyyuviwyildzuw 966 | wckeoadqzsdnsbox 967 | xgsobwuseofxsxox 968 | anvhsxdshndembsd 969 | iygmhbegrwqbqerg 970 | ylrsnwtmdsrgsvlh 971 | zvvejnrarsavahvc 972 | yncxhmmdtxxeafby 973 | kekgiglblctktnes 974 | uoqgymsrlrwdruzc 975 | saaoymtmnykusicw 976 | bqvcworpqimwglcp 977 | zbpgtheydoyzipjv 978 | pkykzslwsjbhcvcj 979 | jhwxxneyuuidrzvl 980 | pafeyajcrlehmant 981 | klszcvtmcdeyfsmj 982 | ledsltggvrbvlefn 983 | hubpbvxknepammep 984 | gthxhaapfpgtilal 985 | jtfhbozlometwztj 986 | jrhshycyenurbpwb 987 | fyaxbawrsievljqv 988 | lgfcgbenlqxqcxsd 989 | dhedabbwbdbpfmxp 990 | mxzgwhaqobyvckcm 991 | qboxojoykxvwexav 992 | jcpzfjnmvguwjnum 993 | ohpsxnspfwxkkuqe 994 | nyekrqjlizztwjqp 995 | thuynotacpxjzroj 996 | wymbolrlwosnbxqx 997 | iyaqihnqvewxdtjm 998 | hdvdbtvfpdrejenu 999 | gtjscincktlwwkkf 1000 | wtebigbaythklkbd 1001 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | --------------------------------------------------------------------------------