Skip to content

Commit

Permalink
Unfinished 2022 and first 3 2023
Browse files Browse the repository at this point in the history
  • Loading branch information
lismith2-cisco committed Dec 3, 2023
1 parent 7c82c87 commit 4ac0ead
Show file tree
Hide file tree
Showing 10 changed files with 1,593 additions and 0 deletions.
150 changes: 150 additions & 0 deletions 2022_16_valves.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
import re
from functools import cached_property
from math import inf
from itertools import count, permutations
from copy import deepcopy


class Valve:
def __init__(self, name, flow_rate, connected_valves):
self.name = name
self.flow_rate = flow_rate
self._connected_valves = connected_valves

@cached_property
def connected_valves(self):
return [all_valves[valve] for valve in self._connected_valves]

def __repr__(self):
return f"Valve({self.name}, {self.flow_rate}, {self._connected_valves}"

@cached_property
def distances_to_working_valves(self):
num_valves = len(all_valves)
distances = {self.name: 0}
current_valves = [self]
for distance in count(start=1):
new_valves = []
for current_valve in current_valves:
for connected_valve in current_valve.connected_valves:
if connected_valve.name in distances:
continue
distances[connected_valve.name] = distance
if len(distances) == num_valves:
break
new_valves.append(connected_valve)
else:
continue
break
else:
current_valves = new_valves
continue
break
return {valve.name: distances[valve.name] for valve in working_valves}


all_valves = {}
working_valves = []

line_re = re.compile(
r"Valve (?P<name>\w+) has flow rate=(?P<rate>\d+); tunnels? leads? to valves? (?P<valves>.+)")

start = None
for line in open("2022_16_valves_input.txt"):
match = re.match(line_re, line)
name = match.group('name')
flow_rate = int(match.group('rate'))
connected_valves = match.group('valves').split(', ')
valve = Valve(name, flow_rate, connected_valves)
all_valves[name] = valve
if name == 'AA':
start = valve
if flow_rate > 0:
working_valves.append(valve)


def calculate_route_pressure_release(start, route):
route_pressure = 0
current_valve = start
remaining_time = 30
for next_valve in route:
travel_time = current_valve.distances_to_working_valves[next_valve.name]
remaining_time -= travel_time
valve_turn_time = 1
remaining_time -= valve_turn_time
if remaining_time <= 0:
break
valve_total_pressure = next_valve.flow_rate * remaining_time
route_pressure += valve_total_pressure
return route_pressure


greatest_flow_route = sorted(
working_valves, key=lambda x: x.flow_rate, reverse=True)


def nearest_route(start):
visited = set()
current_valve = start
if start in working_valves:
visited.add(start.name)
yield start
while True:
next_valve_name, distance = min(((name, distance) for (name, distance) in current_valve.distances_to_working_valves.items(
) if name not in visited), default=(None, None), key=lambda x: x[1])
if next_valve_name is None:
return
visited.add(next_valve_name)
current_valve = all_valves[next_valve_name]
yield current_valve


greatest_flow_pressure = calculate_route_pressure_release(
start, greatest_flow_route)
nearest_route_pressure = calculate_route_pressure_release(
start, nearest_route(start))
best_pressure = 0 # max(greatest_flow_pressure, nearest_route_pressure)


def calculate_best_route(valve, route):
global best_pressure
# get the next valve options
next_valve_options = [(name, distance) for (name, distance)
in valve.distances_to_working_valves.items() if name not in route['visited']]
if not next_valve_options:
if route['route_pressure'] > best_pressure:
best_pressure = route['route_pressure']
print(route['visited_list'])
return
for name, distance in next_valve_options:
next_route = deepcopy(route)
next_valve = all_valves[name]
# travel there
next_route['remaining_time'] -= distance
# turn the valve
next_route['remaining_time'] -= 1
if next_route['remaining_time'] <= 0:
if next_route['route_pressure'] > best_pressure:
best_pressure = next_route['route_pressure']
print(next_route['visited_list'])
return
next_route['route_pressure'] += next_valve.flow_rate * \
next_route['remaining_time']
next_route['visited'].add(next_valve.name)
next_route['visited_list'].append(next_valve.name)
next_route['visited_list'].append(
next_valve.flow_rate * next_route['remaining_time'])
# calculate the next step
calculate_best_route(next_valve, next_route)


