{
  "metadata": {
    "title": "Robot Faces: Drawing Expressive Displays for STEM Robots",
    "description": "A learning graph of 293 concepts for a high-school-level course teaching students to program expressive robot faces in MicroPython on a 128x64 monochrome OLED display and a 240x240 color round display, spanning hardware wiring, FrameBuf drawing primitives, facial anatomy and layout, emotion psychology, the history of screen-based commercial robots, animation, interactive controls, color-display porting, and a capstone project.",
    "creator": "Dan McCreary",
    "date": "2026-07-27",
    "version": "1.0",
    "format": "Learning Graph JSON v1.0",
    "schema": "https://raw.githubusercontent.com/dmccreary/learning-graphs/refs/heads/main/src/schema/learning-graph-schema.json",
    "license": "CC BY-NC-SA 4.0 DEED"
  },
  "groups": {
    "HWFND": {
      "classifierName": "Hardware & Electronics Foundations",
      "color": "SteelBlue",
      "font": {
        "color": "white"
      }
    },
    "HIST": {
      "classifierName": "History Of Screen-Based Robot Faces",
      "color": "DarkSlateBlue",
      "font": {
        "color": "white"
      }
    },
    "MPYFN": {
      "classifierName": "MicroPython Programming Fundamentals",
      "color": "DarkGreen",
      "font": {
        "color": "white"
      }
    },
    "DISPC": {
      "classifierName": "Display & Coordinate Systems",
      "color": "Teal",
      "font": {
        "color": "white"
      }
    },
    "PRIM": {
      "classifierName": "Basic Drawing Primitives",
      "color": "LimeGreen",
      "font": {
        "color": "black"
      }
    },
    "SHAPE": {
      "classifierName": "Ellipse & Polygon Drawing",
      "color": "OliveDrab",
      "font": {
        "color": "white"
      }
    },
    "FBVER": {
      "classifierName": "MicroPython FrameBuf Version History",
      "color": "DimGray",
      "font": {
        "color": "white"
      }
    },
    "ANAT": {
      "classifierName": "Facial Anatomy & Layout",
      "color": "MediumPurple",
      "font": {
        "color": "white"
      }
    },
    "EMOT": {
      "classifierName": "Emotion Psychology & Expression Design",
      "color": "HotPink",
      "font": {
        "color": "black"
      }
    },
    "ANIM": {
      "classifierName": "Animation & Timing",
      "color": "Orange",
      "font": {
        "color": "black"
      }
    },
    "INTER": {
      "classifierName": "Interactive Controls & State Machines",
      "color": "DodgerBlue",
      "font": {
        "color": "white"
      }
    },
    "COLOR": {
      "classifierName": "Color Display & RGB565 Porting",
      "color": "Gold",
      "font": {
        "color": "black"
      }
    },
    "CTCAP": {
      "classifierName": "Computational Thinking & Capstone Design",
      "color": "Indigo",
      "font": {
        "color": "white"
      }
    }
  },
  "nodes": [
    {
      "id": 1,
      "label": "Raspberry Pi Pico",
      "group": "HWFND"
    },
    {
      "id": 2,
      "label": "RP2040 Microcontroller",
      "group": "HWFND"
    },
    {
      "id": 3,
      "label": "Microcontroller",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 4,
      "label": "Cytron Maker Pi RP2040",
      "group": "HWFND"
    },
    {
      "id": 5,
      "label": "Solderless Breadboard",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 6,
      "label": "Jumper Wires",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 7,
      "label": "Momentary Push Button",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 8,
      "label": "Potentiometer",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 9,
      "label": "Rotary Encoder",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 10,
      "label": "SPI Interface",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 11,
      "label": "I2C Interface",
      "group": "HWFND",
      "shape": "box"
    },
    {
      "id": 12,
      "label": "SPI Clock Line",
      "group": "HWFND"
    },
    {
      "id": 13,
      "label": "SPI Data Line",
      "group": "HWFND"
    },
    {
      "id": 14,
      "label": "Chip Select Pin",
      "group": "HWFND"
    },
    {
      "id": 15,
      "label": "Data Command Pin",
      "group": "HWFND"
    },
    {
      "id": 16,
      "label": "Display Reset Pin",
      "group": "HWFND"
    },
    {
      "id": 17,
      "label": "128x64 Monochrome OLED",
      "group": "HWFND"
    },
    {
      "id": 18,
      "label": "SSD1306 Display Driver",
      "group": "HWFND"
    },
    {
      "id": 19,
      "label": "240x240 Color Round Display",
      "group": "HWFND"
    },
    {
      "id": 20,
      "label": "GC9A01 Display Driver",
      "group": "HWFND"
    },
    {
      "id": 21,
      "label": "Pull-Up Resistor",
      "group": "HWFND"
    },
    {
      "id": 22,
      "label": "Low-Cost Robotics Kit",
      "group": "HWFND"
    },
    {
      "id": 23,
      "label": "Breadboard Wiring Diagram",
      "group": "HWFND"
    },
    {
      "id": 24,
      "label": "Display Power Requirements",
      "group": "HWFND"
    },
    {
      "id": 25,
      "label": "Display Mounting Considerations",
      "group": "HWFND"
    },
    {
      "id": 26,
      "label": "Screen-Based Robot Face",
      "group": "HIST",
      "shape": "box"
    },
    {
      "id": 27,
      "label": "Social Robot",
      "group": "HIST"
    },
    {
      "id": 28,
      "label": "Anki Cozmo",
      "group": "HIST"
    },
    {
      "id": 29,
      "label": "Anki Vector",
      "group": "HIST"
    },
    {
      "id": 30,
      "label": "Emotix Miko",
      "group": "HIST"
    },
    {
      "id": 31,
      "label": "Blue Frog Robotics Buddy",
      "group": "HIST"
    },
    {
      "id": 32,
      "label": "Cozmo Emotion Engine",
      "group": "HIST"
    },
    {
      "id": 33,
      "label": "Vector Companion App",
      "group": "HIST"
    },
    {
      "id": 34,
      "label": "Miko Educational Robot Design",
      "group": "HIST"
    },
    {
      "id": 35,
      "label": "Buddy Mobile Robot Base",
      "group": "HIST"
    },
    {
      "id": 36,
      "label": "Robot Startup Funding",
      "group": "HIST"
    },
    {
      "id": 37,
      "label": "Robot Product Discontinuation",
      "group": "HIST"
    },
    {
      "id": 38,
      "label": "Crowdfunding Campaign",
      "group": "HIST"
    },
    {
      "id": 39,
      "label": "Robot Commercial Outcome",
      "group": "HIST"
    },
    {
      "id": 40,
      "label": "Robot Face Design Scoping",
      "group": "HIST"
    },
    {
      "id": 41,
      "label": "Companion Robot Category",
      "group": "HIST"
    },
    {
      "id": 42,
      "label": "Mass-Market Robot Toy",
      "group": "HIST"
    },
    {
      "id": 43,
      "label": "Robot Voice Interaction",
      "group": "HIST"
    },
    {
      "id": 44,
      "label": "Robot Business Case Study",
      "group": "HIST"
    },
    {
      "id": 45,
      "label": "Hardware Cost Trade-Off",
      "group": "HIST"
    },
    {
      "id": 46,
      "label": "Anki Company History",
      "group": "HIST"
    },
    {
      "id": 47,
      "label": "Consumer Robotics Market",
      "group": "HIST"
    },
    {
      "id": 48,
      "label": "Robot Personality Branding",
      "group": "HIST"
    },
    {
      "id": 49,
      "label": "Screen As Face Metaphor",
      "group": "HIST"
    },
    {
      "id": 50,
      "label": "Educational Robotics Market",
      "group": "HIST"
    },
    {
      "id": 51,
      "label": "MicroPython",
      "group": "MPYFN"
    },
    {
      "id": 52,
      "label": "Thonny IDE",
      "group": "MPYFN"
    },
    {
      "id": 53,
      "label": "MicroPython REPL",
      "group": "MPYFN"
    },
    {
      "id": 54,
      "label": "Variable",
      "group": "MPYFN"
    },
    {
      "id": 55,
      "label": "Constant",
      "group": "MPYFN"
    },
    {
      "id": 56,
      "label": "Data Type",
      "group": "MPYFN"
    },
    {
      "id": 57,
      "label": "Integer Data Type",
      "group": "MPYFN"
    },
    {
      "id": 58,
      "label": "Boolean Data Type",
      "group": "MPYFN"
    },
    {
      "id": 59,
      "label": "Function Definition",
      "group": "MPYFN"
    },
    {
      "id": 60,
      "label": "Function Parameter",
      "group": "MPYFN"
    },
    {
      "id": 61,
      "label": "Function Return Value",
      "group": "MPYFN"
    },
    {
      "id": 62,
      "label": "For Loop",
      "group": "MPYFN"
    },
    {
      "id": 63,
      "label": "While Loop",
      "group": "MPYFN"
    },
    {
      "id": 64,
      "label": "Conditional Statement",
      "group": "MPYFN"
    },
    {
      "id": 65,
      "label": "Import Statement",
      "group": "MPYFN"
    },
    {
      "id": 66,
      "label": "Module",
      "group": "MPYFN"
    },
    {
      "id": 67,
      "label": "List Data Structure",
      "group": "MPYFN"
    },
    {
      "id": 68,
      "label": "Tuple Data Structure",
      "group": "MPYFN"
    },
    {
      "id": 69,
      "label": "Dictionary Data Structure",
      "group": "MPYFN"
    },
    {
      "id": 70,
      "label": "Comment Syntax",
      "group": "MPYFN",
      "shape": "box"
    },
    {
      "id": 71,
      "label": "Indentation Rules",
      "group": "MPYFN",
      "shape": "box"
    },
    {
      "id": 72,
      "label": "Bitwise Operator",
      "group": "MPYFN"
    },
    {
      "id": 73,
      "label": "Bit Shifting",
      "group": "MPYFN"
    },
    {
      "id": 74,
      "label": "FrameBuf Module",
      "group": "MPYFN"
    },
    {
      "id": 75,
      "label": "String Formatting",
      "group": "MPYFN"
    },
    {
      "id": 76,
      "label": "Default Parameter Value",
      "group": "MPYFN"
    },
    {
      "id": 77,
      "label": "Multiple Return Values",
      "group": "MPYFN"
    },
    {
      "id": 78,
      "label": "Global Versus Local Scope",
      "group": "MPYFN"
    },
    {
      "id": 79,
      "label": "Docstring Convention",
      "group": "MPYFN"
    },
    {
      "id": 80,
      "label": "Screen Coordinate System",
      "group": "DISPC"
    },
    {
      "id": 81,
      "label": "Origin At Upper-Left",
      "group": "DISPC"
    },
    {
      "id": 82,
      "label": "X Axis Direction",
      "group": "DISPC"
    },
    {
      "id": 83,
      "label": "Y Axis Direction",
      "group": "DISPC"
    },
    {
      "id": 84,
      "label": "Pixel",
      "group": "DISPC",
      "shape": "box"
    },
    {
      "id": 85,
      "label": "Frame Buffer",
      "group": "DISPC"
    },
    {
      "id": 86,
      "label": "Display Resolution",
      "group": "DISPC"
    },
    {
      "id": 87,
      "label": "Monochrome Color Model",
      "group": "DISPC"
    },
    {
      "id": 88,
      "label": "Display Buffer Memory",
      "group": "DISPC"
    },
    {
      "id": 89,
      "label": "Screen Refresh Cycle",
      "group": "DISPC"
    },
    {
      "id": 90,
      "label": "Aspect Ratio",
      "group": "DISPC"
    },
    {
      "id": 91,
      "label": "Circular Display Geometry",
      "group": "DISPC"
    },
    {
      "id": 92,
      "label": "Coordinate Plane Quadrant",
      "group": "DISPC"
    },
    {
      "id": 93,
      "label": "Bounding Box",
      "group": "DISPC"
    },
    {
      "id": 94,
      "label": "Display Initialization",
      "group": "DISPC"
    },
    {
      "id": 95,
      "label": "Show Method",
      "group": "DISPC"
    },
    {
      "id": 96,
      "label": "Frame Buffer Size Calculation",
      "group": "DISPC"
    },
    {
      "id": 97,
      "label": "Bit Depth",
      "group": "DISPC"
    },
    {
      "id": 98,
      "label": "Byte Alignment In Buffer",
      "group": "DISPC"
    },
    {
      "id": 99,
      "label": "Fill Method",
      "group": "PRIM"
    },
    {
      "id": 100,
      "label": "Horizontal Line Method",
      "group": "PRIM"
    },
    {
      "id": 101,
      "label": "Vertical Line Method",
      "group": "PRIM"
    },
    {
      "id": 102,
      "label": "Line Method",
      "group": "PRIM"
    },
    {
      "id": 103,
      "label": "Rectangle Method",
      "group": "PRIM"
    },
    {
      "id": 104,
      "label": "Filled Rectangle Method",
      "group": "PRIM"
    },
    {
      "id": 105,
      "label": "Scroll Method",
      "group": "PRIM"
    },
    {
      "id": 106,
      "label": "Blit Method",
      "group": "PRIM"
    },
    {
      "id": 107,
      "label": "Transparent Color Key",
      "group": "PRIM"
    },
    {
      "id": 108,
      "label": "Blit Palette Mapping",
      "group": "PRIM"
    },
    {
      "id": 109,
      "label": "Pixel Method",
      "group": "PRIM"
    },
    {
      "id": 110,
      "label": "Drawing Color Value",
      "group": "PRIM"
    },
    {
      "id": 111,
      "label": "Drawing Constants",
      "group": "PRIM"
    },
    {
      "id": 112,
      "label": "Sprite",
      "group": "PRIM"
    },
    {
      "id": 113,
      "label": "Bitmap",
      "group": "PRIM"
    },
    {
      "id": 114,
      "label": "Unsigned Byte Array",
      "group": "PRIM"
    },
    {
      "id": 115,
      "label": "Text Method",
      "group": "PRIM"
    },
    {
      "id": 116,
      "label": "Draw Order Layering",
      "group": "PRIM"
    },
    {
      "id": 117,
      "label": "Overdraw",
      "group": "PRIM"
    },
    {
      "id": 118,
      "label": "Clipping At Screen Edge",
      "group": "PRIM"
    },
    {
      "id": 119,
      "label": "Draw Call Order Optimization",
      "group": "PRIM"
    },
    {
      "id": 120,
      "label": "Ellipse Method",
      "group": "SHAPE"
    },
    {
      "id": 121,
      "label": "Quadrant Fill Code",
      "group": "SHAPE"
    },
    {
      "id": 122,
      "label": "Ellipse Radius Parameter",
      "group": "SHAPE"
    },
    {
      "id": 123,
      "label": "Filled Versus Outlined Shape",
      "group": "SHAPE"
    },
    {
      "id": 124,
      "label": "Poly Method",
      "group": "SHAPE"
    },
    {
      "id": 125,
      "label": "Point Array",
      "group": "SHAPE"
    },
    {
      "id": 126,
      "label": "Polygon Vertex",
      "group": "SHAPE"
    },
    {
      "id": 127,
      "label": "Closed Polygon Path",
      "group": "SHAPE"
    },
    {
      "id": 128,
      "label": "Convex Polygon",
      "group": "SHAPE"
    },
    {
      "id": 129,
      "label": "Concave Polygon",
      "group": "SHAPE"
    },
    {
      "id": 130,
      "label": "Approximating Curves With Lines",
      "group": "SHAPE"
    },
    {
      "id": 131,
      "label": "Circle As Special Ellipse",
      "group": "SHAPE"
    },
    {
      "id": 132,
      "label": "Triangle Eyebrow Shape",
      "group": "SHAPE"
    },
    {
      "id": 133,
      "label": "Rounded Rectangle Approximation",
      "group": "SHAPE"
    },
    {
      "id": 134,
      "label": "Anti-Aliasing Limitation",
      "group": "SHAPE"
    },
    {
      "id": 135,
      "label": "FrameBuf Version Timeline",
      "group": "FBVER"
    },
    {
      "id": 136,
      "label": "Blit Cross-Format Support V1.17",
      "group": "FBVER"
    },
    {
      "id": 137,
      "label": "Framebuf Method Set Before V1.20",
      "group": "FBVER"
    },
    {
      "id": 138,
      "label": "Ellipse Poly Dev Branch Merge",
      "group": "FBVER"
    },
    {
      "id": 139,
      "label": "Nightly Build Firmware",
      "group": "FBVER"
    },
    {
      "id": 140,
      "label": "MicroPython V1.20.0 Release",
      "group": "FBVER"
    },
    {
      "id": 141,
      "label": "Ellipse Bug Fix V1.24.1",
      "group": "FBVER"
    },
    {
      "id": 142,
      "label": "Pre-2023 Curve Workaround",
      "group": "FBVER"
    },
    {
      "id": 143,
      "label": "MicroPython Release Versioning",
      "group": "FBVER"
    },
    {
      "id": 144,
      "label": "MicroPython Firmware Update",
      "group": "FBVER"
    },
    {
      "id": 145,
      "label": "Open Source Contribution Model",
      "group": "FBVER"
    },
    {
      "id": 146,
      "label": "MicroPython GitHub Repository",
      "group": "FBVER"
    },
    {
      "id": 147,
      "label": "Face Outline",
      "group": "ANAT"
    },
    {
      "id": 148,
      "label": "Eye Placement",
      "group": "ANAT"
    },
    {
      "id": 149,
      "label": "Eye Size Parameter",
      "group": "ANAT"
    },
    {
      "id": 150,
      "label": "Eye Spacing",
      "group": "ANAT"
    },
    {
      "id": 151,
      "label": "Pupil",
      "group": "ANAT"
    },
    {
      "id": 152,
      "label": "Pupil Size Parameter",
      "group": "ANAT"
    },
    {
      "id": 153,
      "label": "Eyebrow Shape",
      "group": "ANAT"
    },
    {
      "id": 154,
      "label": "Eyebrow Angle Parameter",
      "group": "ANAT"
    },
    {
      "id": 155,
      "label": "Mouth Shape",
      "group": "ANAT"
    },
    {
      "id": 156,
      "label": "Mouth Curvature Parameter",
      "group": "ANAT"
    },
    {
      "id": 157,
      "label": "Bottom-Half Mouth Curve",
      "group": "ANAT"
    },
    {
      "id": 158,
      "label": "Nose Representation",
      "group": "ANAT"
    },
    {
      "id": 159,
      "label": "Facial Symmetry",
      "group": "ANAT"
    },
    {
      "id": 160,
      "label": "Facial Proportion",
      "group": "ANAT"
    },
    {
      "id": 161,
      "label": "Draw Face Function",
      "group": "ANAT"
    },
    {
      "id": 162,
      "label": "Parameterized Face Design",
      "group": "ANAT"
    },
    {
      "id": 163,
      "label": "Face Layout Grid",
      "group": "ANAT"
    },
    {
      "id": 164,
      "label": "Feature Independence",
      "group": "ANAT"
    },
    {
      "id": 165,
      "label": "Eyelid Representation",
      "group": "ANAT"
    },
    {
      "id": 166,
      "label": "Cheek Representation",
      "group": "ANAT"
    },
    {
      "id": 167,
      "label": "Face State Data Structure",
      "group": "ANAT"
    },
    {
      "id": 168,
      "label": "Default Face Parameters",
      "group": "ANAT"
    },
    {
      "id": 169,
      "label": "Feature Scaling For Screen Size",
      "group": "ANAT"
    },
    {
      "id": 170,
      "label": "Ekman Universal Emotions",
      "group": "EMOT",
      "shape": "box"
    },
    {
      "id": 171,
      "label": "Basic Emotion Theory",
      "group": "EMOT"
    },
    {
      "id": 172,
      "label": "Facial Action Coding",
      "group": "EMOT"
    },
    {
      "id": 173,
      "label": "Minimal Feature Robot Research",
      "group": "EMOT"
    },
    {
      "id": 174,
      "label": "Emotion Recognition Accuracy",
      "group": "EMOT"
    },
    {
      "id": 175,
      "label": "Neutral Expression",
      "group": "EMOT"
    },
    {
      "id": 176,
      "label": "Happy Expression",
      "group": "EMOT"
    },
    {
      "id": 177,
      "label": "Sad Expression",
      "group": "EMOT"
    },
    {
      "id": 178,
      "label": "Angry Expression",
      "group": "EMOT"
    },
    {
      "id": 179,
      "label": "Afraid Expression",
      "group": "EMOT"
    },
    {
      "id": 180,
      "label": "Surprised Expression",
      "group": "EMOT"
    },
    {
      "id": 181,
      "label": "Disgusted Expression",
      "group": "EMOT"
    },
    {
      "id": 182,
      "label": "Contempt Expression",
      "group": "EMOT"
    },
    {
      "id": 183,
      "label": "Tired Expression",
      "group": "EMOT"
    },
    {
      "id": 184,
      "label": "Stern Expression",
      "group": "EMOT"
    },
    {
      "id": 185,
      "label": "Sleepy Expression",
      "group": "EMOT"
    },
    {
      "id": 186,
      "label": "Confused Expression",
      "group": "EMOT"
    },
    {
      "id": 187,
      "label": "Excited Expression",
      "group": "EMOT"
    },
    {
      "id": 188,
      "label": "Expression Intensity",
      "group": "EMOT"
    },
    {
      "id": 189,
      "label": "Expression Ambiguity",
      "group": "EMOT"
    },
    {
      "id": 190,
      "label": "Eyebrow Emotion Signaling",
      "group": "EMOT"
    },
    {
      "id": 191,
      "label": "Mouth Emotion Signaling",
      "group": "EMOT"
    },
    {
      "id": 192,
      "label": "Eye Emotion Signaling",
      "group": "EMOT"
    },
    {
      "id": 193,
      "label": "Cross-Cultural Recognition",
      "group": "EMOT"
    },
    {
      "id": 194,
      "label": "Human-Robot Interaction",
      "group": "EMOT"
    },
    {
      "id": 195,
      "label": "Emotional Design Rubric",
      "group": "EMOT"
    },
    {
      "id": 196,
      "label": "Viewing Distance Readability",
      "group": "EMOT"
    },
    {
      "id": 197,
      "label": "Classroom Lighting Consideration",
      "group": "EMOT"
    },
    {
      "id": 198,
      "label": "Valence Arousal Model",
      "group": "EMOT"
    },
    {
      "id": 199,
      "label": "Uncanny Valley Effect",
      "group": "EMOT"
    },
    {
      "id": 200,
      "label": "Anthropomorphism",
      "group": "EMOT"
    },
    {
      "id": 201,
      "label": "Affective Computing",
      "group": "EMOT"
    },
    {
      "id": 202,
      "label": "Multimodal Emotion Cues",
      "group": "EMOT"
    },
    {
      "id": 203,
      "label": "Animation Loop",
      "group": "ANIM"
    },
    {
      "id": 204,
      "label": "Frame Rate",
      "group": "ANIM"
    },
    {
      "id": 205,
      "label": "Blinking Animation",
      "group": "ANIM"
    },
    {
      "id": 206,
      "label": "Eye Scanner Animation",
      "group": "ANIM"
    },
    {
      "id": 207,
      "label": "Pupil Movement Gaze",
      "group": "ANIM"
    },
    {
      "id": 208,
      "label": "Timing Loop",
      "group": "ANIM"
    },
    {
      "id": 209,
      "label": "Sleep Function Timing",
      "group": "ANIM"
    },
    {
      "id": 210,
      "label": "Expression Interpolation",
      "group": "ANIM"
    },
    {
      "id": 211,
      "label": "Easing Function",
      "group": "ANIM"
    },
    {
      "id": 212,
      "label": "Idle Animation",
      "group": "ANIM"
    },
    {
      "id": 213,
      "label": "Animation State Timer",
      "group": "ANIM"
    },
    {
      "id": 214,
      "label": "Ticks Function Timing",
      "group": "ANIM"
    },
    {
      "id": 215,
      "label": "Ticks Diff Calculation",
      "group": "ANIM"
    },
    {
      "id": 216,
      "label": "Draw Time Benchmarking",
      "group": "ANIM"
    },
    {
      "id": 217,
      "label": "Frame Buffer Redraw Rate",
      "group": "ANIM"
    },
    {
      "id": 218,
      "label": "Flicker Reduction",
      "group": "ANIM"
    },
    {
      "id": 219,
      "label": "Double Buffering",
      "group": "ANIM"
    },
    {
      "id": 220,
      "label": "Animation Keyframe",
      "group": "ANIM"
    },
    {
      "id": 221,
      "label": "Randomized Blink Timing",
      "group": "ANIM"
    },
    {
      "id": 222,
      "label": "Smooth Transition Design",
      "group": "ANIM"
    },
    {
      "id": 223,
      "label": "State-Based Animation Trigger",
      "group": "ANIM"
    },
    {
      "id": 224,
      "label": "Non-Blocking Delay Pattern",
      "group": "ANIM"
    },
    {
      "id": 225,
      "label": "Cooperative Multitasking",
      "group": "ANIM"
    },
    {
      "id": 226,
      "label": "Digital Input Reading",
      "group": "INTER"
    },
    {
      "id": 227,
      "label": "Analog Input Reading",
      "group": "INTER"
    },
    {
      "id": 228,
      "label": "Analog-To-Digital Conversion",
      "group": "INTER"
    },
    {
      "id": 229,
      "label": "Button Debounce",
      "group": "INTER"
    },
    {
      "id": 230,
      "label": "Button Interrupt Handler",
      "group": "INTER"
    },
    {
      "id": 231,
      "label": "Potentiometer Value Mapping",
      "group": "INTER"
    },
    {
      "id": 232,
      "label": "Rotary Encoder Position Tracking",
      "group": "INTER"
    },
    {
      "id": 233,
      "label": "Encoder Direction Detection",
      "group": "INTER"
    },
    {
      "id": 234,
      "label": "Mode State Machine",
      "group": "INTER"
    },
    {
      "id": 235,
      "label": "Multi-Mode Menu",
      "group": "INTER"
    },
    {
      "id": 236,
      "label": "Expression Selection Menu",
      "group": "INTER"
    },
    {
      "id": 237,
      "label": "Live Parameter Tuning",
      "group": "INTER"
    },
    {
      "id": 238,
      "label": "Event-Driven Programming",
      "group": "INTER"
    },
    {
      "id": 239,
      "label": "Polling Input Loop",
      "group": "INTER"
    },
    {
      "id": 240,
      "label": "Dual-Core Processing",
      "group": "INTER"
    },
    {
      "id": 241,
      "label": "Core Task Assignment",
      "group": "INTER"
    },
    {
      "id": 242,
      "label": "Global State Variable",
      "group": "INTER"
    },
    {
      "id": 243,
      "label": "Input Debouncing Delay",
      "group": "INTER"
    },
    {
      "id": 244,
      "label": "User Interface Feedback",
      "group": "INTER"
    },
    {
      "id": 245,
      "label": "Control Mapping Design",
      "group": "INTER"
    },
    {
      "id": 246,
      "label": "State Transition Diagram",
      "group": "INTER"
    },
    {
      "id": 247,
      "label": "Default Idle State",
      "group": "INTER"
    },
    {
      "id": 248,
      "label": "Debounce Time Constant",
      "group": "INTER"
    },
    {
      "id": 249,
      "label": "Encoder Quadrature Signal",
      "group": "INTER"
    },
    {
      "id": 250,
      "label": "RGB565 Color Model",
      "group": "COLOR"
    },
    {
      "id": 251,
      "label": "Color565 Function",
      "group": "COLOR"
    },
    {
      "id": 252,
      "label": "Red Green Blue Channels",
      "group": "COLOR"
    },
    {
      "id": 253,
      "label": "Color Bit Depth",
      "group": "COLOR"
    },
    {
      "id": 254,
      "label": "Color Palette",
      "group": "COLOR"
    },
    {
      "id": 255,
      "label": "Named Color Constants",
      "group": "COLOR"
    },
    {
      "id": 256,
      "label": "Color Wheel Function",
      "group": "COLOR"
    },
    {
      "id": 257,
      "label": "Color Cycling Animation",
      "group": "COLOR"
    },
    {
      "id": 258,
      "label": "Round Display Layout",
      "group": "COLOR"
    },
    {
      "id": 259,
      "label": "Color Versus Mono Trade-Off",
      "group": "COLOR"
    },
    {
      "id": 260,
      "label": "Display Driver Porting",
      "group": "COLOR"
    },
    {
      "id": 261,
      "label": "Cross-Display Code Compatibility",
      "group": "COLOR"
    },
    {
      "id": 262,
      "label": "Color Contrast Design",
      "group": "COLOR"
    },
    {
      "id": 263,
      "label": "Color Emotion Association",
      "group": "COLOR"
    },
    {
      "id": 264,
      "label": "Display Performance Comparison",
      "group": "COLOR"
    },
    {
      "id": 265,
      "label": "Memory Use Comparison",
      "group": "COLOR"
    },
    {
      "id": 266,
      "label": "SPI Bus Speed",
      "group": "COLOR"
    },
    {
      "id": 267,
      "label": "Color Display Init Sequence",
      "group": "COLOR"
    },
    {
      "id": 268,
      "label": "Color Theory Basics",
      "group": "COLOR"
    },
    {
      "id": 269,
      "label": "Warm Versus Cool Color",
      "group": "COLOR"
    },
    {
      "id": 270,
      "label": "Hue Saturation Brightness",
      "group": "COLOR"
    },
    {
      "id": 271,
      "label": "Computational Thinking",
      "group": "CTCAP",
      "shape": "box"
    },
    {
      "id": 272,
      "label": "Abstraction",
      "group": "CTCAP"
    },
    {
      "id": 273,
      "label": "Decomposition",
      "group": "CTCAP"
    },
    {
      "id": 274,
      "label": "Modularity",
      "group": "CTCAP"
    },
    {
      "id": 275,
      "label": "Pattern Recognition",
      "group": "CTCAP"
    },
    {
      "id": 276,
      "label": "Algorithm Design",
      "group": "CTCAP"
    },
    {
      "id": 277,
      "label": "Code Reuse",
      "group": "CTCAP"
    },
    {
      "id": 278,
      "label": "Design Critique",
      "group": "CTCAP"
    },
    {
      "id": 279,
      "label": "Design Trade-Off Analysis",
      "group": "CTCAP"
    },
    {
      "id": 280,
      "label": "Expressiveness Versus Complexity",
      "group": "CTCAP"
    },
    {
      "id": 281,
      "label": "Software Display Emulator",
      "group": "CTCAP"
    },
    {
      "id": 282,
      "label": "Turtle Graphics Prototype",
      "group": "CTCAP"
    },
    {
      "id": 283,
      "label": "Iterative Design Process",
      "group": "CTCAP"
    },
    {
      "id": 284,
      "label": "Peer Design Review",
      "group": "CTCAP"
    },
    {
      "id": 285,
      "label": "Rubric-Based Assessment",
      "group": "CTCAP"
    },
    {
      "id": 286,
      "label": "Constraint-Driven Design",
      "group": "CTCAP"
    },
    {
      "id": 287,
      "label": "Minimum Viable Feature Set",
      "group": "CTCAP"
    },
    {
      "id": 288,
      "label": "Capstone Project",
      "group": "CTCAP"
    },
    {
      "id": 289,
      "label": "Capstone Demonstration",
      "group": "CTCAP"
    },
    {
      "id": 290,
      "label": "Original Robot Personality",
      "group": "CTCAP"
    },
    {
      "id": 291,
      "label": "Project Documentation",
      "group": "CTCAP"
    },
    {
      "id": 292,
      "label": "Design Justification",
      "group": "CTCAP"
    },
    {
      "id": 293,
      "label": "Expression Set Planning",
      "group": "CTCAP"
    }
  ],
  "edges": [
    {
      "from": 1,
      "to": 2
    },
    {
      "from": 2,
      "to": 3
    },
    {
      "from": 4,
      "to": 1
    },
    {
      "from": 12,
      "to": 10
    },
    {
      "from": 13,
      "to": 10
    },
    {
      "from": 14,
      "to": 10
    },
    {
      "from": 15,
      "to": 10
    },
    {
      "from": 16,
      "to": 10
    },
    {
      "from": 17,
      "to": 10
    },
    {
      "from": 18,
      "to": 17
    },
    {
      "from": 18,
      "to": 12
    },
    {
      "from": 18,
      "to": 13
    },
    {
      "from": 18,
      "to": 14
    },
    {
      "from": 18,
      "to": 11
    },
    {
      "from": 19,
      "to": 10
    },
    {
      "from": 20,
      "to": 19
    },
    {
      "from": 20,
      "to": 12
    },
    {
      "from": 20,
      "to": 13
    },
    {
      "from": 20,
      "to": 14
    },
    {
      "from": 20,
      "to": 16
    },
    {
      "from": 21,
      "to": 7
    },
    {
      "from": 22,
      "to": 1
    },
    {
      "from": 22,
      "to": 17
    },
    {
      "from": 22,
      "to": 19
    },
    {
      "from": 23,
      "to": 5
    },
    {
      "from": 23,
      "to": 6
    },
    {
      "from": 23,
      "to": 1
    },
    {
      "from": 24,
      "to": 17
    },
    {
      "from": 24,
      "to": 19
    },
    {
      "from": 25,
      "to": 17
    },
    {
      "from": 25,
      "to": 19
    },
    {
      "from": 27,
      "to": 26
    },
    {
      "from": 28,
      "to": 26
    },
    {
      "from": 28,
      "to": 27
    },
    {
      "from": 29,
      "to": 28
    },
    {
      "from": 30,
      "to": 26
    },
    {
      "from": 30,
      "to": 27
    },
    {
      "from": 31,
      "to": 26
    },
    {
      "from": 31,
      "to": 27
    },
    {
      "from": 32,
      "to": 28
    },
    {
      "from": 33,
      "to": 29
    },
    {
      "from": 34,
      "to": 30
    },
    {
      "from": 35,
      "to": 31
    },
    {
      "from": 36,
      "to": 28
    },
    {
      "from": 37,
      "to": 29
    },
    {
      "from": 37,
      "to": 36
    },
    {
      "from": 38,
      "to": 31
    },
    {
      "from": 39,
      "to": 28
    },
    {
      "from": 39,
      "to": 29
    },
    {
      "from": 39,
      "to": 30
    },
    {
      "from": 39,
      "to": 31
    },
    {
      "from": 40,
      "to": 35
    },
    {
      "from": 40,
      "to": 39
    },
    {
      "from": 41,
      "to": 30
    },
    {
      "from": 41,
      "to": 31
    },
    {
      "from": 42,
      "to": 28
    },
    {
      "from": 43,
      "to": 29
    },
    {
      "from": 44,
      "to": 36
    },
    {
      "from": 44,
      "to": 37
    },
    {
      "from": 44,
      "to": 38
    },
    {
      "from": 44,
      "to": 39
    },
    {
      "from": 45,
      "to": 22
    },
    {
      "from": 45,
      "to": 39
    },
    {
      "from": 46,
      "to": 28
    },
    {
      "from": 46,
      "to": 29
    },
    {
      "from": 46,
      "to": 37
    },
    {
      "from": 47,
      "to": 42
    },
    {
      "from": 47,
      "to": 41
    },
    {
      "from": 48,
      "to": 32
    },
    {
      "from": 48,
      "to": 33
    },
    {
      "from": 49,
      "to": 26
    },
    {
      "from": 49,
      "to": 32
    },
    {
      "from": 50,
      "to": 34
    },
    {
      "from": 50,
      "to": 47
    },
    {
      "from": 51,
      "to": 1
    },
    {
      "from": 52,
      "to": 51
    },
    {
      "from": 53,
      "to": 51
    },
    {
      "from": 53,
      "to": 52
    },
    {
      "from": 54,
      "to": 51
    },
    {
      "from": 55,
      "to": 54
    },
    {
      "from": 56,
      "to": 54
    },
    {
      "from": 57,
      "to": 56
    },
    {
      "from": 58,
      "to": 56
    },
    {
      "from": 59,
      "to": 54
    },
    {
      "from": 59,
      "to": 64
    },
    {
      "from": 60,
      "to": 59
    },
    {
      "from": 61,
      "to": 59
    },
    {
      "from": 62,
      "to": 54
    },
    {
      "from": 63,
      "to": 54
    },
    {
      "from": 64,
      "to": 58
    },
    {
      "from": 64,
      "to": 71
    },
    {
      "from": 65,
      "to": 66
    },
    {
      "from": 66,
      "to": 51
    },
    {
      "from": 67,
      "to": 56
    },
    {
      "from": 67,
      "to": 54
    },
    {
      "from": 68,
      "to": 67
    },
    {
      "from": 69,
      "to": 67
    },
    {
      "from": 72,
      "to": 57
    },
    {
      "from": 73,
      "to": 72
    },
    {
      "from": 74,
      "to": 65
    },
    {
      "from": 74,
      "to": 66
    },
    {
      "from": 75,
      "to": 56
    },
    {
      "from": 76,
      "to": 60
    },
    {
      "from": 77,
      "to": 61
    },
    {
      "from": 77,
      "to": 68
    },
    {
      "from": 78,
      "to": 59
    },
    {
      "from": 78,
      "to": 54
    },
    {
      "from": 79,
      "to": 59
    },
    {
      "from": 79,
      "to": 70
    },
    {
      "from": 80,
      "to": 84
    },
    {
      "from": 81,
      "to": 80
    },
    {
      "from": 82,
      "to": 80
    },
    {
      "from": 83,
      "to": 80
    },
    {
      "from": 85,
      "to": 84
    },
    {
      "from": 85,
      "to": 74
    },
    {
      "from": 86,
      "to": 84
    },
    {
      "from": 86,
      "to": 17
    },
    {
      "from": 86,
      "to": 19
    },
    {
      "from": 87,
      "to": 84
    },
    {
      "from": 87,
      "to": 17
    },
    {
      "from": 88,
      "to": 85
    },
    {
      "from": 89,
      "to": 85
    },
    {
      "from": 90,
      "to": 86
    },
    {
      "from": 91,
      "to": 19
    },
    {
      "from": 91,
      "to": 80
    },
    {
      "from": 92,
      "to": 80
    },
    {
      "from": 92,
      "to": 81
    },
    {
      "from": 92,
      "to": 82
    },
    {
      "from": 92,
      "to": 83
    },
    {
      "from": 93,
      "to": 80
    },
    {
      "from": 93,
      "to": 86
    },
    {
      "from": 94,
      "to": 18
    },
    {
      "from": 94,
      "to": 20
    },
    {
      "from": 94,
      "to": 53
    },
    {
      "from": 95,
      "to": 85
    },
    {
      "from": 95,
      "to": 94
    },
    {
      "from": 96,
      "to": 85
    },
    {
      "from": 96,
      "to": 86
    },
    {
      "from": 96,
      "to": 97
    },
    {
      "from": 97,
      "to": 87
    },
    {
      "from": 98,
      "to": 85
    },
    {
      "from": 98,
      "to": 97
    },
    {
      "from": 99,
      "to": 85
    },
    {
      "from": 99,
      "to": 110
    },
    {
      "from": 100,
      "to": 85
    },
    {
      "from": 100,
      "to": 110
    },
    {
      "from": 101,
      "to": 85
    },
    {
      "from": 101,
      "to": 110
    },
    {
      "from": 102,
      "to": 100
    },
    {
      "from": 102,
      "to": 101
    },
    {
      "from": 103,
      "to": 100
    },
    {
      "from": 103,
      "to": 101
    },
    {
      "from": 104,
      "to": 103
    },
    {
      "from": 104,
      "to": 99
    },
    {
      "from": 105,
      "to": 85
    },
    {
      "from": 106,
      "to": 85
    },
    {
      "from": 106,
      "to": 113
    },
    {
      "from": 107,
      "to": 106
    },
    {
      "from": 108,
      "to": 106
    },
    {
      "from": 108,
      "to": 87
    },
    {
      "from": 109,
      "to": 85
    },
    {
      "from": 109,
      "to": 84
    },
    {
      "from": 110,
      "to": 87
    },
    {
      "from": 111,
      "to": 110
    },
    {
      "from": 111,
      "to": 55
    },
    {
      "from": 112,
      "to": 113
    },
    {
      "from": 113,
      "to": 84
    },
    {
      "from": 113,
      "to": 114
    },
    {
      "from": 114,
      "to": 67
    },
    {
      "from": 115,
      "to": 85
    },
    {
      "from": 115,
      "to": 110
    },
    {
      "from": 116,
      "to": 99
    },
    {
      "from": 116,
      "to": 103
    },
    {
      "from": 117,
      "to": 116
    },
    {
      "from": 118,
      "to": 86
    },
    {
      "from": 118,
      "to": 109
    },
    {
      "from": 119,
      "to": 116
    },
    {
      "from": 120,
      "to": 99
    },
    {
      "from": 120,
      "to": 103
    },
    {
      "from": 120,
      "to": 110
    },
    {
      "from": 121,
      "to": 120
    },
    {
      "from": 122,
      "to": 120
    },
    {
      "from": 123,
      "to": 120
    },
    {
      "from": 123,
      "to": 104
    },
    {
      "from": 124,
      "to": 102
    },
    {
      "from": 124,
      "to": 110
    },
    {
      "from": 125,
      "to": 114
    },
    {
      "from": 125,
      "to": 124
    },
    {
      "from": 126,
      "to": 125
    },
    {
      "from": 127,
      "to": 126
    },
    {
      "from": 128,
      "to": 127
    },
    {
      "from": 129,
      "to": 127
    },
    {
      "from": 130,
      "to": 102
    },
    {
      "from": 130,
      "to": 120
    },
    {
      "from": 131,
      "to": 120
    },
    {
      "from": 131,
      "to": 122
    },
    {
      "from": 132,
      "to": 124
    },
    {
      "from": 132,
      "to": 126
    },
    {
      "from": 133,
      "to": 103
    },
    {
      "from": 133,
      "to": 120
    },
    {
      "from": 134,
      "to": 87
    },
    {
      "from": 134,
      "to": 120
    },
    {
      "from": 135,
      "to": 74
    },
    {
      "from": 136,
      "to": 106
    },
    {
      "from": 136,
      "to": 108
    },
    {
      "from": 136,
      "to": 135
    },
    {
      "from": 137,
      "to": 135
    },
    {
      "from": 137,
      "to": 99
    },
    {
      "from": 137,
      "to": 103
    },
    {
      "from": 137,
      "to": 105
    },
    {
      "from": 137,
      "to": 106
    },
    {
      "from": 138,
      "to": 120
    },
    {
      "from": 138,
      "to": 124
    },
    {
      "from": 138,
      "to": 137
    },
    {
      "from": 139,
      "to": 138
    },
    {
      "from": 140,
      "to": 138
    },
    {
      "from": 140,
      "to": 139
    },
    {
      "from": 141,
      "to": 140
    },
    {
      "from": 141,
      "to": 122
    },
    {
      "from": 142,
      "to": 130
    },
    {
      "from": 142,
      "to": 137
    },
    {
      "from": 143,
      "to": 135
    },
    {
      "from": 144,
      "to": 143
    },
    {
      "from": 144,
      "to": 140
    },
    {
      "from": 145,
      "to": 138
    },
    {
      "from": 145,
      "to": 146
    },
    {
      "from": 146,
      "to": 135
    },
    {
      "from": 147,
      "to": 120
    },
    {
      "from": 147,
      "to": 124
    },
    {
      "from": 147,
      "to": 80
    },
    {
      "from": 148,
      "to": 147
    },
    {
      "from": 148,
      "to": 92
    },
    {
      "from": 149,
      "to": 148
    },
    {
      "from": 149,
      "to": 122
    },
    {
      "from": 150,
      "to": 148
    },
    {
      "from": 151,
      "to": 149
    },
    {
      "from": 151,
      "to": 120
    },
    {
      "from": 152,
      "to": 151
    },
    {
      "from": 152,
      "to": 122
    },
    {
      "from": 153,
      "to": 147
    },
    {
      "from": 153,
      "to": 132
    },
    {
      "from": 154,
      "to": 153
    },
    {
      "from": 155,
      "to": 147
    },
    {
      "from": 155,
      "to": 120
    },
    {
      "from": 155,
      "to": 124
    },
    {
      "from": 156,
      "to": 155
    },
    {
      "from": 156,
      "to": 121
    },
    {
      "from": 157,
      "to": 156
    },
    {
      "from": 157,
      "to": 121
    },
    {
      "from": 158,
      "to": 147
    },
    {
      "from": 158,
      "to": 124
    },
    {
      "from": 159,
      "to": 148
    },
    {
      "from": 159,
      "to": 153
    },
    {
      "from": 159,
      "to": 155
    },
    {
      "from": 160,
      "to": 147
    },
    {
      "from": 160,
      "to": 90
    },
    {
      "from": 161,
      "to": 147
    },
    {
      "from": 161,
      "to": 148
    },
    {
      "from": 161,
      "to": 151
    },
    {
      "from": 161,
      "to": 153
    },
    {
      "from": 161,
      "to": 155
    },
    {
      "from": 161,
      "to": 59
    },
    {
      "from": 162,
      "to": 161
    },
    {
      "from": 162,
      "to": 60
    },
    {
      "from": 163,
      "to": 147
    },
    {
      "from": 163,
      "to": 92
    },
    {
      "from": 164,
      "to": 162
    },
    {
      "from": 164,
      "to": 147
    },
    {
      "from": 165,
      "to": 121
    },
    {
      "from": 165,
      "to": 148
    },
    {
      "from": 166,
      "to": 147
    },
    {
      "from": 166,
      "to": 120
    },
    {
      "from": 167,
      "to": 162
    },
    {
      "from": 167,
      "to": 69
    },
    {
      "from": 168,
      "to": 162
    },
    {
      "from": 168,
      "to": 76
    },
    {
      "from": 169,
      "to": 162
    },
    {
      "from": 169,
      "to": 86
    },
    {
      "from": 171,
      "to": 170
    },
    {
      "from": 172,
      "to": 170
    },
    {
      "from": 173,
      "to": 172
    },
    {
      "from": 173,
      "to": 26
    },
    {
      "from": 174,
      "to": 173
    },
    {
      "from": 175,
      "to": 161
    },
    {
      "from": 175,
      "to": 170
    },
    {
      "from": 176,
      "to": 175
    },
    {
      "from": 176,
      "to": 153
    },
    {
      "from": 176,
      "to": 155
    },
    {
      "from": 177,
      "to": 175
    },
    {
      "from": 177,
      "to": 153
    },
    {
      "from": 177,
      "to": 155
    },
    {
      "from": 178,
      "to": 175
    },
    {
      "from": 178,
      "to": 153
    },
    {
      "from": 178,
      "to": 155
    },
    {
      "from": 179,
      "to": 175
    },
    {
      "from": 179,
      "to": 148
    },
    {
      "from": 179,
      "to": 155
    },
    {
      "from": 180,
      "to": 175
    },
    {
      "from": 180,
      "to": 148
    },
    {
      "from": 180,
      "to": 153
    },
    {
      "from": 181,
      "to": 175
    },
    {
      "from": 181,
      "to": 155
    },
    {
      "from": 182,
      "to": 175
    },
    {
      "from": 182,
      "to": 155
    },
    {
      "from": 183,
      "to": 175
    },
    {
      "from": 183,
      "to": 165
    },
    {
      "from": 184,
      "to": 175
    },
    {
      "from": 184,
      "to": 153
    },
    {
      "from": 185,
      "to": 183
    },
    {
      "from": 185,
      "to": 165
    },
    {
      "from": 186,
      "to": 175
    },
    {
      "from": 186,
      "to": 153
    },
    {
      "from": 187,
      "to": 175
    },
    {
      "from": 187,
      "to": 180
    },
    {
      "from": 188,
      "to": 176
    },
    {
      "from": 188,
      "to": 178
    },
    {
      "from": 189,
      "to": 186
    },
    {
      "from": 189,
      "to": 188
    },
    {
      "from": 190,
      "to": 176
    },
    {
      "from": 190,
      "to": 177
    },
    {
      "from": 190,
      "to": 178
    },
    {
      "from": 190,
      "to": 180
    },
    {
      "from": 191,
      "to": 176
    },
    {
      "from": 191,
      "to": 177
    },
    {
      "from": 191,
      "to": 181
    },
    {
      "from": 192,
      "to": 179
    },
    {
      "from": 192,
      "to": 151
    },
    {
      "from": 193,
      "to": 171
    },
    {
      "from": 193,
      "to": 174
    },
    {
      "from": 194,
      "to": 27
    },
    {
      "from": 194,
      "to": 173
    },
    {
      "from": 195,
      "to": 188
    },
    {
      "from": 195,
      "to": 189
    },
    {
      "from": 196,
      "to": 86
    },
    {
      "from": 196,
      "to": 188
    },
    {
      "from": 197,
      "to": 87
    },
    {
      "from": 197,
      "to": 196
    },
    {
      "from": 198,
      "to": 171
    },
    {
      "from": 199,
      "to": 200
    },
    {
      "from": 199,
      "to": 27
    },
    {
      "from": 200,
      "to": 27
    },
    {
      "from": 200,
      "to": 174
    },
    {
      "from": 201,
      "to": 174
    },
    {
      "from": 201,
      "to": 194
    },
    {
      "from": 202,
      "to": 190
    },
    {
      "from": 202,
      "to": 191
    },
    {
      "from": 202,
      "to": 192
    },
    {
      "from": 203,
      "to": 161
    },
    {
      "from": 203,
      "to": 63
    },
    {
      "from": 204,
      "to": 89
    },
    {
      "from": 204,
      "to": 203
    },
    {
      "from": 205,
      "to": 203
    },
    {
      "from": 205,
      "to": 165
    },
    {
      "from": 206,
      "to": 203
    },
    {
      "from": 206,
      "to": 151
    },
    {
      "from": 207,
      "to": 203
    },
    {
      "from": 207,
      "to": 151
    },
    {
      "from": 208,
      "to": 203
    },
    {
      "from": 209,
      "to": 208
    },
    {
      "from": 210,
      "to": 203
    },
    {
      "from": 210,
      "to": 188
    },
    {
      "from": 211,
      "to": 210
    },
    {
      "from": 212,
      "to": 205
    },
    {
      "from": 212,
      "to": 207
    },
    {
      "from": 213,
      "to": 208
    },
    {
      "from": 213,
      "to": 209
    },
    {
      "from": 214,
      "to": 209
    },
    {
      "from": 215,
      "to": 214
    },
    {
      "from": 216,
      "to": 215
    },
    {
      "from": 216,
      "to": 106
    },
    {
      "from": 217,
      "to": 204
    },
    {
      "from": 217,
      "to": 216
    },
    {
      "from": 218,
      "to": 217
    },
    {
      "from": 219,
      "to": 218
    },
    {
      "from": 219,
      "to": 85
    },
    {
      "from": 220,
      "to": 210
    },
    {
      "from": 220,
      "to": 213
    },
    {
      "from": 221,
      "to": 205
    },
    {
      "from": 221,
      "to": 209
    },
    {
      "from": 222,
      "to": 210
    },
    {
      "from": 222,
      "to": 211
    },
    {
      "from": 223,
      "to": 212
    },
    {
      "from": 223,
      "to": 234
    },
    {
      "from": 224,
      "to": 209
    },
    {
      "from": 224,
      "to": 213
    },
    {
      "from": 225,
      "to": 224
    },
    {
      "from": 225,
      "to": 240
    },
    {
      "from": 226,
      "to": 7
    },
    {
      "from": 227,
      "to": 8
    },
    {
      "from": 228,
      "to": 227
    },
    {
      "from": 229,
      "to": 226
    },
    {
      "from": 229,
      "to": 248
    },
    {
      "from": 230,
      "to": 226
    },
    {
      "from": 230,
      "to": 238
    },
    {
      "from": 231,
      "to": 228
    },
    {
      "from": 231,
      "to": 60
    },
    {
      "from": 232,
      "to": 9
    },
    {
      "from": 232,
      "to": 249
    },
    {
      "from": 233,
      "to": 232
    },
    {
      "from": 234,
      "to": 242
    },
    {
      "from": 234,
      "to": 246
    },
    {
      "from": 235,
      "to": 234
    },
    {
      "from": 235,
      "to": 236
    },
    {
      "from": 236,
      "to": 175
    },
    {
      "from": 236,
      "to": 234
    },
    {
      "from": 237,
      "to": 231
    },
    {
      "from": 237,
      "to": 162
    },
    {
      "from": 237,
      "to": 233
    },
    {
      "from": 238,
      "to": 64
    },
    {
      "from": 239,
      "to": 226
    },
    {
      "from": 239,
      "to": 208
    },
    {
      "from": 240,
      "to": 3
    },
    {
      "from": 241,
      "to": 240
    },
    {
      "from": 242,
      "to": 78
    },
    {
      "from": 243,
      "to": 229
    },
    {
      "from": 243,
      "to": 208
    },
    {
      "from": 244,
      "to": 236
    },
    {
      "from": 244,
      "to": 205
    },
    {
      "from": 245,
      "to": 231
    },
    {
      "from": 245,
      "to": 237
    },
    {
      "from": 246,
      "to": 64
    },
    {
      "from": 247,
      "to": 234
    },
    {
      "from": 247,
      "to": 212
    },
    {
      "from": 248,
      "to": 226
    },
    {
      "from": 249,
      "to": 9
    },
    {
      "from": 250,
      "to": 87
    },
    {
      "from": 250,
      "to": 97
    },
    {
      "from": 251,
      "to": 250
    },
    {
      "from": 251,
      "to": 60
    },
    {
      "from": 252,
      "to": 250
    },
    {
      "from": 253,
      "to": 250
    },
    {
      "from": 253,
      "to": 97
    },
    {
      "from": 254,
      "to": 250
    },
    {
      "from": 254,
      "to": 108
    },
    {
      "from": 255,
      "to": 251
    },
    {
      "from": 255,
      "to": 55
    },
    {
      "from": 256,
      "to": 251
    },
    {
      "from": 256,
      "to": 268
    },
    {
      "from": 257,
      "to": 256
    },
    {
      "from": 257,
      "to": 203
    },
    {
      "from": 258,
      "to": 91
    },
    {
      "from": 258,
      "to": 20
    },
    {
      "from": 259,
      "to": 250
    },
    {
      "from": 259,
      "to": 87
    },
    {
      "from": 260,
      "to": 18
    },
    {
      "from": 260,
      "to": 20
    },
    {
      "from": 260,
      "to": 94
    },
    {
      "from": 261,
      "to": 260
    },
    {
      "from": 261,
      "to": 162
    },
    {
      "from": 262,
      "to": 250
    },
    {
      "from": 262,
      "to": 196
    },
    {
      "from": 263,
      "to": 250
    },
    {
      "from": 263,
      "to": 195
    },
    {
      "from": 264,
      "to": 216
    },
    {
      "from": 264,
      "to": 20
    },
    {
      "from": 265,
      "to": 88
    },
    {
      "from": 265,
      "to": 250
    },
    {
      "from": 266,
      "to": 10
    },
    {
      "from": 266,
      "to": 264
    },
    {
      "from": 267,
      "to": 20
    },
    {
      "from": 267,
      "to": 94
    },
    {
      "from": 268,
      "to": 252
    },
    {
      "from": 269,
      "to": 268
    },
    {
      "from": 270,
      "to": 268
    },
    {
      "from": 272,
      "to": 271
    },
    {
      "from": 272,
      "to": 162
    },
    {
      "from": 273,
      "to": 271
    },
    {
      "from": 273,
      "to": 147
    },
    {
      "from": 274,
      "to": 271
    },
    {
      "from": 274,
      "to": 161
    },
    {
      "from": 275,
      "to": 271
    },
    {
      "from": 275,
      "to": 188
    },
    {
      "from": 276,
      "to": 271
    },
    {
      "from": 276,
      "to": 203
    },
    {
      "from": 277,
      "to": 271
    },
    {
      "from": 277,
      "to": 106
    },
    {
      "from": 278,
      "to": 195
    },
    {
      "from": 279,
      "to": 259
    },
    {
      "from": 279,
      "to": 45
    },
    {
      "from": 280,
      "to": 279
    },
    {
      "from": 280,
      "to": 216
    },
    {
      "from": 281,
      "to": 94
    },
    {
      "from": 281,
      "to": 53
    },
    {
      "from": 282,
      "to": 281
    },
    {
      "from": 282,
      "to": 124
    },
    {
      "from": 283,
      "to": 278
    },
    {
      "from": 283,
      "to": 272
    },
    {
      "from": 284,
      "to": 278
    },
    {
      "from": 285,
      "to": 195
    },
    {
      "from": 285,
      "to": 284
    },
    {
      "from": 286,
      "to": 45
    },
    {
      "from": 286,
      "to": 280
    },
    {
      "from": 287,
      "to": 273
    },
    {
      "from": 287,
      "to": 286
    },
    {
      "from": 288,
      "to": 161
    },
    {
      "from": 288,
      "to": 203
    },
    {
      "from": 288,
      "to": 234
    },
    {
      "from": 288,
      "to": 251
    },
    {
      "from": 288,
      "to": 278
    },
    {
      "from": 288,
      "to": 287
    },
    {
      "from": 289,
      "to": 288
    },
    {
      "from": 290,
      "to": 288
    },
    {
      "from": 290,
      "to": 195
    },
    {
      "from": 291,
      "to": 288
    },
    {
      "from": 291,
      "to": 79
    },
    {
      "from": 292,
      "to": 288
    },
    {
      "from": 292,
      "to": 278
    },
    {
      "from": 293,
      "to": 288
    },
    {
      "from": 293,
      "to": 202
    }
  ]
}