From 9206207bbcc790735c21a512f397a22de99ea976 Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 14:36:00 -0500 Subject: [PATCH 01/13] working on lsystem --- src/lsystem.js | 196 ++++++++++++++++++++++++++++++++++++------------- src/main.js | 2 +- 2 files changed, 147 insertions(+), 51 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index e643b6d..38af01b 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -1,27 +1,123 @@ // A class that represents a symbol replacement rule to // be used when expanding an L-system grammar. function Rule(prob, str) { - this.probability = prob; // The probability that this Rule will be used when replacing a character in the grammar string - this.successorString = str; // The string that will replace the char that maps to this Rule + this.probability = prob; // The probability that this Rule will be used when replacing a character in the grammar string + this.successorString = str; // The string that will replace the char that maps to this Rule } // TODO: Implement a linked list class and its requisite functions // as described in the homework writeup +class Node { + constructor(prevNode, nextNode, symbol) { + this.prevNode = prevNode; + this.nextNode = nextNode; + this.symbol = symbol; + } + getSymbol() { + return this.symbol; + } + setSymbol(newSymbol) { + this.symbol = newSymbol; + } + getNext() { + return this.nextNode; + } + setNext(newNext) { + this.nextNode = newNext; + } + getPrev() { + return this.prevNode; + } + setPrev(newPrev) { + this.prevNode = newPrev; + } + print() { + console.log("prevSymbol " + this.prevNode.getSymbol()); + console.log("nodeSymbol " + this.getSymbol()); + console.log("nextSymbol " + this.nextNode.getSymbol()); + } +} + +class LinkedList { + constructor(startNode, grammarDictionary) { + this.startNode = startNode; + //this.endNode = startNode; + this.length = 1; + // an object mapping symbols to an array of other symbols + this.grammarDictionary = grammarDictionary; + } + // adds a node to the end of the linked list + addNode(nodeSymbol) { + var temp = this.startNode; + while (this.startNode.getNext() != null) { + temp = temp.getNext(); + } + var newNode = Node(temp, null, nodeSymbol); + temp.setNext(newNode); + //this.endNode = newNode; + } + + deleteNode(nodeToDelete) { + var prevNode = nodeToDelete.getPrev(); + var nextNode = nodeToDelete.getNext(); + prevNode.setNext(nextNode); + nextNode.setPrev(prevNode); + } + + linkNodes(nodeA, nodeB) { + nodeA.setNext(nodeB); + nodeB.setPrev(nodeA); + } + + expandNode(nodeToExpand) { + var symbol = nodeToExpand.getSymbol(); + var replacementSymbols = this.grammarDictionary[symbol]; + if (replacementSymbols.length > 0) { + var nullNode = Node(null, null, ''); + var prevNode = nodeToExpand.getPrev(); + var nextNode = nodeToExpand.getNext(); + this.deleteNode(nodeToExpand); + for (var i = 0; i < replacementSymbols.length; i++) { + var newNode = Node(nullNode, nullNode, replacementSymbols[i]); + this.linkNodes(prevNode, newNode); + prevNode = newNode; + if (i == replacementSymbols.length - 1) { + this.linkNodes(newNode, nextNode); + } + } + } + } + + print() { + var temp = this.startNode; + var count = 0; + while (this.startNode.getNext() != null) { + console.log(count); + temp.print(); + temp = temp.getNext(); + count++; + } + count++; + console.log(count); + temp.print(); + } +} + // TODO: Turn the string into linked list export function stringToLinkedList(input_string) { - // ex. assuming input_string = "F+X" - // you should return a linked list where the head is - // at Node('F') and the tail is at Node('X') - var ll = new LinkedList(); - return ll; + // ex. assuming input_string = "F+X" + // you should return a linked list where the head is + // at Node('F') and the tail is at Node('X') + var ll = new LinkedList(); + return ll; } // TODO: Return a string form of the LinkedList export function linkedListToString(linkedList) { - // ex. Node1("F")->Node2("X") should be "FX" - var result = ""; - return result; + // ex. Node1("F")->Node2("X") should be "FX" + var result = ""; + return result; } // TODO: Given the node to be replaced, @@ -30,47 +126,47 @@ function replaceNode(linkedList, node, replacementString) { } export default function Lsystem(axiom, grammar, iterations) { - // default LSystem - this.axiom = "FX"; - this.grammar = {}; - this.grammar['X'] = [ - new Rule(1.0, '[-FX][+FX]') - ]; - this.iterations = 0; - - // Set up the axiom string - if (typeof axiom !== "undefined") { - this.axiom = axiom; - } + // default LSystem + this.axiom = "FX"; + this.grammar = {}; + this.grammar['X'] = [ + new Rule(1.0, '[-FX][+FX]') + ]; + this.iterations = 0; + + // Set up the axiom string + if (typeof axiom !== "undefined") { + this.axiom = axiom; + } - // Set up the grammar as a dictionary that - // maps a single character (symbol) to a Rule. - if (typeof grammar !== "undefined") { - this.grammar = Object.assign({}, grammar); - } - - // Set up iterations (the number of times you - // should expand the axiom in DoIterations) - if (typeof iterations !== "undefined") { - this.iterations = iterations; - } + // Set up the grammar as a dictionary that + // maps a single character (symbol) to a Rule. + if (typeof grammar !== "undefined") { + this.grammar = Object.assign({}, grammar); + } + + // Set up iterations (the number of times you + // should expand the axiom in DoIterations) + if (typeof iterations !== "undefined") { + this.iterations = iterations; + } - // A function to alter the axiom string stored - // in the L-system - this.updateAxiom = function(axiom) { - // Setup axiom - if (typeof axiom !== "undefined") { - this.axiom = axiom; - } - } + // A function to alter the axiom string stored + // in the L-system + this.updateAxiom = function(axiom) { + // Setup axiom + if (typeof axiom !== "undefined") { + this.axiom = axiom; + } + } - // TODO - // This function returns a linked list that is the result - // of expanding the L-system's axiom n times. - // The implementation we have provided you just returns a linked - // list of the axiom. - this.doIterations = function(n) { - var lSystemLL = StringToLinkedList(this.axiom); - return lSystemLL; - } + // TODO + // This function returns a linked list that is the result + // of expanding the L-system's axiom n times. + // The implementation we have provided you just returns a linked + // list of the axiom. + this.doIterations = function(n) { + var lSystemLL = StringToLinkedList(this.axiom); + return lSystemLL; + } } \ No newline at end of file diff --git a/src/main.js b/src/main.js index f0c6600..d29dd95 100644 --- a/src/main.js +++ b/src/main.js @@ -54,7 +54,7 @@ function clearScene(turtle) { } function doLsystem(lsystem, iterations, turtle) { - var result = lsystem.DoIterations(iterations); + var result = lsystem.doIterations(iterations); turtle.clear(); turtle = new Turtle(turtle.scene); turtle.renderSymbols(result); From 99ec0c08d6d1cc329dc4d95e1750d91da42de590 Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 15:06:40 -0500 Subject: [PATCH 02/13] stringToLinkedList done --- src/lsystem.js | 54 ++++++++++++++++++++++++++++++++++---------------- src/main.js | 4 +++- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index 38af01b..ed1c89f 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -8,10 +8,10 @@ function Rule(prob, str) { // TODO: Implement a linked list class and its requisite functions // as described in the homework writeup class Node { - constructor(prevNode, nextNode, symbol) { - this.prevNode = prevNode; - this.nextNode = nextNode; - this.symbol = symbol; + constructor() { + this.prevNode = null; + this.nextNode = null; + this.symbol = ''; } getSymbol() { return this.symbol; @@ -39,21 +39,34 @@ class Node { } class LinkedList { - constructor(startNode, grammarDictionary) { - this.startNode = startNode; + constructor() { + this.startNode = new Node(); //this.endNode = startNode; - this.length = 1; + this.length = 0; // an object mapping symbols to an array of other symbols - this.grammarDictionary = grammarDictionary; + this.grammarDictionary = {}; } + // adds a node to the end of the linked list - addNode(nodeSymbol) { - var temp = this.startNode; - while (this.startNode.getNext() != null) { - temp = temp.getNext(); - } - var newNode = Node(temp, null, nodeSymbol); - temp.setNext(newNode); + addNodeWithSymbol(nodeSymbol) { + console.log("adding node"); + console.log("length is currently" + this.length); + if (this.length == 0) { + var newNode = new Node(); + newNode.setSymbol(nodeSymbol); + this.startNode = newNode; + } else { + var temp = this.startNode; + console.log(this.startNode); + while (temp.getNext() != null) { + temp = temp.getNext(); + } + var newNode = new Node(); + newNode.setSymbol(nodeSymbol); + newNode.setPrev(temp); + temp.setNext(newNode); + } + this.length += 1; //this.endNode = newNode; } @@ -73,12 +86,13 @@ class LinkedList { var symbol = nodeToExpand.getSymbol(); var replacementSymbols = this.grammarDictionary[symbol]; if (replacementSymbols.length > 0) { - var nullNode = Node(null, null, ''); + var nullNode = new Node(); var prevNode = nodeToExpand.getPrev(); var nextNode = nodeToExpand.getNext(); this.deleteNode(nodeToExpand); for (var i = 0; i < replacementSymbols.length; i++) { - var newNode = Node(nullNode, nullNode, replacementSymbols[i]); + var newNode = new Node(); + newNode.setSymbol(replacementSymbols[i]); this.linkNodes(prevNode, newNode); prevNode = newNode; if (i == replacementSymbols.length - 1) { @@ -109,7 +123,13 @@ export function stringToLinkedList(input_string) { // ex. assuming input_string = "F+X" // you should return a linked list where the head is // at Node('F') and the tail is at Node('X') + var symbols = input_string.split(""); var ll = new LinkedList(); + for (var i = 0; i < symbols.length; i++) { + ll.addNodeWithSymbol(symbols[i]); + } + console.log(ll); + //ll.print(); return ll; } diff --git a/src/main.js b/src/main.js index d29dd95..687ef96 100644 --- a/src/main.js +++ b/src/main.js @@ -1,7 +1,7 @@ const THREE = require('three'); // older modules are imported like this. You shouldn't have to worry about this much import Framework from './framework' -import Lsystem, {LinkedListToString} from './lsystem.js' +import Lsystem, {stringToLinkedList, linkedListToString} from './lsystem.js' import Turtle from './turtle.js' var turtle; @@ -27,6 +27,8 @@ function onLoad(framework) { // initialize LSystem and a Turtle to draw var lsys = new Lsystem(); + stringToLinkedList("F+X[F]"); + turtle = new Turtle(scene); gui.add(camera, 'fov', 0, 180).onChange(function(newVal) { From 40b37c9023efc393af08b4bdbf2adea41a464a6e Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 15:09:20 -0500 Subject: [PATCH 03/13] testing ssh --- src/lsystem.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index ed1c89f..5616956 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -41,7 +41,6 @@ class Node { class LinkedList { constructor() { this.startNode = new Node(); - //this.endNode = startNode; this.length = 0; // an object mapping symbols to an array of other symbols this.grammarDictionary = {}; @@ -67,7 +66,6 @@ class LinkedList { temp.setNext(newNode); } this.length += 1; - //this.endNode = newNode; } deleteNode(nodeToDelete) { From c718543ca7cb507ba90906e3bdbd0c12dd875009 Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 15:15:27 -0500 Subject: [PATCH 04/13] linkedListToString done --- src/lsystem.js | 35 +++++++++++++++-------------------- src/main.js | 3 ++- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index 5616956..d0b4a43 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -31,11 +31,6 @@ class Node { setPrev(newPrev) { this.prevNode = newPrev; } - print() { - console.log("prevSymbol " + this.prevNode.getSymbol()); - console.log("nodeSymbol " + this.getSymbol()); - console.log("nextSymbol " + this.nextNode.getSymbol()); - } } class LinkedList { @@ -68,11 +63,20 @@ class LinkedList { this.length += 1; } + getStartNode() { + return this.startNode; + } + + getLength() { + return this.length; + } + deleteNode(nodeToDelete) { var prevNode = nodeToDelete.getPrev(); var nextNode = nodeToDelete.getNext(); prevNode.setNext(nextNode); nextNode.setPrev(prevNode); + this.length--; } linkNodes(nodeA, nodeB) { @@ -96,23 +100,10 @@ class LinkedList { if (i == replacementSymbols.length - 1) { this.linkNodes(newNode, nextNode); } + this.length++; } } } - - print() { - var temp = this.startNode; - var count = 0; - while (this.startNode.getNext() != null) { - console.log(count); - temp.print(); - temp = temp.getNext(); - count++; - } - count++; - console.log(count); - temp.print(); - } } @@ -127,7 +118,6 @@ export function stringToLinkedList(input_string) { ll.addNodeWithSymbol(symbols[i]); } console.log(ll); - //ll.print(); return ll; } @@ -135,6 +125,11 @@ export function stringToLinkedList(input_string) { export function linkedListToString(linkedList) { // ex. Node1("F")->Node2("X") should be "FX" var result = ""; + var temp = linkedList.getStartNode(); + while (temp != null) { + result += temp.getSymbol(); + temp = temp.getNext(); + } return result; } diff --git a/src/main.js b/src/main.js index 687ef96..f25ce3d 100644 --- a/src/main.js +++ b/src/main.js @@ -27,7 +27,8 @@ function onLoad(framework) { // initialize LSystem and a Turtle to draw var lsys = new Lsystem(); - stringToLinkedList("F+X[F]"); + var ll = stringToLinkedList("F+X[F]"); + console.log(linkedListToString(ll)); turtle = new Turtle(scene); From 837b81f19702bf4124b7e3c85a0781f3b91223e6 Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 18:45:57 -0500 Subject: [PATCH 05/13] node replacement working --- src/lsystem.js | 46 ++++++++++++++++++++++++++++++++++------------ src/main.js | 4 +++- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index d0b4a43..8018aba 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -37,21 +37,16 @@ class LinkedList { constructor() { this.startNode = new Node(); this.length = 0; - // an object mapping symbols to an array of other symbols - this.grammarDictionary = {}; } // adds a node to the end of the linked list addNodeWithSymbol(nodeSymbol) { - console.log("adding node"); - console.log("length is currently" + this.length); if (this.length == 0) { var newNode = new Node(); newNode.setSymbol(nodeSymbol); this.startNode = newNode; } else { var temp = this.startNode; - console.log(this.startNode); while (temp.getNext() != null) { temp = temp.getNext(); } @@ -74,19 +69,27 @@ class LinkedList { deleteNode(nodeToDelete) { var prevNode = nodeToDelete.getPrev(); var nextNode = nodeToDelete.getNext(); - prevNode.setNext(nextNode); - nextNode.setPrev(prevNode); + if (prevNode != null) { + prevNode.setNext(nextNode); + } + if (nextNode != null) { + nextNode.setPrev(prevNode); + } this.length--; } linkNodes(nodeA, nodeB) { - nodeA.setNext(nodeB); - nodeB.setPrev(nodeA); + if (nodeA != null) { + nodeA.setNext(nodeB); + } + if (nodeB != null) { + nodeB.setPrev(nodeA); + } } - expandNode(nodeToExpand) { + // given the desired node to replace and an array of replacement symbols + expandNode(nodeToExpand, replacementSymbols) { var symbol = nodeToExpand.getSymbol(); - var replacementSymbols = this.grammarDictionary[symbol]; if (replacementSymbols.length > 0) { var nullNode = new Node(); var prevNode = nodeToExpand.getPrev(); @@ -136,6 +139,8 @@ export function linkedListToString(linkedList) { // TODO: Given the node to be replaced, // insert a sub-linked-list that represents replacementString function replaceNode(linkedList, node, replacementString) { + var replacementStringArray = replacementString.split(""); + linkedList.expandNode(node, replacementStringArray); } export default function Lsystem(axiom, grammar, iterations) { @@ -179,7 +184,24 @@ export default function Lsystem(axiom, grammar, iterations) { // The implementation we have provided you just returns a linked // list of the axiom. this.doIterations = function(n) { - var lSystemLL = StringToLinkedList(this.axiom); + var lSystemLL = stringToLinkedList(this.axiom); + console.log("do " + n + " iterations "); + console.log(linkedListToString(lSystemLL)); + var temp = lSystemLL.getStartNode(); + for (var i = 0; i <= n; i++) { + var lSystemLength = lSystemLL.getLength(); + for (var j = 0; j < lSystemLength; j++) { + if (temp == null) break; + var grammarRuleArray = this.grammar[temp.getSymbol()]; + if (grammarRuleArray != null) { + var replacementString = grammarRuleArray[0].successorString; + replaceNode(lSystemLL,temp, replacementString); + } + temp = temp.getNext(); + } + } + console.log("after replacement"); + console.log(linkedListToString(lSystemLL)); return lSystemLL; } } \ No newline at end of file diff --git a/src/main.js b/src/main.js index f25ce3d..9f38864 100644 --- a/src/main.js +++ b/src/main.js @@ -1,7 +1,7 @@ const THREE = require('three'); // older modules are imported like this. You shouldn't have to worry about this much import Framework from './framework' -import Lsystem, {stringToLinkedList, linkedListToString} from './lsystem.js' +import Lsystem, {stringToLinkedList, linkedListToString, replaceNode} from './lsystem.js' import Turtle from './turtle.js' var turtle; @@ -29,6 +29,8 @@ function onLoad(framework) { var lsys = new Lsystem(); var ll = stringToLinkedList("F+X[F]"); console.log(linkedListToString(ll)); + lsys.doIterations(1); + turtle = new Turtle(scene); From 636fce661d3600abd58df9067715ffe25841398f Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 19:46:45 -0500 Subject: [PATCH 06/13] fixed node replacement --- src/lsystem.js | 46 ++++++++++++++++++++++++++++++---------------- src/main.js | 6 +----- src/turtle.js | 13 ++++++++++++- 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index 8018aba..039ab52 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -69,11 +69,16 @@ class LinkedList { deleteNode(nodeToDelete) { var prevNode = nodeToDelete.getPrev(); var nextNode = nodeToDelete.getNext(); - if (prevNode != null) { - prevNode.setNext(nextNode); - } - if (nextNode != null) { + if (prevNode == null && nextNode == null) { + this.startNode = null; + } else if (prevNode == null && nextNode != null) { + this.startNode = nextNode; + nextNode.setPrev(null); + } else if (prevNode != null && nextNode == null) { + prevNode.setNext(null); + } else { nextNode.setPrev(prevNode); + prevNode.setNext(nextNode); } this.length--; } @@ -95,13 +100,19 @@ class LinkedList { var prevNode = nodeToExpand.getPrev(); var nextNode = nodeToExpand.getNext(); this.deleteNode(nodeToExpand); + var simpleAdd = true; + if (this.length > 0) simpleAdd = !simpleAdd; for (var i = 0; i < replacementSymbols.length; i++) { - var newNode = new Node(); - newNode.setSymbol(replacementSymbols[i]); - this.linkNodes(prevNode, newNode); - prevNode = newNode; - if (i == replacementSymbols.length - 1) { - this.linkNodes(newNode, nextNode); + if (!simpleAdd) { + var newNode = new Node(); + newNode.setSymbol(replacementSymbols[i]); + this.linkNodes(prevNode, newNode); + prevNode = newNode; + if (i == replacementSymbols.length - 1) { + this.linkNodes(newNode, nextNode); + } + } else { + this.addNodeWithSymbol(replacementSymbols[i]); } this.length++; } @@ -145,11 +156,12 @@ function replaceNode(linkedList, node, replacementString) { export default function Lsystem(axiom, grammar, iterations) { // default LSystem - this.axiom = "FX"; + this.axiom = "F";// FX"; this.grammar = {}; - this.grammar['X'] = [ - new Rule(1.0, '[-FX][+FX]') - ]; + // this.grammar['X'] = [ + // new Rule(1.0, '[-FX][+FX]') + // ]; + this.grammar['F'] = [ new Rule(1.0, '[-F][F+]')]; this.iterations = 0; // Set up the axiom string @@ -187,18 +199,20 @@ export default function Lsystem(axiom, grammar, iterations) { var lSystemLL = stringToLinkedList(this.axiom); console.log("do " + n + " iterations "); console.log(linkedListToString(lSystemLL)); - var temp = lSystemLL.getStartNode(); for (var i = 0; i <= n; i++) { + var temp = lSystemLL.getStartNode(); var lSystemLength = lSystemLL.getLength(); + console.log(lSystemLength); for (var j = 0; j < lSystemLength; j++) { if (temp == null) break; var grammarRuleArray = this.grammar[temp.getSymbol()]; if (grammarRuleArray != null) { var replacementString = grammarRuleArray[0].successorString; - replaceNode(lSystemLL,temp, replacementString); + replaceNode(lSystemLL, temp, replacementString); } temp = temp.getNext(); } + console.log(linkedListToString(lSystemLL)); } console.log("after replacement"); console.log(linkedListToString(lSystemLL)); diff --git a/src/main.js b/src/main.js index 9f38864..2cef68a 100644 --- a/src/main.js +++ b/src/main.js @@ -27,12 +27,8 @@ function onLoad(framework) { // initialize LSystem and a Turtle to draw var lsys = new Lsystem(); - var ll = stringToLinkedList("F+X[F]"); - console.log(linkedListToString(ll)); - lsys.doIterations(1); - - turtle = new Turtle(scene); + doLsystem(lsys, 1, turtle); gui.add(camera, 'fov', 0, 180).onChange(function(newVal) { camera.updateProjectionMatrix(); diff --git a/src/turtle.js b/src/turtle.js index 1db2723..a3f4223 100644 --- a/src/turtle.js +++ b/src/turtle.js @@ -16,6 +16,7 @@ export default class Turtle { constructor(scene, grammar) { this.state = new TurtleState(new THREE.Vector3(0,0,0), new THREE.Vector3(0,1,0)); this.scene = scene; + this.savedState = new TurtleState(new THREE.Vector3(0,0,0), new THREE.Vector3(0,1,0)); // TODO: Start by adding rules for '[' and ']' then more! // Make sure to implement the functions for the new rules inside Turtle @@ -23,7 +24,9 @@ export default class Turtle { this.renderGrammar = { '+' : this.rotateTurtle.bind(this, 30, 0, 0), '-' : this.rotateTurtle.bind(this, -30, 0, 0), - 'F' : this.makeCylinder.bind(this, 2, 0.1) + 'F' : this.makeCylinder.bind(this, 2, 0.1), + '[' : this.saveState(this.state), + ']' : this.restoreState() }; } else { this.renderGrammar = grammar; @@ -109,4 +112,12 @@ export default class Turtle { this.renderSymbol(currentNode); } } + + saveState(state) { + this.savedState = state; + } + + restoreState() { + this.state = this.savedState; + } } \ No newline at end of file From 8fa83904a651200c3f1c5983edb142ec2c7be5fd Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 20:03:52 -0500 Subject: [PATCH 07/13] basics working, time to make some plants --- src/lsystem.js | 4 ++-- src/turtle.js | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index 039ab52..8a12d34 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -156,12 +156,12 @@ function replaceNode(linkedList, node, replacementString) { export default function Lsystem(axiom, grammar, iterations) { // default LSystem - this.axiom = "F";// FX"; + this.axiom = "F+F+F+F";// FX"; this.grammar = {}; // this.grammar['X'] = [ // new Rule(1.0, '[-FX][+FX]') // ]; - this.grammar['F'] = [ new Rule(1.0, '[-F][F+]')]; + this.grammar['F'] = [ new Rule(1.0, 'F-F+F-F+F')]; this.iterations = 0; // Set up the axiom string diff --git a/src/turtle.js b/src/turtle.js index a3f4223..7b7fbf3 100644 --- a/src/turtle.js +++ b/src/turtle.js @@ -22,8 +22,8 @@ export default class Turtle { // Make sure to implement the functions for the new rules inside Turtle if (typeof grammar === "undefined") { this.renderGrammar = { - '+' : this.rotateTurtle.bind(this, 30, 0, 0), - '-' : this.rotateTurtle.bind(this, -30, 0, 0), + '+' : this.rotateTurtle.bind(this, 90, 0, 0), + '-' : this.rotateTurtle.bind(this, -90, 0, 0), 'F' : this.makeCylinder.bind(this, 2, 0.1), '[' : this.saveState(this.state), ']' : this.restoreState() @@ -99,7 +99,7 @@ export default class Turtle { // Look in the Turtle's constructor for examples of how to bind // functions to grammar symbols. renderSymbol(symbolNode) { - var func = this.renderGrammar[symbolNode.character]; + var func = this.renderGrammar[symbolNode.symbol]; if (func) { func(); } @@ -108,7 +108,7 @@ export default class Turtle { // Invoke renderSymbol for every node in a linked list of grammar symbols. renderSymbols(linkedList) { var currentNode; - for(currentNode = linkedList.head; currentNode != null; currentNode = currentNode.next) { + for(currentNode = linkedList.startNode; currentNode != null; currentNode = currentNode.getNext()) { this.renderSymbol(currentNode); } } From 29c287cb1f77301a391c3eefb508e64937e52ed9 Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 21:27:19 -0500 Subject: [PATCH 08/13] plant-like structure working; fixed bug in saving state --- src/lsystem.js | 6 +++--- src/main.js | 1 + src/turtle.js | 21 +++++++++++---------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index 8a12d34..828250d 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -156,12 +156,12 @@ function replaceNode(linkedList, node, replacementString) { export default function Lsystem(axiom, grammar, iterations) { // default LSystem - this.axiom = "F+F+F+F";// FX"; + this.axiom = "F";// FX"; this.grammar = {}; // this.grammar['X'] = [ // new Rule(1.0, '[-FX][+FX]') // ]; - this.grammar['F'] = [ new Rule(1.0, 'F-F+F-F+F')]; + this.grammar['F'] = [ new Rule(1.0, '[+F]F[-F][F]')]; this.iterations = 0; // Set up the axiom string @@ -199,7 +199,7 @@ export default function Lsystem(axiom, grammar, iterations) { var lSystemLL = stringToLinkedList(this.axiom); console.log("do " + n + " iterations "); console.log(linkedListToString(lSystemLL)); - for (var i = 0; i <= n; i++) { + for (var i = 0; i < n; i++) { var temp = lSystemLL.getStartNode(); var lSystemLength = lSystemLL.getLength(); console.log(lSystemLength); diff --git a/src/main.js b/src/main.js index 2cef68a..698ff61 100644 --- a/src/main.js +++ b/src/main.js @@ -20,6 +20,7 @@ function onLoad(framework) { directionalLight.position.set(1, 3, 2); directionalLight.position.multiplyScalar(10); scene.add(directionalLight); + scene.background = new THREE.Color('white'); // set camera position camera.position.set(1, 1, 2); diff --git a/src/turtle.js b/src/turtle.js index 7b7fbf3..2ab3809 100644 --- a/src/turtle.js +++ b/src/turtle.js @@ -16,17 +16,17 @@ export default class Turtle { constructor(scene, grammar) { this.state = new TurtleState(new THREE.Vector3(0,0,0), new THREE.Vector3(0,1,0)); this.scene = scene; - this.savedState = new TurtleState(new THREE.Vector3(0,0,0), new THREE.Vector3(0,1,0)); + this.savedStates = []; // TODO: Start by adding rules for '[' and ']' then more! // Make sure to implement the functions for the new rules inside Turtle if (typeof grammar === "undefined") { this.renderGrammar = { - '+' : this.rotateTurtle.bind(this, 90, 0, 0), - '-' : this.rotateTurtle.bind(this, -90, 0, 0), + '+' : this.rotateTurtle.bind(this, 30, 0, 0), + '-' : this.rotateTurtle.bind(this, -30, 0, 0), 'F' : this.makeCylinder.bind(this, 2, 0.1), - '[' : this.saveState(this.state), - ']' : this.restoreState() + '[' : this.saveState.bind(this), + ']' : this.restoreState.bind(this) }; } else { this.renderGrammar = grammar; @@ -73,7 +73,7 @@ export default class Turtle { // Moves turtle pos ahead to end of the new cylinder makeCylinder(len, width) { var geometry = new THREE.CylinderGeometry(width, width, len); - var material = new THREE.MeshBasicMaterial( {color: 0x00cccc} ); + var material = new THREE.MeshBasicMaterial( {color: new THREE.Color('green')} ); var cylinder = new THREE.Mesh( geometry, material ); this.scene.add( cylinder ); @@ -84,7 +84,6 @@ export default class Turtle { mat4.makeRotationFromQuaternion(quat); cylinder.applyMatrix(mat4); - //Move the cylinder so its base rests at the turtle's current position var mat5 = new THREE.Matrix4(); var trans = this.state.pos.add(this.state.dir.multiplyScalar(0.5 * len)); @@ -113,11 +112,13 @@ export default class Turtle { } } - saveState(state) { - this.savedState = state; + saveState() { + var saveThisState = new TurtleState(this.state.pos, this.state.dir); + this.savedStates.push(saveThisState); } restoreState() { - this.state = this.savedState; + var savedState = this.savedStates.pop(); + this.state = savedState; } } \ No newline at end of file From 57c0a3d1ead58abaaf61b98aa136c9a4db75cc1a Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 22:47:24 -0500 Subject: [PATCH 09/13] added probability for rules --- src/lsystem.js | 29 ++++++++++++++++++++++------- src/turtle.js | 15 +++++++++------ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index 828250d..c2a52fc 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -156,12 +156,13 @@ function replaceNode(linkedList, node, replacementString) { export default function Lsystem(axiom, grammar, iterations) { // default LSystem - this.axiom = "F";// FX"; + this.axiom = "X";// FX"; this.grammar = {}; // this.grammar['X'] = [ // new Rule(1.0, '[-FX][+FX]') // ]; - this.grammar['F'] = [ new Rule(1.0, '[+F]F[-F][F]')]; + this.grammar['F'] = [new Rule(1.0, 'FF')];//new Rule(0.2, '[-F][F][+F]'), new Rule(0.5, 'F[+F]F[-F]F'), new Rule(0.3, '[+F]F[-F][F]')]; + this.grammar['X'] = [new Rule(1.0, 'F−[[X]+X]+F[+FX]−X')]; this.iterations = 0; // Set up the axiom string @@ -197,8 +198,8 @@ export default function Lsystem(axiom, grammar, iterations) { // list of the axiom. this.doIterations = function(n) { var lSystemLL = stringToLinkedList(this.axiom); - console.log("do " + n + " iterations "); - console.log(linkedListToString(lSystemLL)); + //console.log("do " + n + " iterations "); + //console.log(linkedListToString(lSystemLL)); for (var i = 0; i < n; i++) { var temp = lSystemLL.getStartNode(); var lSystemLength = lSystemLL.getLength(); @@ -207,15 +208,29 @@ export default function Lsystem(axiom, grammar, iterations) { if (temp == null) break; var grammarRuleArray = this.grammar[temp.getSymbol()]; if (grammarRuleArray != null) { - var replacementString = grammarRuleArray[0].successorString; + var replacementString = ''; + var determineRule = Math.random(); + console.log(determineRule); + var tempMin = 0; + var tempMax = 0; + for (var k = 0; k < grammarRuleArray.length; k++) { + tempMax += grammarRuleArray[k].probability; + console.log(tempMin + ", " +tempMax); + if (determineRule >= tempMin && determineRule <= tempMax) { + replacementString = grammarRuleArray[k].successorString; + console.log("picked rule " + replacementString); + break; + } + tempMin += grammarRuleArray[k].probability; + } replaceNode(lSystemLL, temp, replacementString); } temp = temp.getNext(); } console.log(linkedListToString(lSystemLL)); } - console.log("after replacement"); - console.log(linkedListToString(lSystemLL)); + //console.log("after replacement"); + //console.log(linkedListToString(lSystemLL)); return lSystemLL; } } \ No newline at end of file diff --git a/src/turtle.js b/src/turtle.js index 2ab3809..e60e79f 100644 --- a/src/turtle.js +++ b/src/turtle.js @@ -10,9 +10,12 @@ var TurtleState = function(pos, dir) { dir: new THREE.Vector3(dir.x, dir.y, dir.z) } } - -export default class Turtle { - + +function getRandomValueInRange(min, max) { + return Math.random() * (max - min) + min; +} + +export default class Turtle { constructor(scene, grammar) { this.state = new TurtleState(new THREE.Vector3(0,0,0), new THREE.Vector3(0,1,0)); this.scene = scene; @@ -22,9 +25,9 @@ export default class Turtle { // Make sure to implement the functions for the new rules inside Turtle if (typeof grammar === "undefined") { this.renderGrammar = { - '+' : this.rotateTurtle.bind(this, 30, 0, 0), - '-' : this.rotateTurtle.bind(this, -30, 0, 0), - 'F' : this.makeCylinder.bind(this, 2, 0.1), + '+' : this.rotateTurtle.bind(this, getRandomValueInRange(10, 25), 0, 0), + '-' : this.rotateTurtle.bind(this, getRandomValueInRange(-10, -25), 0, 0), + 'F' : this.makeCylinder.bind(this, 2, 0.2), '[' : this.saveState.bind(this), ']' : this.restoreState.bind(this) }; From 5bd636fbbb4f493b4ee1a78d133303d7d668d015 Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Tue, 7 Feb 2017 23:36:53 -0500 Subject: [PATCH 10/13] can change axiom via gui now --- src/lsystem.js | 10 +--------- src/main.js | 4 ++-- src/turtle.js | 29 +++++++++++++++++++++++++---- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index c2a52fc..7fc0e8c 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -161,7 +161,7 @@ export default function Lsystem(axiom, grammar, iterations) { // this.grammar['X'] = [ // new Rule(1.0, '[-FX][+FX]') // ]; - this.grammar['F'] = [new Rule(1.0, 'FF')];//new Rule(0.2, '[-F][F][+F]'), new Rule(0.5, 'F[+F]F[-F]F'), new Rule(0.3, '[+F]F[-F][F]')]; + this.grammar['F'] = [new Rule(0.7, 'FF'), new Rule(0.3, '[-F][+F][-F][+F]')];//new Rule(0.2, '[-F][F][+F]'), new Rule(0.5, 'F[+F]F[-F]F'), new Rule(0.3, '[+F]F[-F][F]')]; this.grammar['X'] = [new Rule(1.0, 'F−[[X]+X]+F[+FX]−X')]; this.iterations = 0; @@ -198,12 +198,9 @@ export default function Lsystem(axiom, grammar, iterations) { // list of the axiom. this.doIterations = function(n) { var lSystemLL = stringToLinkedList(this.axiom); - //console.log("do " + n + " iterations "); - //console.log(linkedListToString(lSystemLL)); for (var i = 0; i < n; i++) { var temp = lSystemLL.getStartNode(); var lSystemLength = lSystemLL.getLength(); - console.log(lSystemLength); for (var j = 0; j < lSystemLength; j++) { if (temp == null) break; var grammarRuleArray = this.grammar[temp.getSymbol()]; @@ -215,10 +212,8 @@ export default function Lsystem(axiom, grammar, iterations) { var tempMax = 0; for (var k = 0; k < grammarRuleArray.length; k++) { tempMax += grammarRuleArray[k].probability; - console.log(tempMin + ", " +tempMax); if (determineRule >= tempMin && determineRule <= tempMax) { replacementString = grammarRuleArray[k].successorString; - console.log("picked rule " + replacementString); break; } tempMin += grammarRuleArray[k].probability; @@ -227,10 +222,7 @@ export default function Lsystem(axiom, grammar, iterations) { } temp = temp.getNext(); } - console.log(linkedListToString(lSystemLL)); } - //console.log("after replacement"); - //console.log(linkedListToString(lSystemLL)); return lSystemLL; } } \ No newline at end of file diff --git a/src/main.js b/src/main.js index 698ff61..b6608a2 100644 --- a/src/main.js +++ b/src/main.js @@ -20,7 +20,7 @@ function onLoad(framework) { directionalLight.position.set(1, 3, 2); directionalLight.position.multiplyScalar(10); scene.add(directionalLight); - scene.background = new THREE.Color('white'); + scene.background = new THREE.Color('skyblue'); // set camera position camera.position.set(1, 1, 2); @@ -36,7 +36,7 @@ function onLoad(framework) { }); gui.add(lsys, 'axiom').onChange(function(newVal) { - lsys.UpdateAxiom(newVal); + lsys.updateAxiom(newVal); doLsystem(lsys, lsys.iterations, turtle); }); diff --git a/src/turtle.js b/src/turtle.js index e60e79f..684692f 100644 --- a/src/turtle.js +++ b/src/turtle.js @@ -25,11 +25,12 @@ export default class Turtle { // Make sure to implement the functions for the new rules inside Turtle if (typeof grammar === "undefined") { this.renderGrammar = { - '+' : this.rotateTurtle.bind(this, getRandomValueInRange(10, 25), 0, 0), - '-' : this.rotateTurtle.bind(this, getRandomValueInRange(-10, -25), 0, 0), - 'F' : this.makeCylinder.bind(this, 2, 0.2), + '+' : this.rotateTurtle.bind(this, getRandomValueInRange(10, 25), getRandomValueInRange(0,180), 0), + '-' : this.rotateTurtle.bind(this, getRandomValueInRange(-10, -25), getRandomValueInRange(0,-180), 0), + 'F' : this.makeCylinder.bind(this, 2, 0.12), '[' : this.saveState.bind(this), - ']' : this.restoreState.bind(this) + ']' : this.restoreState.bind(this), + 'O' : this.drawFlower.bind(this, 0.12) }; } else { this.renderGrammar = grammar; @@ -124,4 +125,24 @@ export default class Turtle { var savedState = this.savedStates.pop(); this.state = savedState; } + + drawFlower(len) { + var geometry = new THREE.ConeGeometry( 0.5, 1, 32 ); + var material = new THREE.MeshBasicMaterial( {color: new THREE.Color('yellow')} ); + var flower = new THREE.Mesh( geometry, material ); + this.scene.add( flower ); + + //Orient the cylinder to the turtle's current direction + var quat = new THREE.Quaternion(); + quat.setFromUnitVectors(new THREE.Vector3(0,1,0), this.state.dir); + var mat4 = new THREE.Matrix4(); + mat4.makeRotationFromQuaternion(quat); + flower.applyMatrix(mat4); + + //Move the cylinder so its base rests at the turtle's current position + var mat5 = new THREE.Matrix4(); + var trans = this.state.pos.add(this.state.dir.multiplyScalar(0.5 * len)); + mat5.makeTranslation(trans.x, trans.y, trans.z); + flower.applyMatrix(mat5); + } } \ No newline at end of file From cbcd1b5895fa1c065caf554883ed40873145855a Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Wed, 8 Feb 2017 00:02:20 -0500 Subject: [PATCH 11/13] added some derpy flowers --- src/lsystem.js | 2 +- src/turtle.js | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lsystem.js b/src/lsystem.js index 7fc0e8c..cc36d2b 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -161,7 +161,7 @@ export default function Lsystem(axiom, grammar, iterations) { // this.grammar['X'] = [ // new Rule(1.0, '[-FX][+FX]') // ]; - this.grammar['F'] = [new Rule(0.7, 'FF'), new Rule(0.3, '[-F][+F][-F][+F]')];//new Rule(0.2, '[-F][F][+F]'), new Rule(0.5, 'F[+F]F[-F]F'), new Rule(0.3, '[+F]F[-F][F]')]; + this.grammar['F'] = [new Rule(0.7, 'FF'), new Rule(0.3, '[-FK][+FK]F[-FK][+FK]')];//new Rule(0.2, '[-F][F][+F]'), new Rule(0.5, 'F[+F]F[-F]F'), new Rule(0.3, '[+F]F[-F][F]')]; this.grammar['X'] = [new Rule(1.0, 'F−[[X]+X]+F[+FX]−X')]; this.iterations = 0; diff --git a/src/turtle.js b/src/turtle.js index 684692f..285879b 100644 --- a/src/turtle.js +++ b/src/turtle.js @@ -30,7 +30,7 @@ export default class Turtle { 'F' : this.makeCylinder.bind(this, 2, 0.12), '[' : this.saveState.bind(this), ']' : this.restoreState.bind(this), - 'O' : this.drawFlower.bind(this, 0.12) + 'K' : this.drawFlower.bind(this, 0.12) }; } else { this.renderGrammar = grammar; @@ -127,22 +127,25 @@ export default class Turtle { } drawFlower(len) { - var geometry = new THREE.ConeGeometry( 0.5, 1, 32 ); - var material = new THREE.MeshBasicMaterial( {color: new THREE.Color('yellow')} ); - var flower = new THREE.Mesh( geometry, material ); - this.scene.add( flower ); + var geometry = new THREE.OctahedronGeometry(10, 0); + var material = new THREE.MeshBasicMaterial( {color: new THREE.Color('pink')} ); + var mesh = new THREE.Mesh( geometry, material ) ; + this.scene.add( mesh ); //Orient the cylinder to the turtle's current direction var quat = new THREE.Quaternion(); quat.setFromUnitVectors(new THREE.Vector3(0,1,0), this.state.dir); var mat4 = new THREE.Matrix4(); mat4.makeRotationFromQuaternion(quat); - flower.applyMatrix(mat4); + mesh.applyMatrix(mat4); //Move the cylinder so its base rests at the turtle's current position var mat5 = new THREE.Matrix4(); var trans = this.state.pos.add(this.state.dir.multiplyScalar(0.5 * len)); mat5.makeTranslation(trans.x, trans.y, trans.z); - flower.applyMatrix(mat5); + mesh.applyMatrix(mat5); + mesh.scale.x = 0.02; + mesh.scale.y = 0.02; + mesh.scale.z = 0.02; } } \ No newline at end of file From e1792a17ea3ed0ccd144175895a26a0d8fa6129f Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Wed, 8 Feb 2017 00:05:19 -0500 Subject: [PATCH 12/13] updated readme --- README.md | 70 ++++--------------------------------------------------- 1 file changed, 5 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 5ca56be..13738ba 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,7 @@ +# [Project3: L-Systems](https://github.com/CIS700-Procedural-Graphics/Project3-LSystems) -The objective of this assignment is to create an L System parser and generate interesting looking plants. Start by forking and then cloning this repository: [https://github.com/CIS700-Procedural-Graphics/Project3-LSystems](https://github.com/CIS700-Procedural-Graphics/Project3-LSystems) +## Overview -# L-System Parser - -lsystem.js contains classes for L-system, Rule, and LinkedList. Here’s our suggested structure: - -**The Symbol Nodes/Linked List:** - -Rather than representing our symbols as a string like in many L-system implementations, we prefer to use a linked list. This allows us to store additional information about each symbol at time of parsing (e.g. what iteration was this symbol added in?) Since we’re adding and replacing symbols at each iteration, we also save on the overhead of creating and destroying strings, since linked lists of course make it easy to add and remove nodes. You should write a Linked List class with Nodes that contain at least the following information: - -- The next node in the linked list -- The previous node in the linked list -- The grammar symbol at theis point in the overal string - -We also recommend that you write the following functions to interact with your linked list: - -- A function to symmetrically link two nodes together (e.g. Node A’s next is Node B, and Node B’s prev is Node A) -- A function to expand one of the symbol nodes of the linked list by replacing it with several new nodes. This function should look at the list of rules associated with the symbol in the linked list’s grammar dictionary, then generate a uniform random number between 0 and 1 in order to determine which of the Rules should be used to expand the symbol node. You will refer to a Rule’s probability and compare it to your random number in order to determine which Rule should be chosen. - -**Rules:** - -These are containers for the preconditions, postconditions and probability of a single replacement operation. They should operate on a symbol node in your linked list. - -**L-system:** - -This is the parser, which will loop through your linked list of symbol nodes and apply rules at each iteration. - -Implement the following functions in L-System so that you can apply grammar rules to your axiom given some number of iterations. More details and implementation suggestions about functions can be found in the TODO comments - -- `stringToLinkedList(input_string)` -- `linkedListToString(linkedList)` -- `replaceNode(linkedList, node, replacementString)` -- `doIterations(num)` - -## Turtle - -`turtle.js` has a function called renderSymbol that takes in a single node of a linked list and performs an operation to change the turtle’s state based on the symbol contained in the node. Usually, the turtle’s change in state will result in some sort of rendering output, such as drawing a cylinder when the turtle moves forward. We have provided you with a few example functions to illustrate how to write your own functions to be called by renderSymbol; these functions are rotateTurtle, moveTurtle, moveForward, and makeCylinder. If you inspect the constructor of the Turtle class, you can see how to associate an operation with a grammar symbol. - -- Modify turtle.js to support operations associated with the symbols `[` and `]` - - When you parse `[` you need to store the current turtle state somewhere - - When you parse `]` you need to set your turtle’s state to the most recently stored state. Think of this a pushing and popping turtle states on and off a stack. For example, given `F[+F][-F]`, the turtle should draw a Y shape. Note that your program must be capable of storing many turtle states at once in a stack. - -- In addition to operations for `[` and `]`, you must invent operations for any three symbols of your choosing. - - -## Interactivity - -Using dat.GUI and the examples provided in the reference code, make some aspect of your demo an interactive variable. For example, you could modify: - -1. the axiom -2. Your input grammer rules and their probability -3. the angle of rotation of the turtle -4. the size or color or material of the cylinder the turtle draws, etc! - -## L-System Plants - -Design a grammar for a new procedural plant! As the preceding parts of this assignment are basic computer science tasks, this is where you should spend the bulk of your time on this assignment. Come up with new grammar rules and include screenshots of your plants in your README. For inspiration, take a look at Example 7: Fractal Plant in Wikipedia: https://en.wikipedia.org/wiki/L-system Your procedural plant must have the following features - -1. Grow in 3D. Take advantage of three.js! -2. Have flowers or leaves that are added as a part of the grammar -3. Variation. Different instances of your plant should look distinctly different! -4. A twist. Broccoli trees are cool and all, but we hope to see sometime a little more surprising in your grammars - -# Publishing Your code - -Running `npm run deploy` will automatically build your project and push it to gh-pages where it will be visible at `username.github.io/repo-name`. NOTE: You MUST commit AND push all changes to your MASTER branch before doing this or you may lose your work. The `git` command must also be available in your terminal or command prompt. If you're using Windows, it's a good idea to use Git Bash. \ No newline at end of file +Grace Xu +2/8/17 +An L-System framework that expands an axiom (editable via the gui) according to a set of rules and their associated probabilities. Includes some built in randomness with regard to the angles at which branches are formed. From 821aa8056b1204fb1653880a331e1346de492193 Mon Sep 17 00:00:00 2001 From: gracexu94 Date: Wed, 8 Feb 2017 00:05:57 -0500 Subject: [PATCH 13/13] added some screenshots --- Screen Shot 2017-02-08 at 12.00.45 AM.png | Bin 0 -> 30011 bytes Screen Shot 2017-02-08 at 12.01.53 AM.png | Bin 0 -> 72323 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Screen Shot 2017-02-08 at 12.00.45 AM.png create mode 100644 Screen Shot 2017-02-08 at 12.01.53 AM.png diff --git a/Screen Shot 2017-02-08 at 12.00.45 AM.png b/Screen Shot 2017-02-08 at 12.00.45 AM.png new file mode 100644 index 0000000000000000000000000000000000000000..90f5e582c452c8937d8e8de772b92930ba77a390 GIT binary patch literal 30011 zcmeEug;SJK+c&H$Ea{ShAS|#;cSs{8El4RyH%OOs2_h)n4N4=Rbcb{a(kYT6(nv{u z2laX1XXg70zM0P%W_IuU#Ff7*&RIhrDa+zv-@!&hL&KAolU74RLr+3OgCb!V;E6a6 z>>LdZ`=*tY)FXK*Da0cudvhxrGc+{0(3c6Ak2Ic81P?XMQrH@;Hyz{S$n8AzB#Ac* z$SwV-K|m6n1tEAK4JDS4)a1PLj1|WC4vK!0)l&S0KVjg_N2E4y9D_Vqv=S7iXG7`lDe)`O~&?CSf@yY;UtK7+6~o zugm<*I8B*sIleI23l2tcqWjMgsp-id}<;ttrbt zNp6VFXH3A}qx&=PkWrGNNejJGMDb{c+#04fVta0hq*&zh<1vTQ5ijb%-oNZd=F*gq#KCRA^cVlogIn82#(H-`@UHHw7q@f51Ty&1;EU+4=uMk`bcO=kf-Nj^+8Y?3VD7l|t-S77q^*Qn0SFkTDuNk_D=)bp#hi0vn1-i^)G0vZ zEgB=4v4jmHmcpwesk%q#8W2r!*DsNegkA3b3=GbC^##d`*%Tnw#+Zcrt9|Jsq!??| zNO6k%D7dDLRe(x4uwtRzflC)FGf-z?WB0B*G{fJZ?G2+p?ORJmt2m+85#=&LOT#mEs9olQH=Db9(I6@~s%`V>9 zv+<^Hh8aY*yr%9NT6h8zfqJ~)`V#?kxnYe4k#T+$&7MM`ngdPLF6ljj(Z+#F#WL9X9Ojx3g}rpJtq?RnM9x1zi+wXcKy@|}2D z7F3Op=@pY}oL!%KpBFoGB1R(J6UIsXQngajQlru*b5J`EJH>6=Ijgw`bBVP(PD8)o z?!@lJ9%Le3?g}0=9$oIF9)*oFjdqP?jUJ7MjXsSP-U4Db#dMkOWn&~=QqxAAl?v9NHe4mk_&kPrMF~Efqaf8mFmye z%LyM5!+wqP6gwD;iqM9bl2n(Jkfa=rP1Hy5jPMS@DI+V&hJ}*NTccLj z^1(`F4_>r~s;?@MYMy1pj|aoD#vhYjC*@DEmsJ>F7{6H}Tsm5ETw>^K=v+ft5|R?C z622sSg8Gguj4_Xij(Hg~i8PSIlG9e`lp|3*lw*^7BQGq+Apb<}mfVLP#=est(>~r_ zk!V!kh*`TCj#-20?G@yz?&`?uofWEHqLuZ1f_;V+uhm2nVv=)We8x)V0cLC_A?7@$ zdyEk*s&NDHOYzL{+bkyW>wUw0`Ei(1XxCdct3u>TT;k9BLf49Vl;ze#!sY@RRz>&d8OGp=B$VC2tZ>91re2Rvyai zU!z~wJq~na$mm$In`9Eh#mFeg815MGUbahrMb6~Rn?8?S%KP|GGc`}iOo=>?B#+2k z&HR(O#Q^<4?q~Av@!yA7P1z*birCCqWnyYlQX#XDnYH{5xdqdZS zCDK{8?iwY`bxbqNa68Spl=>?B)Sl`j+b7k|_7*lR#9>%RIHk8PI~+_jxJjibrTQdE zlO_g;1`^+rzJ2-D*(lHGrV-C#-r~*03Rd+At_j^B4{6m7?;KZC`IQaER|We8tClrC zQhtn+wIt5(dLqv~ zju@CwK8d`^HVL{Z=VG1wt7^>l%)(WE`F(>@!WJW&Bfe8F=R4=dZ48w`A_!oQlUlC4a>8U$0X|{@tKGWIUz39O|`k_YTGN(v6%|A3Ni{M z3aNb^efaTgnb@Ly-ZM)sCUx!}cE7uMqAjR2rk+%4Fl&&ecV;{kJ8SH#DLTeHz2!Pi zJ6<=QX+6b9RFzRB>Kg3odT4z38_z*Xt$nU8%QSwTGC7-k2jTeww?Qa|}&?#%rG1H$F9+>yQ7v`OU+R!z=gTXa0TG z%O3{221&l3J(^DGcS?3=Q`|gv>Pf%e&SdXoFJWD4yzOgn7I69YIQv_7a(tXhtx9KR z{CziX$4lisTLJjDX7+o6G(z;Z+KY z&-N?jhummcT@bWPTr}ONFsD1(`>@z(A2wP~9W<>c$3urzgl(>__nHF-B;NI&jgQwX zp)ClZoeXH}=?PZVpVncMAJL$t?_If7x9rJK>9VlK#0)uUL?8d@$|50!*W>}}bNOzn-$*xhX%z-Tly5qBZ* z(bmkx2;pvPW9Ka7E=v1ngb?_A{g{Im@n?vOwJ5FD!$$}ydnYplA3HBQC#@JZ0)Y^5 zGBp=cla~269efj|wRCZD5aQr)b8};N<6*aVvf$tn6cps(lzu`ySj+d(q3=$KmY#HY36SAzdPAE|6>a<$Z`FK zgNvP$UB9-K+uuKx?yjM|%mq7a=aNb6y=^0(96`w+;(g6vQID4$^V&F^bK?0YiGVleeHbE z^+ka!K}TcNWJF?vDmVpat|nFSX6Qk^-;4pu=Uyx+~ z8Ry^XfG3Uyf&2SoqeEqGvdGX}4?zo9yz^%jbP@o)v`#QHMp?@nb=aJWhUGehz%2 zBH_Y*Op57_gAT)0@kf;}suxomD(Jqz+;}bXjYS4{ktdP3p{IqR|K5ipA_+=~kQ3nK z-+@C7#9CL$T`i0nJgNvcf{C|sphLUtw+GxWU$q=Rh~|*>;-$U8`vMJm4Fat(X>n5z>YPA6>GHzj%G(jo2&Sdh%5=TfZ;5mvWM%-eVgq{ z-qG+=Ua+B++QY1CjF=%5H=Nn0^5tC@!@WHS-IF~pV~MzDjs<1HG6LOe{tNs}tyUM4v+-IB>`ZOJ) zwCGUtj$%ThYfQQUGC??W91J+{!IxRV3~g>(gz~!ieXt5byA~|~8$82?bJ5Tt zd~}mJ^!nUKuptwG!U-PUw|+qELGlbMG~l~b-njXr5g#&Uvee)0EU*=zWv9^LOJa1Y zCt@!n2jLD6&;lIe+0(8=&cZ7+$TGtdDR*X{n6U2nS91IkO3G*f$>$KuyJGh#MpFcq zC9Q<}+hNCx4}@Tzf72zq&C`vxbax$4|eilj)*>)gt{{Yn4*{@^e!! z&TYbgy?kl}q1$e=+vwA7wHl-UxLseqfnke zN`ffg^_a|X!FN4^uqitK)~Wtp7plDquF>2ye}-$zjIr!DQeYticI8C6hX<(v;;u<{ z$l*clV4Uu<|opXO2ac<+ zBDZJpAVUaFL7uxsg8$aP9XlpI2?B3>I%e z;Jb=oPO7lTD_|IgDS#6pQ2_>;R+BzLg~|YNFQ756?_n^oh#@whm)Pov9C^iBKGe9# z2L*0QAG1L6C*djrj#RYNLG~xlk_NMopWZ7%VlrbL$;p(Z3_+eYfF_TGUh9h#D4n$8 zh03)QF%S+G{$zQu#Y5Q-dQ0k>ixk^NR*dHrZFE<F6u7z*DA-wO_Y z{R^cF^|v1GzjqB>yjOAj`di*CArfn00m-nB()Z-5sT&VR5Ya0y35o%~;k(@1-62F|+(YB!cpz!(@1YdeV&VpAD!BvR zFOkv)mFV10KKIfB#O(oJJGh);fXM&}uv#E}!pG~(@c_Ww!Jv5Vp6r50m#)yq*P=i~$)g4ILS>x) zcwrQv%`|PG=FZj`f)yvFWyJvwkq6ro65w6$D4qqpQe84!j2;&DxGLHIH4(f(4lSS% zrruBd4QrV8jULFqV?q8ce|z?Nae6?ZQkr-FTlFgKLHuS3aT&CLXh-gEuQ@1FR0!}T z4TXS$T$mUPuQ#^^4rMEFJF=~1vo_MMlKNyWGL8qn3&`6`=5M@a$S?yKir9l+f^y^c z3%nKc50o+@E-~A(2M__$>(7l&Z%UErq zz^D?@AQf+diT(({As7ViU@9L?*rTe#>zq9W#FG@d5BCuU0>wkbZ{Yr|9$+Jn;3CqK z#Jk6P`)Af?HUc-$ae$I>v|BN+X}j$c032`8o?Ec#u z*K)}N=&Y3L3Ay&rEa0uft6qIV1_C12;mTj!0<5+Msco4R>xhQ;1 zbvvNCy*Ik{-Uk27Zx71eaS0080a)%}b?C?S(!t;}nKIkey{5&Lg*(6mL3BbA3}>Ox zrK?c3T`&CEfqf=&Ok5XhN?>cpj8k$yZnLhWbc4Lw`%FNzBOOHdu6MEpyWTU}lmhis zQXDW2fju7I_dZ=ocm^+OF#^(S{CpE0NI7@W%cpNElOnkoA0GM5m3YzAi+`M8t;z;i7h$9LzE41 z1Y3xO008JTiYM1t+zPC^%V^|XKMzOt0}QVZBCH=}gO}l!vS7PzA!}r>nDqI!Y=RMH zII2t-cH=e;rzp_XsUjNMwMbone+%iV=)|+{g`M1rl{dMMM-J*@e`cU;5{@n}xM64s zrfXMFD^TiyExmb!96g9L135UdfE^OB(9MpK?&OwR+|HW`r4rr&t>j=FxhKZyenEKv zasdKGd<0lA-C?}EFra99kK6w?@Z7&+`g|;WQxs@R`%buSp~KREYSW;WZ_h#^nKKvr zEx>XWQU`{Y^ip{L^RIiKT#16m*HiQ4gIXG@EJo2=_37=sGWI0EGk0YlS zveX1gRi4Wb|5nCp=jImtncWxj)0V{tHcCnoA&~`G&lCMsOn{0-DVl1_focH83*sj) zL{A7e^=t0R56u5YaBmH5wICA|YP7n5_DjrOY2l^pz6!Ag!>iXFQm{<`zem%xqV3$tvtx?_&|tu~fFgt2 zem7R^ruto-1y;b&8^F*TB8+7cqie7XIK#74nzINbKQly`mrq-NThN3Jcsla~2}u*DhZT)LXqz zvoBMQ$upy-s%+MF8T*6#9RYLMNayq05W#Wf+nD6U zkXVpsrqMqwSL#xW9$i_w2gLx8Ch%~@CXzX_I)CM$yxkUN3Q~u1hvBIk=p8*$3A>IM zK+dDAiU~bw!Ov%Gj|`RRI?$j+V4)(zN~<7Yk3ad*0O*K0rdUyFK2H&t3vQJLtcJ#j zsuzez@T*scjss`_#Uj*K{>Vrs+0yw~(`gpRVH661_W%-2Ar)iZ)w1zyW!<-dFdw1? z$n(6rc^wsC#9$ljEbVn#ZQ9gB`Eu>$YA4$zOeh2_x95uRh#7En&)2oM^_^HuNGc0- z2J^6G8f0XWEM+|&ecIN1VFCXF`1|2tYpz+YG%-Mq0h$Vkk058<%cuz?gpss{^;^Z% zN~LP8mK@va|6clr@A&{u3Y`JF&Nw`#K#3GlGW0Y_wEbqfX-?us9LtE5w~NL8HSgNt z_@B~mo-F_*-wd7ZNg&{#wt2I5u1NQ^$XZXCCIQU>F13a$MoBy6+hhf+#*a!h`795xZp@4PNK_1 zt-%?wP&49&nP`fpXEt+b(X6p`Smy1+Bg|W2A2Ij`kG{cPO2LyraNrTIe{kRP_dzIQ zNz1BJ@&wrwNa)XjR?k<9drUqzI6j=^ni^qd+q~P^Lh9R9<_=z;uyL0LKm$fXMUASb z*DKzY6Bn2(^T2_9h~MN9r$x~|st-ebz50?7g6j9bQz*jn=#H2X5kwytqdvFmLcTOK ziSZVi6E?sQAn^i2TYC+)&bY_qw6iLH2@ig$EVWOZb*y1I6bbXL^T_zV3)>fC-4He+L4SQtPXa>0gp=&cgmQZ0iYJN<7hj1^@oJd+tQ$c&LDeUG8`)Da)p$A+Y!XaqWr5_Qa6M zg4mM+M?9BxqSyaP5o{rZ(G6cWoQAz?jjTnk`Jui}8tVzKyJfwWYFE|$8R(yXTG}f` z0F-J5UfKN1qR(qf;q8G@V1=UYjAOC_?VxxTD1Y*3m2mQq{c@<(J=%u8`?sBgIcOb0 z221k@~3=y=QkhmI3L{ z0eR1z)i;x+VG7$lY^*Bs#w-|aU&=J%ZYcq6wqNI|N@dc(Je5AL)1&TS_j#R2Iv)N zNLlrNd2`&H;Zm?ts;ed%H}z0R5dePcU4R67eWyYq&W8(COB-IDoTmf8x+E$%3VAE< zomOpjX~-MDv9)eiOCHY&Eg=W?8fdOvPP60M7T0ml@+lS$q!c_W9U1?oEq}P6S$jI# zc>@*(@Ryt=lm8t-=%=Ci#$krTPYQ>KP&N|9ZI7+o7F|EfTj(1=(i`MLiT~kLxBPRxL}ahemeke|U6)2G!4V<~q{_W0nX^JHcb(HzA#Lclbdb=A-mJ$DNvPoF zKSfbl+lMGF#hj4OLcOYNWo8>C4X@h+3(1MB7c1Lra`a2OsdZLA4tZ0b>()^MV*3HH z{nK1Obw2d!QM{54tMX|TgUW!Y7Z&$9TnjlKJmHjZI6Y(C^HL_=g`LBDze4vTMNT#?TO^AJVhFCiAo#&t?&I_}Hlf3}eDSan0 zFiNR|?lDEThFu0;d`8Yp!}J?aw6_wVL%)aMuPGB43a(${_MZ^wgFT8am*DHvDQ>LZ zz#MZDmFHaXvLo-P9fx0Zi3oZQJna0t@@AdsI>QrOBc7I@?9|P`= znJVx4ziPNJ8>gNAQ2vl|2Vn@>Zzc@4i!vJBcQ)kD0Hm@_n@<}Ga&bh~c-wz^m9WQ6 z3KapCDPq?D_5&R|!|L`EK_v?I{{)gV8Km239Z~+v)tnhIIf3b+dsLFG7{K0SsK%P2 zY(lIxDC*wj;?r`8b0}lg2;iY70x}YpN@%qYRA~8x`f+{}Y zPBjMQ0}1W&Y;Vbe{r}do<1Q-P(a%_8$HRl&8h9V8k?B;NEWF zeUMdeXz>LLm^cyAgZ!N-_gzPM>t4j6ew$qOh~n=~512b}FZcc_c|R11tTGADhG|;+ z57WLM`2Tv|zm{u{Oj!x)D4)jUc2Ig%zHBW9`}cBlB!@XC_$7rgH2A}AL&(81TrE1@ zc-RY>&bM_R=t7zJ-3VzW!k8uvW~5pH)O8s@j`JxJ^?1G6bd~3%vHG14S~N%DDftgB zh-KBhvJH$?Hg%1pLVH$|5;}5J*H=&EbYNN_dDR+%Uxvcupc1AbGN5MV0~tPFoG-5Y z_EE*XQ@@=zy$jBpsBlfo-I6u^IuXC)U-_)sZ`L(9U4s2Vsvv`2~Ta>OtrNHY>5zxJb%E2wM012adlKgCa)wa?Yu6$Lt_YB)I?ND;j-!4+WP-k8-2dS zP`77bRBjod0gnD2_)#Wds3&2=t14PqD$wkG z?EG#|-{<_R&K8wey5T9}Qb)=gL zzhBq5J2+Vy(XzL)rFgP)rsC^jT}xSJLq5tTD~N`^4BaL>zI7Z2^Io0jXJ1sl_`#8O zYpe16rjeHNiG=Brfj9Nb)!D?zq0W1aAda{Kx?DYsxBOejO~B>OJ82>$MFqL7P-j&w zCnfvo=?%Yoc^nr%d#l!|y?<^Wdd-U)LP60Q9@W`KhE$Xo5yg1eu3m z=D1pF>gV^nJRzL#zEZjw%mXg~RYW1$@Ov!lGkOa_1*o%iSXIdP8SUe5cjzc_UJyQ5 zo&Gj=x&663WxC>%Bg`Fum3v=;qXCMj!iAe1%k=`8JSHPgQeNp(eKkV5L&Hf3D$5)j z^DbI~ptMY>vPT5+#tKHvBt>yw$2^#mh-n7B{#d%!13wf|VNHW`Xpg3}yBV`=kh%#S zH?Ys;Pj2yI z3JC^dX{Zrk=?aY_WyzMrM^22-VkQwIV03@Wu3!kBADryEG5E|JuNzeoq99p-aw1&R zJ54b6v7t)^NjP=;J%{MmyYrHB%vO1~kg8(E=K5`1jyRX;ovabT6XgOYRRK<9o9;_f z0vfWhTm&m$W`^~Wyvn`WYsx8qV;iZj?#1)gez#`AUAEZ)A5sF0q$HGQo+KcJWcZHN zhh9$>dig5)-`(FPxc12*RA4o#@|?}=l?VfFRT+NNQ4Wb}W#L5%(YFkajieU~#gVp$ zTc{A7W(QmdA6SdeN~j8zynrM!!!;;hA)S5Jq#(`Ccce`*^7$f;I_;JJ6JY<71A@m5 zGMx@Vh$k!6P~OQdZhEW3w*4tpQo%LggUh0U@#l$iCH7lfHh3K6hnJ~3dV174uj48` zqctK+-!7bw0jw$i@*X*gVko;nWA?yxGQ#NGJ5TMH<%{dH z41$Vh2zq%EI**_lGe&FGsE&_E98)2*6=F5#lr}o>rCgQ9SK^@4p=A3`c}sr#1l2Fb zjGq>ZuBgnO6ZU8C!|o8$q$rgl`s8KK!&+CE=LcX zYBDOqkag>Z+m1fD{Pb9EdBpoZSl3&yY;`Knv-j_v+EcGz9v& zNVf5r1^$BXf)si$p$z?Eyy%X?qt%f7u}kfM*a#_Mm=?eRt^N>nKP1t+gTyG5+tr;| z&xc_a?>VsoQ!b5hAdi6>9&>XQP>d_9zM-|WZ!Nh*(*|88pPc& zO8M^)qJYRBh*l`zX#pCN_O`s8rn=xocKR+e$>N`-iNVs0$-GprOkYf-g*i(rGp7-* z0Nr$D<3U+L!ozCT9>qZ@F;zeM4d<=-gGzpxpS8$5Q3}GV<5MR}NCi-z`DbrhyWYDk zH4VQgqYE@2u7)_!qSAu>g@N@n#8o+KIdyZShoGuKfcnN>D?{f&v?!xRW)6DO1ISQz zEcNTx;wTc;&`3caK;l-(a^E_I?Jjn}H1P8Z1N5$?#K+PoyJJGZ&q)dbUoashK;|WK z!j!U3lNlA=h_aee%3?#|3U3QOdKQ~K6J4-yZJp@d3?l ze!MI#EK)cA+@^VKVpu?S4f&#O+y249gzp~t|DOJ)q%OsnwV?JF6!C^f!>rahK(PPY z9LDg8p4(fSTU6W}Px@k=h5PQ2wMV~#5?`(14Tu^LRNPq37KjgmvH7OG4=JjoS6>j*k5xpZEhu%tnKVs5zRB1;@eYmC440r1 z5Bn|PgXAKgs@h`b_7soFq^svY9RK2}B1@}kC!E%Pad741!Fg(q8<4gxT!BVC_1pIjXa^Yq_=k{e_><%fuPI@tZ(N65qO?nrMLWBO@`O%e$$ZenvjX8^tz`5XrO~5uP*I2&w7?*-CRX+ zLLEVpXpF?Q9pB6S>r5_a62ZO5r=d^y?fAUcBh70Fqnl;{RLjdKb&T^kz{`6w91>Lp zM#)3Ms{~r2$UV?{p#(*4#BYac9(1b*8cW}!du}>ny(_=;`klC=cX{A;(g$*UvsSufm9KlRwEln-h-nW8CA8W`rsfRh~2gzsb zwqbST_K8WsA2VQ^8Tb53C>ZMA(L~PH@)0M105(TX12eXiMJV+M(mG94ynp>eKO-K~ zzS$+aU9IO`mUJ2JTEbq?Pcv()&EQW&)W}GSOiq<2uq2QWB`Lh}v6vv*Pv~9*ICejZ zoc`=p;+YP8X(SuN)ka__|AtuqkWnM29dS}nVf(1Ph{xIP`9$w7u{K+@$I&FU?tIg) zfeB8^Kz}Tdyd}%Erzy)Zczk}iR|Qu{=$5Qj=s=kZT4XXGg?=zN9ghWRW$JxDZ>(FC zyO{qeDSznb8VfnGSwP~abRHvQmlcNC5(g%HnlDa1oqqYgc6d(uFLKiDTn8_3>uJB0prV3Kb8%z|!^y7T zA@A&r%*K#oo!th(v!bMlX+sfkvL&O?C*QCe;sB4S&HwoP?AH8M+xS~d`>*GvJ@x4a zs>`nTBQsHwQ!J$)sVfJ};7K3vR}!bV-S5rrYuazG?S^X63V&bzX#;=xD4LZarvy!H zt>%<9QvOK#h&ekqeOG_KW4eAxYqnsou9Iw7r7)|Lndb=S!yZl06KX#AZJV#Z2i}O}HO7-gB!h#4BsnQj1|*Tz)cfd4Yt?`d`jLE++%DW^ z#h`m;78{MG_C*u+DYoH5T(B`PYb?vMC)lMewo*9d90froBk|tyEWbAOU=`4zeQo}t zBbo{9ubxxq8x_;LC71Qn>)>rC&%23tv{A6L;qSgH^aLkU2~S`Lz&#FVKk(XpmJLy7 zSD>%UHmlBdcC_gwE3=K9oVk>LpGayv706%`@weBrWQim)DY_Fi7k*q|+yQ6i9SG;> z)HCLoiqeQ8X={fF;Prt^5_ZdtU3pN`{LF}>P5s;&=$^N&R+ z1I5`uGRPJayjfYq8bQAiBE@agRju8qfRjN$izGtDu=0D&2X zXeAd}%`d}sBb8}YOh)AgY)`}^lgjE^ko{)_fLl6KN0LC(7+j+493cT=qYt_~SE_BM zJ|y9@d4OO$b) z+3ZqTwifa?>;hF+MJ6ov85jvU?~ZKjbQaBdRJHJOy6wy>hlHa;d~^BMC44VZ?u3}7O*0>NX_3jiwbi+aWyyERN^b= zbl%uX(EF3nv!ziwfY9U^l|y(N<#uWG;#rJ)>!e~4( z#r-<7OcVGIz|Ok-x7Mkci|8>VBVl2_al+Z8BCb<69xjTqX2#~Ojx)&Yi54qvgE*R~ zL~_EEoTRp-%2{0SCjPZ~|Mc85i9Uy~%Jm`%8$*wkfG%$VUEcZ`+!Z%hlD}PUJ;fO$ zJszL?vApiX>pROBKsOjMS*tHhmlDI8nt$mZN6#7M+Z5X-c$W$W=bQ>JXIFX-?`L7AN7Q?dM+*` zz*OyPx!$iNm$n2>racyR{;o+n3Jnf$J#Y=2E`sx12Jf*HMwMFR_ROeTAv`qjcYzUH zdwoAC;Z~j4C>10ZR4{5z%BSN+tZL)0q;V76w)&5&9zB~XUY#8o46MO1Gnu~;`9 z9SG+Hs^N+Y(=Q!M8bG?uGDZI+xtg!#tKFPdzH8yZ`XJ=j-^|ISO}4j1lQ#JTH6CCp zsc(0X341U9ME)>;QEq{ez$Uz`3@ac7?3==iS&br~=?$XX>X@W6tzys)MWgyX`jc{8 zk!2(-8=UhD)7!K*Cx(ur6;ZGsEIroIvWIqJ!g#@%5O2^|Yeso9nmx9vMpSYXO3{|k zpn68G=v|4gSGT9q0b#J$B}nBafCeVGji)llpzO&}f#GqFZbBc^&rJA!6fr-!LaR*x zoAkHe?~Kmdn|?)}c7*zP;V#q$#D1H#{MT-53~ar3-HQl|2oHjz z6O7Bay!WGm^hRKK2t#lm)P#{drF5*o_}Nyb+@=;m;GMY~4_gm9#9`=jxBxhU7nB-O z{dR}wc}ZV(LORN~w|TI<>A>f`d`oVWyh;9D=paa`2MKeo@E|c9&*y)9{Pk%hXtwQk zLiclaD1HM-_-d6i=YBtp&3T-Qh|Fm;V+y=8{w;d)(}&0LBhl1pf&U6jnXU1ZR%E|U zE>WGT%TGJirUE*1e`O$Q$Bsv_1wm^KS_ zdLF!nW&zygS*F)~P8qL(V{s(BDeXBL%k$1-bmX(j_1V~WbTJ7-IH(B_p>e^gCNXjB z8)IaOcb*jK;TaSZtHlZ43IJEPl2S#2ug1#D8PlVzLq6?>BE?|>0MG>F)NF5CD=ow@ z^gcWLI;)Ror^6-U?c%q=*^O8LH{@x&cA)3S^>i|VXUW;Ow&dM9EQ=sP4{T=T53FI`2Y%!~|I zJ4kI2h9HGCK@o*t^rW9qG*~>Z9r?KZ**@};5q2GJ45C-^-%GF6ZY<_<@Zw- zoNZUDRj}j=FbWNw3PoSUPh-#RrT0jZ~mdx%x?mBffULI5Nl;KifP4oCzueE|noUUMb=cmN_Lp zbF|(!n!D5eBFI)MF9f*32@oz&44DV(Yg)HL3sJde(-vR#_XRB^#Wq?xGQZGkC>XUc zT{0BPz1w;$*0tw;-I8!)6%6EPhRMBug}8HzquJMkAB`f=kQW-(Nv(rrLx z;i#4YN6|9~T;UOuyrUdV{3Ed-Z*NO-%2B<)ihE z628TZ!z;$>r)z4)#9eQl-anuaP5>B{P`>!(cJB&#TZ~fHQ(EG##8dK_eQ+aW3>=n@ zE&iBz{XM5Sh<5siesyB=WI}05#WIRuu1wPyS4}0wgotQV(bR~<` z0tQwkz5ZQmY(*^Bq&3z=jc4Ro&(7{Ao50CHn~ujbn5AR#S$VkI1&UoUu@Xu0p!cL- zti+wIdqot=3M`D(Jol|iOrI3Dhc$ZuUx%aU7k1DC{~Nt zTPO3P6u?JU1ofQa^p6F_XOIEMUMbfoq8&9xCxI`d5cmlI%Jz5!t;2WaGbJ-Rr|oQ+ z$Csf?JjG5+xops4qFR%$66YH#;`Qe)ns?_mc6OpMOWqfcxogPFPA{doK{Pn$c`SRb z#!Nj|iaJ9R6jm5b0FZ+#va#m8E^jDRKZ-5-f?m9I-LooF2FETTb$Q&%fNQKYkHqc% z0Apnkmyh2&&7QQ2jt!Y|O4Gq$rj9xx3XWsPEB*TBf)#6eMpjHJ>n70rO|vdbnXKGL zd^oQI5DVb)*D|jo-`rqRdjhM3ttdvLYjN{Jw4Ou+%2H}H{N7;7;f$Xlv`dq(FoeWx_6APC*(d?6IK1qnqe<8)Gv~% zo96G;p|#zKi5C?l4%;KM3E?9qRY65A=cr7LTqHre+I?^@>hI0UA1i??%FU*Py0dzI z`mc1jyJoufD>^bXps4Bulk0}T323SP;=-B7g1IL-Bx(jBa*7^`>=xeP>_S{;fP(%! zr-fsLgOAT+PzB(!g}p1EE32mF0}Iq%SM|o^7@6oxhb@*&nt#8@sQsMQ;Igi!@z7N8 za-8zE4mfhWKF9%=8=n$P)dwcdd91Rj5Wl*Yuja$P-THI+UGVkm6F zmWWMfd~sUf!69lMEcHrxq~Vw+`kC?q6F9Y^G2?O7r>$qANPE>P2clnexwc?JHkNac@UBL@ zDmlY<1SdEyH?NPI#L`luIml>Lr)4bp2q}wWvr3h_l4~@f(5G4W+d>b%xJBgtj4)AY zE|*4u-f>;+ZO6pOkj7kpb>pkn0*`q+)}A>V<=epegmdYgu&K1%m6Iz|JFPw=29nDQS_nf@O}4^F@v*v>3p6u^H5_h%gFfr~oe#3gUt(fowRLar(~Nj3$bjkJEQq zZsCbd1+`w^F2Jhb(A$sBDnr0!eKSZ}>1K7-AhU6X@2Ot+XeaaH5L4T?5>D9bq?a(t8|-fc%y4n#z@?;ppC#G8cq9ZGjn5WA8TE=h*(A?OfN5XE;rhZGFr}l_g^>g%8NH8ufEhw8j#(u zfo!a@EK3?jwx%}`QN9w#4fR|L{<~H?YtrpHrXm3^TLd%j0;EM?Mw&^hpy?IzGU78b4$G@p1UdyAYy- z@^9~ld=3ejzqNM$%*0kP7 z(*D?8>eXRqcM|;6#-pFZbjJIg23RCKww-?O#}4U9YL1?9pb&3g7$+CIC6Kkmp^+#t z3FcqO_%i=2@YK#@+3d_=PMo>~r?tf2o_jpRdUQLVj2I#b7=n)}eO99w_F}!hR^*j$ zch`V}R#OT_Bz~ivro=_UH3BRhBE9U<}y;1?W>5o zUQlz>kx`p|r{C{rW_g)*}ynW`C(Hk1_8;~LZl$wo4Vb&^_ zBjJ}LX0^n_!kHd>`)ya}iG}99X62mIJ3jXGR^Iuap4L)})whi9w<~P)yWMxg>W{G5 z-!Wba`g;RnQQrshB)(19-as^uvba0^+(G30C93k|@~3~>RnTe~UD>T=zkQyoqkY_O zfvQ=Ny^n#(Kh9wwXPC>q-?;fLSr&Jr;kSEZm-Wfw=j@+|h_WYdE#D}T87yVeXZQF& zfmsq7#u~(yO3e0uo1JmCzsMQYZzx%|IJKLmSf6sz-YxLN;=*(cSe2X3rD+ z`J8^trQhoo&3gF@vs=}X^gq8wT0sV^rk~2IKltk09I4JLZj{g1_-?gK#jnhPxL%?a zAE1pgyOKL0!zZ3WOOE#Ry%M)?W8ZyuKgi&FcK4pZVSx1B(!jBqD@K80<&l`5FIUS{ zOC^`Y4e1*&)M6(YA!A<2b{pl`sYguB5@geJ-`;g|MFL4jYO5dp2ETGCj4-UK@4*w| z$G>;%j5Rth40iOwz&p*XSF~Sr+FtpvrM@d$E+TXIE*)#L22|3OIktwZy+n^=LcfSJ zzGAOTDae&1mF7n^s_DE6a3+KV1IP)E8SW$Lm8RDoWIC)FzYIYRj*v;Vz-2#cshycv zc;|9JJ%OitKH3qfN2i1ARj&voA|rbo-&^$l{_^<`KA&IfJe~V_-`92B*LXZ0hnvmk68c5r z9|~aA6ft@oR=6ClU0nR7X4}cAPQ#l%v}Ki^lGNq=o3DLNdp|9+G#!D#`yLbJ;mxdym>BB(wLH9yjszCKx<&IRjTO2U||o!?D(#R5@%gN zpCMY@`9`|SsBOTYl`M&8Hrp&c6kuT)sL+=@&>44xJ>1<}o%>e3Pb;K|tZqTW^2)QW zmLB#Qmed~sUBdceuLLL3Z714cQ*AQLX}-l$uY%{p`nbf=QIeQ8)cVJgFKvV6Ab+Al zaYpq|@#KBI5{iQpps%aBr^k)vd8Y-Xt;saYBG>c*sSdNMFzQc#bIKltZj{>)ec>6E zmq`3G>YyIz=9x2B(8pQ;;=e>*8-{vgyGO6@N&u*?^>B}M7bJMyY0U8cHDUQ+NP z>gCWCd4Q)m0clo0eQlLYA1i&Jf9-QvCl~xDNF*21&(g3c|1JQo?)$UQGF?fq?;C5MpsrGi0;(8W|MNMPf97Z&LvC6EsIt*bupjW%|@#5D@9EkkMu(~jD zxGfkjJq(&8$V^Txn)2~hXJxXTiC!URey_hiH}P7sPqy_0QG9b3Wr+Tqj40;4^hf0k+mY)Lbaw;M8^-b+Ue;>%j9+&};RGRzV_E%2Sp zKuClfZ<){e2B{_)ou1AZ?hqn|YNq_^wV;&DrJCtve`v66dk~r@O~jo*5WBV_o3gRR zq@j`Jd3Zf?Y^UU-;gR+i|3l%1Rk4HZ>Ed`k39Dx!XE#>B9xtR4ou3_hD}{_HK1*xJ zNBmm!4`)8vr|~>~XcY(!lY!^Uq_ag0l#R(Byn~;Y>H!GK#2ec)A0&UDD~eAWZ6h8~ z5FOLmA;Z*z7pRvAu10&9Oc<|@UWG#YKhwQvc?6s|36`!4v(=ORMA!>3ma6o1yg+gu z(Vqfh0#n^5BGlC43f%<0#cO3f*HjY6l19pQnUNV01;z)sc44>KK`X)DPzh2sckkVc zE1@*B*lxm*^bv>SJ`1^XK{NaafS+oElR?4;Mz}qEmo(iG@N?*$y(I^!TI$4NRHZ9V zrm5}9A%7>;(S>ql^KBL(!aj&rJ2+i8tzzDo#~N?++5foUmb84gBNZD#a^-QSVKf}6 zYf6hz4m?`619N&s6ya2~%7!F7&(%>3S2&+=zvzWMp?sB>u%rKvArYxcbUN(;c3 zjdeRsZBXaI-3%x`zw}jeah}bRgxY~D*zR>orzS4D3FWOV+M$qCZ>&YqdRgnMCV8c& zRLI!2)P8E=k@oD;r7NOTGheB(w%qTLHM4XOUT}%d^z+VJInd}UQ3EG)JCcgnNk{zb@bZ1O=j zZu`?$!XM)n9j|9g2E|MhByx8xaQ0fU9i3pY`MJ7J-h!=d{P55hDWXGLZq2rSD!uw=dj+CmtOf5$X&4hS!Cc z?jDXr9#vrL9*N&Ny6*bLq5eFz`ru&0a95x@3XxruU>F|sB7^!y9 zR}Q!ETv7;He6LNvcJ5g0#4pOv#R0`Lw!EAP3!b#c8vVXt@q}dPjR1vQ1`+sfqB*MI zvenv(E~Jl$eyJ4UcU-8BYn*t*T)N+uQStYRj3!pdQriwLPE4yK5NlL3KufgnUwx+* z$(PkRz44!vaq4fiYgl+-cpcw02g0xXrc7SzD}8OgS147AsxUI-AkvV(9RI0=Q17~> zcI(^Ji+o)TlhBVtoHa<_%=VZN|ISe`gj;Gssje}V!hb3PU5NX0=NZP@1r1dt{CBF- zyij<<>Y-2T29LAG3jtsuU)It5az1YVZN2S_;?2Q3VPfyC`3cpwZ@4qBY5ro^_L>)k zVu8=1$iLdq7-$6<6W{mUm>m7a-HnWKk9^4v<$O?i?g3*AxIyv6-N$yA{x_5byteNZ zKK*d&BbxZnTS+ejkn9a(>9eOan$*r3%k|%N>hzokLJM3}uLeVmATX{OMZEWf*#b|j`k-m8U!lWcxPGN=bVfGd3$F3{Xo@4UN6mfk zJfs>pT(z<}r;1sfORT;9TiLh$NZrZ7?+lM3%y{RAvEc%<(@d0n1BH!r2~yFwU?Lz-s@EU@Ml{&0`piSYWy1T_NLs}W7QS>t`0%pdHo0?ul_WxANnS zdGpe`&N%U{3h(7wY>fvc5ttN*(HkzINemJjBbmZ=l^slZb**nTik`=yKpLhJuss4( zX3;M>WPUw;5JDq>w;175BNGPmBA|*f^fcc}FuXvJrOf{J=%e+rf%dE;%P9oY z{1-iD7@9BO@kqikw>-t|!e|!}wp%3Q=?4I?>e49iy2+im1d^^k-sJtyCZdZcA{Ts; z8bIe&cGD z`Mo^pdieREEej{oA5j301l60o%-Gix|5 zyQ3Na##Q}(Q9!)GZRx$MCH&kjv1lu`VLqHNsWqbEnn_gz$fjY5I@8LC+s=tSLIacL zzY@f;ZbF#bzy{q;wNfr6&pBFYY2A4kn!rh{#4r415x__nQv3{qwRmGj3d|s;y`=I( zTSa5Uj*%cIWaNzRP^|DV*#&U;+qBuEXs@Se(g&*7)R@LL8ai3`PDj~cTe>j7WE?%~ zy`Znfcia|Hi|7xm$xI(*#Tyt|mW!VNk8g&vxsJ7XnTWyO10YYCzXw27g(`A{;QzQu zmnw1TUAv@abxCAI#*6`S85}7&7gL2if-k1HFlu%8yJ@4FL9a=wFSlwEghu%sYqiMU zvL!?d5e3Q(oQ+bXD%1&!GvBOWy2*55q-QjGqGE=`yGqe|;o=J084M*jUlWphBso}2 zyWm9qb3^e)l;Fx&k00v*CDim}?|Vaf0}$WSF!`wVK3bel_YR-Hr14*D=m$%Ja$4-( z=9IKV&iXNMA1Z5jq=@kVEffAJ-}UUxhif*WPXkR^qB_}GVuRoepf@QbLoFGMNNk*P zU*CEVaz}YIyglcrUEH+6Ykw_3?PFKH!|(apiS*A7rA>kO`=$}{t)##ZRMF^7`3f>x zsQC&%tlRf!&G)keGy3pSJM~gdn)`*wt7?j}lTU=WDCCZLGhKHolw5^{JsjRM2XY)- z?96-bc1PO+N);Vq6@uz~^}*gM&LW$tR>(-EQwWVIi=-w*6fpLF=pd-tF)l4Se$P9S z>bcW^;E@fP2_W*6s!Xp0wC^;4escdfn$fJvqEFF2sAj_cOeNP9$=4R4BdQId^`47N1Y<0;g+GUB0zCl(;!ckB3YQ6uJ|1ocGVuWJKbGSp3e*?~m9?Cn5oJBtZ>And% z(rdBBDqfG9y6^Z`&uiZgZP~z_LR7*Mk%)T*Mwf3kn6gp5t0mK4oSn46%^QfROb!yC zBAPL*y08=@cF#RtPn_ujL*3Mj=|1obQ1=vruv}yVxQocRK>AAy_f@o5tIfOlpmtyo zXE)fXrwbVj^^vs2r4pQqhH1?4R-y}n6N7|F(*+wqX3nv-IhjxIIKGmx%W4_P9KZ~s zDyF|CHix%cFq|^@LNh0!s__|EI;BvpXgiK48}WMvGx|U8YNy6UC`!XpKzL0-Df{X| zqH#XUGDXxgzxEDB=dG%d9#D^m#xoXG>D1Dp#k@yi#6+*aX1_9Q%X(t%e(d9(!Dcecfn%rp5sueg3YOKsIksakFJjo>~D(Zhx!`@lQ==42s0-j)h-zz^WO%>KOUTx2)zBwmkbQjiU{_fvb|d%=9mBo9^bru+Ws` zM2F~Vd;LeAu}*@;ai4vk0^+(7Id70BwE^FQxSiK`J5EijLRVSiydm~|$f;3hq)V!Y>S3QDNVN=bP#-30WsTb4)C*dwH}>wf zQw2*K>ne&j%AI2KSMP?mRyciNM3TPJ5jEd$62SUn3ns^dC$c{{p3F2`CT!E737)yCT*N{j*6 zWzePG6Xq;4kt-0}VQk2^Doye!c?@<846Yu5&40w$mVOVS7muq_cyp@})ayhT2zZF- zdVQFpS=06EFh1S?hKty1uyfjY%cTyU%J-iC9+L;F+Ab5~1OfUD2>5Sm8JBo4*>@C#XNSNC4(6YJgc*T;2t0F`A>aKGA*(g^BCTv8$R2<;qze+F z1Lv@cF)#vdVKiu6WCyk5jbUE)=1JAiWjLOVoqQwMZF+L+i9ax zeLBKwew7?@3)-IJyXDqu^m6zP4}PUWAswE|VV?2_OgY!0P+nh=>aDg?w1V zht~-wihjQya8w(y&FM*WphH?uBxm-@A^iF98EQR>Q0;*-Zhx`zA$mw1ICB&8s`Mn8 zP%cHY+!@+^zQY?;y|f}-R| zAr2sdxqxng3*=MTCP^%*QVAz7cdkh~AjkfTCgzYq(g&sOTr39T0`m_7?@N)&XEH*g z!Ge+Omt>~VM7U00o$tzut3TcXog8Vff|itTYebk7(r>Lj->%@aQxpOz&VNG!RVr}N z0J)%AmDcAk`sJVw)Zb{Jd%%YFp4treK_jqbHygTE;S2!dB&5zwf~4**fg_K?9PJo; zpU2S|u9ISfz?TYb{CtF!v4b1|O~%DVanI}b)`Z+SfR_OYG>ccQT3>xD3+3}k^9r4T z(1a>@Kouci@ygFKaS4nG=)_W~IUl-47gW4V$)%%cb1TPi9f29L&})dKf-B>S{Pc-UhLn$)|@q z?^psp!TZ5x+P;4O#0_Gf9wjDuF&fxCs;wWXZb#Z zrsY4ID1d6yNYnXq`-Eu$yHC8nR{0`zZ#}z8PA0^E)kfdkd^1U!6RRybskL?22r&r!YDB8QK3LzU6Pbty_PwA!l*(K zw?vpM0+h2cBw;^hX`*1b9oi5$WFCBSp3%IGiU>FRF+cpE=_$%n!qZ!f0z(D
E9 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 literal 0 HcmV?d00001 diff --git a/Screen Shot 2017-02-08 at 12.01.53 AM.png b/Screen Shot 2017-02-08 at 12.01.53 AM.png new file mode 100644 index 0000000000000000000000000000000000000000..26cd8a699f6a153d07d5d9e7f940ca514688105c GIT binary patch literal 72323 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 z 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