initial_route = {
'visited': set(),
'visited_list': [],
'route_pressure': 0,
'remaining_time': 30
}

calculate_best_route(start, initial_route)

print(best_pressure)
57 changes: 57 additions & 0 deletions 2022_16_valves_input.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
Valve EG has flow rate=21; tunnels lead to valves WZ, OF, ZP, QD
Valve OR has flow rate=0; tunnels lead to valves QD, CR
Valve VO has flow rate=0; tunnels lead to valves FL, OY
Valve BV has flow rate=0; tunnels lead to valves AA, KK
Valve OF has flow rate=0; tunnels lead to valves EJ, EG
Valve YZ has flow rate=0; tunnels lead to valves EL, AW
Valve EL has flow rate=16; tunnels lead to valves YZ, RD
Valve EJ has flow rate=0; tunnels lead to valves YI, OF
Valve FM has flow rate=0; tunnels lead to valves VX, FX
Valve FL has flow rate=22; tunnels lead to valves VO, FH
Valve QD has flow rate=0; tunnels lead to valves OR, EG
Valve XC has flow rate=0; tunnels lead to valves UA, GV
Valve WZ has flow rate=0; tunnels lead to valves FH, EG
Valve AT has flow rate=0; tunnels lead to valves FX, OZ
Valve MZ has flow rate=0; tunnels lead to valves UA, YI
Valve WI has flow rate=0; tunnels lead to valves OH, WW
Valve YD has flow rate=0; tunnels lead to valves OZ, WW
Valve QX has flow rate=0; tunnels lead to valves OY, YI
Valve AA has flow rate=0; tunnels lead to valves BV, ZE, PE, XL
Valve VX has flow rate=0; tunnels lead to valves FM, GQ
Valve VN has flow rate=0; tunnels lead to valves TU, OQ
Valve RD has flow rate=0; tunnels lead to valves OY, EL
Valve QR has flow rate=0; tunnels lead to valves QQ, OZ
Valve CD has flow rate=0; tunnels lead to valves WW, RJ
Valve VA has flow rate=20; tunnel leads to valve DE
Valve RJ has flow rate=0; tunnels lead to valves CR, CD
Valve UA has flow rate=19; tunnels lead to valves XC, MZ, KY
Valve WW has flow rate=4; tunnels lead to valves YD, PE, WI, DY, CD
Valve MC has flow rate=0; tunnels lead to valves ZP, XY
Valve XY has flow rate=24; tunnel leads to valve MC
Valve FH has flow rate=0; tunnels lead to valves FL, WZ
Valve DE has flow rate=0; tunnels lead to valves VA, FX
Valve DY has flow rate=0; tunnels lead to valves WW, YI
Valve FX has flow rate=14; tunnels lead to valves DE, FM, AT, OQ
Valve UU has flow rate=0; tunnels lead to valves AR, AW
Valve OY has flow rate=13; tunnels lead to valves RD, VO, AR, GV, QX
Valve CS has flow rate=0; tunnels lead to valves MG, OZ
Valve KY has flow rate=0; tunnels lead to valves UA, AW
Valve KK has flow rate=0; tunnels lead to valves BV, TU
Valve GQ has flow rate=18; tunnel leads to valve VX
Valve ZV has flow rate=0; tunnels lead to valves YI, LS
Valve QQ has flow rate=0; tunnels lead to valves CR, QR
Valve AW has flow rate=25; tunnels lead to valves YZ, KY, UU
Valve OH has flow rate=0; tunnels lead to valves WI, TU
Valve CR has flow rate=8; tunnels lead to valves OR, ZE, RJ, LS, QQ
Valve TU has flow rate=7; tunnels lead to valves MG, VN, OH, KK
Valve ZP has flow rate=0; tunnels lead to valves EG, MC
Valve AR has flow rate=0; tunnels lead to valves UU, OY
Valve OZ has flow rate=10; tunnels lead to valves YD, XL, CS, AT, QR
Valve GV has flow rate=0; tunnels lead to valves XC, OY
Valve PE has flow rate=0; tunnels lead to valves WW, AA
Valve ZE has flow rate=0; tunnels lead to valves AA, CR
Valve XL has flow rate=0; tunnels lead to valves OZ, AA
Valve YI has flow rate=15; tunnels lead to valves QX, MZ, EJ, DY, ZV
Valve OQ has flow rate=0; tunnels lead to valves FX, VN
Valve MG has flow rate=0; tunnels lead to valves TU, CS
Valve LS has flow rate=0; tunnels lead to valves CR, ZV
17 changes: 17 additions & 0 deletions 2022_17_tetris.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import itertools

tetris_pieces = itertools.cycle([
{(0, 0), (1, 0), (2, 0), (3, 0)},
{(1, 0), (0, 1), (1, 1), (2, 1), (1, 2)},
{(0, 0), (1, 0), (2, 0), (2, 1), (2, 2)},
{(0, 0), (0, 1), (0, 2), (0, 3)},
{(0, 0), (1, 0), (0, 1), (1, 1)},
])

jets = itertools.cycle(open("2022_17_tetris_input.txt").read())

for tetris_piece in itertools.islice(tetris_pieces, 12):
print(tetris_piece)

for jet in itertools.islice(jets, 12):
print(jet)
1 change: 1 addition & 0 deletions 2022_17_tetris_input.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
><<<>><><><<<><<<<>>><>>>><<<<>>><<<>>>><>><><<>>><<<<><<>>><>><><>>><<>>><<<>><<<<>><<<>><<<><<<<>>>><<>>><<<><<>>><<>><<><<>><<<<>><<>>>><<<<>>><<<>>>><>>><<><<<<>>>><<>><<>>>><><<><<><<<<>>><<<<>>>><<<<>>>><<>><>>>><<<<>>><<<<>><<>>><>><>><<<<>>><<<><>>>><<<<><<>>><<<<>><<<<>>>><>>><<>><>>><>>>><<<<>><<<>>><>><<><<<>>><<>><<<><<>><<<>><<<<>>><<>><>><<><>>>><<<<><<<<>>>><<<>>><>><<<<>>><<><<>>>><<<><<<<>>><<<>>>><>>>><<<<>>><<<<>><<><<<<>>><<<<>>><>>>><<<<><<>><<<<><<<<>>>><><<>><>>><<>>>><<><><<>>>><>>><>><<<>>>><<>><<><<>><<<<>>><>><<<<>>><<>>><<<<>>>><<<>>><<<<>>>><<<>>>><<<<>>><<><<<>><<>>><>>>><<>><<>>><<<<>>>><<<>>>><<>>><<>><<<<>>><<<<>>><<<<>>><>>>><<<<>>>><<><<<<>>><<<<>><<<<>>>><>>>><>><>>>><<>>><>>>><<<<>>>><>>>><>>>><>>><<>>>><<<>>>><<>>><<>><<<>><><<><<>>>><<<<>><<>>><<<<>>>><<<>>>><<<<>><<<>>><>><<<<><>>><>>>><<>>>><<<<>><<>>><<<>><<>>>><>><>>><<>>>><<<>><<<<><<<><<>>>><<<><>>><<<<>>>><<<>>><>><<<<>>><<>>>><<<<><<>>>><<<><<<<>><>><<><<>><<>>>><<><<<<>>><<><>><<>><>>>><<>>>><>>>><>>><<<<>>><>>><<>><<>>><<>>><<<>>>><<>>><>>><<<>><<<<>>><<>>>><<<<>><>>>><>>>><<<<><<<><><>><<<>><<<><<<<><<>>>><<<>>>><<<>>><<<<>>><<<>><><<<>>>><<<<>>>><<>><><>><<<><<<><><<<>>>><>>>><<>>>><<<<>>><>>>><>>>><<<><<<><<<<>>>><<<<>><<<>>><><<<<>><<<<>>>><<>>>><<><<<>>><>>>><<<><>><<<<>>>><<<>>>><<<><<<<>><<<<><>>><<<<><<<<>>><<<>><<<<>><>>>><<<<>><<>>>><<<>>>><<<<><<<<>>><<<>>>><>>>><<<<>><<<>>><<>><<>>>><<><<<<>>>><<<>>><<<>><<<>>>><>>>><>>><<>>>><<>><<<<>>><<<>><><<><<<<><<>>>><<<<>>><<<<>>><<>>>><<><<<<><<<>><>><<<>>>><<<>>>><<>>>><<<<>>>><><<<<><<><<<>>><><<<<><<>><<<>><<>>><><><<<>>><>>>><<<>><<<>>>><<><<<><<><><<<<>><<<<>>><>>><<><<<<>><<<>><<<<>><<<<><<<<><<<<>><>>>><<<>>><<<<><<<<>>>><<<>><<<<>>><<<><<<<>>><>>>><<>>><<>>><>>>><<>>>><>>>><<<>>>><<<<><<<<>><><<>>>><<>>><<<><>><<<<><><<<>>>><<>><>>>><<>><>><>>><<>>><>><<<<>>>><<><<<><<<>>><><<<<><>>>><<<>>>><>>>><<<><<<<>>>><<<<>><<<>>><<<<>>>><<<>>>><<<<>>><>><<<><<<<><<<<><<<<>><<><<<>>>><<><<<><><<<>>><>>><<><<<<>>><<<<>>>><<<<>>>><<<<>><>><<<<>>>><<<<>>>><<<<><<>>>><><<<<>>>><<<<>>>><<<<>>><<<<>>>><<>><<<>>><<><><<>>><<<<>>><<>>>><<<<>>>><<<<>>>><<<<>>>><<<<>><<<<><><<<>>><<<<><<>>>><<<<>><>>><<<><>><<>>><<<<>>><<<>>><<<<>><>>>><><>>><<<>>>><<<>>><>>>><<<<>><<<><<><<><><<>>>><<><<<><>><<<><>><<<<><<<>>>><>><<>>>><<>>>><<<<>>>><<<>>><<><<>><<<<>>>><><<>><<>>><<<<>><<<<>><<<>>><>>><<>>>><<<<>>><<<<>><<<><<<>><<>>>><<><<<<>>>><<<<>>>><>>><<><><>>><<<<>><<<<>>><<><<<<><>><<>>>><<>>><<<><<>>><>><<<>>><>><<>>><>>>><>>>><<<>><<<>>>><><<<>>>><<><<<><>>>><><>><<<<>>><><<<<>>>><<>>><<<><<<<>><><>>><>>>><<>><<<<>><<><<>>>><><<<<>>>><><<>><<<<>>>><<<>>><<<<><<<><<><><<<<>><<<><><<<><<><>>>><>><<>>>><<><<<>>><<<<>><<<>><>><><<<>>>><<>><<<<>><<<<>><>>>><><<<<><<<<>>><>>><<>>>><<<>>>><<><<>><<<><<<<>><<<<>>>><<<><>>>><><<>>><>>>><<<><<>>><>>><<<>>><<<<><>><<>>>><<<><<<>><<<<>><>>><<<>><<><<><<<<>>>><<>>><<>>>><<<<>><<><<<<>>><<>>>><<<<>>><<<>><>>><<<>><><>>>><<<<>><<>><>>>><>>><<<<>><<<><<<>>>><<<<>>><<>><<<<>>>><><<>>>><<>>>><<<><<>>>><<>>><<>>>><<<>><<<>>>><<<<>>><>>><<<><<>>>><<>>>><<>>>><<<><<<><<<>>><<<<>><<<<>>>><<><>><<><><<>>>><<<<>><<<<><<>>><<<><<>>>><<<><<>>>><<<><<<<>>><<<>>><<><>><>><<<<><<<>>><<><<>>><<><<<>>>><<<<>>>><<<>>>><<>>><<<>>><<<<>>><>>>><<<><<<>>>><<<<><<><<>>><<<<>>><>><><<<<>>><>>><<>>>><<>><<<<>><<<>>>><><>>>><<<>><>>>><<<>>><<<<>><>>><<>>><<><<>><><<<>>><><<<>><<<>>>><<<<>>><<<<>><>>>><<<>>><<<<>>><>><<>>><<><<<><<<>><<<><<<>>><>><<<<>><<><<>>><<<>>>><<>>><<<<>><<<<>><>>><<<>><<><<>>>><<<><<<<>>><<<<>>><<<>>><<<>>><<<<>><<>>><><<><<<<>><<<<>>>><<<<><<>>><>>><<><<>>>><><<<>><<<><<<<>>>><<<<><<<<><<>>>><<<><<<<>>>><><<<>>>><><>>>><<<<>><><<<><>>>><<>>>><<<<>>><<<>>>><<<><>><>>><<<><<<>><<><<<<>><<<<>>>><<<<>><<<>>>><<>>>><<>>>><>>><<<><<<>>>><<>>><<<<><<>>><<<<>>><<<<>>><<><<<>>><>>><<>>>><<<<>><<<<>><<<<><>>>><<<<><>>>><<<>>><<>>>><<<<><<><>><<<>><<<<>>><<><<<<>><>>><<<<>>><<<<>>><<><>><>><<<>>><<>>>><<>>><<<>>>><<<<>>>><<<<><<<<><>>><<>>>><<<>><<>>><<>>>><<<<><>>>><<<<>><<<>>><<<<><><><<><<>><>>>><<>>>><><>>>><<<<><<<<>><<<>><<<<>>><<<>>>><<<><<>>><<>>><<<<>>>><><<<<>><<<><<<<>>><<>>>><>>><<>>><<<><<>><<<<>>>><<<>>><<<><>>>><<>><<<<>>>><<<<>>><<<<>><<>><<<>>>><<<<>><<<>>><<><<>><<<<>><<<<>><<<>>>><<<>><<>>>><<>>>><<>>>><>>>><><>><>><<><>>><<<<>>>><>><<><>>>><<>><<>><<<><<><<<<>><>><<<>><<<<>>>><<<<><><<>>>><>>>><<>>>><<><<>>><<<><<>><<>><<<<>><<>>><<<<><<>>><>>><<<<>><>>><<<><<<>>>><<<><<<>>>><<<>>>><<>><>><<>>><<<<>>><<<>><>>>><<<><>><>>>><>>><<>>>><<<<>>>><<>>><<<>><<<>>><<<>>>><<<<>><<<<>>><<<<>><><>><<<>>>><<>>><<<><<>><>><<>>>><>>>><<><<><<>>>><>>><<<><<>>><>><<<><<<<><<<>><<<>><<<>><<>><<<<>><>><<><<<><<<<>><>><<<>><>>><<>><<><>>>><<<>><>>><<<<>>><<>>><>><<>><<>>>><<>>>><><<<>><<<>>>><<<<>>><<<>>><<<<>>>><<>>><>>>><<<><>>>><>>>><<>><>><<<<><>><<><>><<><>><<<<><<<>>>><<<>>>><<>>>><<><><>>>><>>>><<<<>>>><<<>><<>><<<>><<<<>>>><<<<>><<>>>><<<>>>><<<<>>><<><<><<<>>><<<<>>>><<>>>><<<<><<>>>><<><<<<>><<>>><<<<>>>><<<<><<<>>>><<><<><<>>>><<<<>><<<>>><<<>><<<<>><<<<>>>><<<>>><<<>><<<<><<<>>><<>>><<<<>>><<<>><><<<<>>><><<<<><><<>><>>><<>>>><><>>><<><<>>>><>>><<<<><>><<<>>>><<<<>>>><<<<>>>><<<<><>><<<<>>>><<<<>>>><<<<>>>><<>>>><<<>>>><<<<>>>><<<>>><<>>>><><<<>>>><<<>>><<><<<<>>><<<<>>>><<<<>>>><<<<>>><<<<>><<<<>><<<<><<<>>><<>>><<<><<<<><>>>><<<<>>>><>><<><<>><<<>>>><<<><<<>>>><<><<<<>>><>><>><<<>>><<<<><>>><<<>>><<<><<<<><<<><>>>><<<>>>><<>><<>>><>>>><<<><<>><>><>>><<<<>><>>>><<<<><>><>>><>>><<<>><<<>><>>><>><<<><<>>>><<<<>>><<><<<>>>><>>>><>><>>><<<<><<<>>>><>>><<<>>><<<>>><>>>><<>><<><<<<>>>><<<<>><><<<<>><>>><<>>><<<>>><>>><<<<><><<<>><>>><<<<>>>><<>>><>><<>>><<>>>><><>>><>>><<<<>><<<<>><<>>>><<<<>>>><<>>>><<<<>>>><><<<<>>>><<<<>><>>>><>>>><<<<>>><<<<><<<>>>><<<<>><<><<>>>><<>><<<>>>><<<>>>><<<><<>>><<<><<<>>><<<<>>><<>>>><<<<>>><>><<<>><<>>><<<><>>>><<<<>><>>>><>><<<>>><<>>><<<<>>><<<>><<<<>>><<<<>><<<<>>><<>>>><<<>>><<<<><<>>><<>><<<>>>><<<<>><><<<>><<<><<<<><<>>><<<>>><<>>><<<>><<<<>>>><<<<><><>><<<<><>>>><<>>>><>>>><<<>>>><<<<>><>>>><<<<>>>><<<>><<<<>><>>>><><<>>>><<<<>><<<>>>><>><><>>><<<<><<>>><><<<<>><<>><>>>><<<<><<<<>>><<<>><<<>><>><<>><>>><<><>><<>><<<><<<>>><<<<>><<>>><>><<<<>>><<<>>>><<<>>>><<<>>><<>>>><<>>><>><<<>>><<<>><>><<<<>>><<<>>>><<<>>><<<<><<>>>><>>>><>><>>>><><<<>>><><>>>><>>>><<<>>>><<>>>><<<>>><<<>>><<<>>>><>><><<<>><<<>><>>><<<>><<<<>>><<<<><<<>><<<>>><<<>>><>><<<<>>><<<><>><>>><<<>>><>><>><<><<<<><<<>><<>><>><<>>>><<<<><<<<>>>><<<<>>><>><<>>>><<<>><<<<>><<<>><<<>>>><><<<>>>><>>><<<>>>><<<<><<>><<<><>>>><<<><<><<><<>>>><<<><<>>>><>><><<>><<<<>>>><<<><<>><><<><<>><<>>><<<>><>><<<>>>><<<<>><>>>><<<<><<>><<<<>>><<<>>><<>><<<>>><<<><<<<><<<>><<>>><<>>>><<<<><<<<>>><<<>>><<>>><<>><<<<>>><<>><<>>><<<>>>><<<><>><<>>>><<<>>>><<<<><<<<><<<>>>><<><<<>><<<<>>><>>><>>><<><<>>><<<<>>><<<><<<>>>><<<<>>><<<<>>>><><>><<>>><<<<>><<><>><<><<<>><<<>><<<><<<<>><<>><<<<>><<<<>>><<<<><<<<>><<><<>>>><<<<>>>><<><<<>><<<>>><<<<>>>><<<><>>>><<<><<>>><<<<>><<<<>>>><>><<<<>><<<>><>><<<<>>><<<<>><<<<>>>><<>><>>><<>>>><<<>>><<>>>><<<<>>>><<<>>>><<>>><<>>><>><<<<><><<<>>>><<<>>>><><<<>>><<<>>><>>><<<>>><<>>><<<>><<<<><>><<<<>><<<<>><>>>><><<<<>>><<<>>><<>><>><<<<><<<>>>><<<<>><<<>><<>>><<<<><><<<<>>>><>>>><<<><>>>><<><>>>><<<<>>>><<><<>>><<<<>><>>>><<<<>>>><<>>>><<<>><<<<>><><>>>><<<<>><<>><>><<<><<>>>><<>><<<<>>>><<<><<<><<<>>>><>><>>><<<>>><<>>>><<>>>><>>>><<<<>><<>>>><<<<>><<><<<<><<<<><<<>>><<<<>><<>>><<<<>><<<>>>><<><<<<>>>><<><>>><<<>><<<><<>>><<<<><<>>><<<><>>><><<>>>><<>>>><<><<<<>>>><<<<>>>><<>><<><<>>><<<><<<>><<>><<<>>><>>><>>><<>>>><<<<><>>><<><>><>>><<>>>><><<<>>><<<><<>><<>>><<><<<<><<>>><><>>>><<<>>>><<<>>>><<<<>><>>><><<<>>>><<>>>><<<<>>><<<>>><<<>><>>><<<<>>><>><<>><<<<>><<<<>><<><<<>>><<<>><<<<>><<>>>><>>>><<<<><<<<>><<><>>><<<<>>>><><<<>>>><<>><<<>><<<>><<<>>><<<><<<><>><<<>><><>>>><<<>>>><<<>>>><<<>>>><<>>>><<<<>>>><>>>><<<>>>><<<<><<<<>>><<<>>>><<<><><<<<>>><<<><<>>><<>><<<<>>>><<>>><>>>><<<<>>><>>><<<>><<<>>><<<<>>>><<<>><>><<>><<>><<<>><<>><<<<>>>><<<><><<<<>>>><<>><>>>><<<<>>>><<<<>>>><<<<><>>>><>><<<<>><<<>><<>><<>><<><<>><><<<<>><<<>><<<>><>>><<<<>><<>><>><<<<>>><<<><>><<>>><<<>>><<>>>><<<<>><<>><>>><<><<<<>>><<>>>><<<><>><<<<>><<<<>><<><>><<<<>>><<>><<<>>>><<>><<<<>>>><<>><<><<<<>>><<><<<>>>><<>>><<>>>><<>>><<<<>>><<>>><<><<<><<>><>>><>>><<<<><<><<><<<>>>><<><<>><>>><>><<>>><>>>><<<>>>><>>>><><<<<>>>><>>><><<<<>><<<<>><<<>>>><<>>><<>>><>><<<><<<<>><>>><<<>><>><>>><><<<><<>>><<<>>>><<<><<<<>>><<>><<<>><<<><<<<><><<<>>><>><<>>>><>>><<><<<<>><<<<><<<<>><>>><<<>>><<>>><>>>><<>><<<>>>><>>><<>>><>>>><<>><<<><<<<><><<<>>>><>><<<<>>>><<><<><<<>>><><<<<>><<>>>><<<<>><<>>><<<>><<<><<<<>><<<<><<>>><<<>><<<<>><<>>><><<<<>>><<>><<<>>><<>>>><<<<>>>><<<<>>><<<><<><>>>><><<<><<<<>><<>>>><<<>>>><<<<><<<>>>><<<>>><>><<<>>><<><>>>><>>><>><<<><><<>><<<<><<<<>>>><>>><>>>><>><<<<>><><<>>><<<>>>><<<<>><<<<>><<>><<>><<>><>>><<>><<><<<>>><<<>><<<<>>><<>><<<<><><<>>><<<>><<<<>><<>>><>><<<<>>>><<<><<<<>><<<>>>><<<<>>><<>>><<>><<><>><<<><<><>>>><<>>>><><<>>>><>><>><<><<><<<<><<><<<><<<>>>><>>><>>><<<<><<><<<<>>><<><<<<>>>><<>>><<><<<<>>>><><<>><<<>>>><<<<>>>><><>>><>>><<<>>>><<>><<<<>><<<>>><<<>>><<<<>><<<<>>><<<<><<>><<><<<>>>><>>><>><<<<>>>><>><<<<>>>><><>><<<<><<<<>><>>><<>><<>>><<<><<<<><<>><<><><>>>><<<>><>><<<>>><<>><<<<>>>><><<>>><>>>><<<<>>><<<<>>><<><><<<>>><<<>><<<<>>><<>><<<>>><<><<<<>>><<<>>>><<<<>><<<<><>>><>><<<>><><<>>><<<>>>><<>><<>>><><<<<><<<>><<<<>><<<>>><<<<>><>>>><<><<<<>>>><<<<>>><<<<>>><<<<>>>><<<>>>><<>>>><<>>>><>><<<>>>><<<>>>><>>>><>>>><<><<<<>>>><<<<><>><<><<<<>>><<<>>>><<<<>>>><<<><<>>>><<<>><<>><<<>><<>><<>>><<<><<>>><<<<><<<>>>><<<<>>>><<<><<<>>><<<><<<>><>>><<>>>><<<<>>><<<><<<<><<<>><<<<>>><<<>>><<>>>><<<<>>>><<<<><<<>>><>><>>>><<<>>><<<>>>><><<<>><<<>>><<<>>><<><<<<>>>><<>><<<>>>><<><<<><><<<><<<>><<<<>>>><<>>><<<<>>>><<>>><>>>><<>>>><<><<<>>>><<<>>>><<<>>>><<<<><<>>><>>>><<<<>>>><<<<>>><<<<>>><<><<<>><<<>><<<><<<<>>><>>><>><>>>><><><<<<>>>><>>>><<<<><<<>><<<<>><>>><<<>>><<<><<<>>>><<<><<<<>>><<<>><>>>><<>>><<<>>><<<>>><<<<><>>><<<>>><<<>>>><<<<><><<>><<><<<><<>><<><<<>>><<<<>><<<>>><>>>><><>>>><<<<>>>><>>><>>><<
Loading

0 comments on commit 4ac0ead

Please sign in to comment.