text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.1.0">
<drawing>
<settings>
<setting alwaysvectorfont="yes"/>
<setting verticaltext="up"/>
</settings>
<grid distance="10" unitdist="mil" unit="mil" style="lines" multiple="1" display="yes" altdistance="5" altunitdist="mil" altunit="mil"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="no" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="no" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="no" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="no" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="no" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="no" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="no" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="no" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="no" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="5" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="no" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="no" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="no" active="yes"/>
<layer number="104" name="Name" color="7" fill="1" visible="no" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="no" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="no" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="no" active="yes"/>
<layer number="108" name="centerline" color="7" fill="1" visible="no" active="yes"/>
<layer number="109" name="ref-old" color="11" fill="1" visible="no" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="no" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="no" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="no" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="no" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="131" name="prix" color="7" fill="1" visible="no" active="yes"/>
<layer number="132" name="test" color="7" fill="1" visible="no" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="no" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="no" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="no" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="no" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="no" active="yes"/>
<layer number="202" name="202bmp" color="3" fill="10" visible="no" active="yes"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="no" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="no" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="no" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="no" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="no" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="no" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="250" name="Descript" color="3" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="12" fill="11" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="no" active="yes"/>
</layers>
<board>
<plain>
<wire x1="3.81" y1="1.27" x2="45.72" y2="1.27" width="0" layer="20"/>
<wire x1="48.26" y1="5.08" x2="48.26" y2="48.26" width="0" layer="20"/>
<wire x1="46.99" y1="49.53" x2="3.81" y2="49.53" width="0" layer="20"/>
<wire x1="0" y1="46.99" x2="0" y2="29.21" width="0" layer="20"/>
<wire x1="0" y1="16.51" x2="0" y2="3.81" width="0" layer="20"/>
<wire x1="2.54" y1="19.05" x2="27.94" y2="19.05" width="0" layer="20"/>
<wire x1="30.48" y1="21.59" x2="30.48" y2="22.86" width="0" layer="20"/>
<wire x1="26.67" y1="25.4" x2="2.54" y2="25.4" width="0" layer="20"/>
<wire x1="16.51" y1="3.048" x2="15.748" y2="3.81" width="0.2032" layer="21"/>
<wire x1="15.748" y1="3.81" x2="15.748" y2="3.302" width="0.2032" layer="21"/>
<wire x1="15.748" y1="3.81" x2="16.256" y2="3.81" width="0.2032" layer="21"/>
<wire x1="12.7" y1="1.778" x2="13.208" y2="1.778" width="0.2032" layer="21"/>
<wire x1="13.208" y1="1.778" x2="13.716" y2="2.286" width="0.2032" layer="21"/>
<wire x1="13.716" y1="2.286" x2="13.462" y2="2.286" width="0.2032" layer="21"/>
<wire x1="13.716" y1="2.286" x2="13.716" y2="2.032" width="0.2032" layer="21"/>
<wire x1="27.94" y1="19.05" x2="30.48" y2="21.59" width="0" layer="20" curve="90"/>
<wire x1="30.48" y1="21.59" x2="30.48" y2="22.86" width="0" layer="20"/>
<wire x1="30.48" y1="22.86" x2="27.94" y2="25.4" width="0" layer="20" curve="90"/>
<wire x1="27.94" y1="25.4" x2="26.67" y2="25.4" width="0" layer="20"/>
<wire x1="0" y1="46.99" x2="2.54" y2="49.53" width="0" layer="20" curve="-90"/>
<wire x1="2.54" y1="49.53" x2="3.81" y2="49.53" width="0" layer="20"/>
<wire x1="2.54" y1="25.4" x2="0" y2="27.94" width="0" layer="20" curve="-90"/>
<wire x1="0" y1="27.94" x2="0" y2="29.21" width="0" layer="20"/>
<wire x1="2.54" y1="19.05" x2="0" y2="16.51" width="0" layer="20" curve="90"/>
<wire x1="0" y1="3.81" x2="2.54" y2="1.27" width="0" layer="20" curve="90"/>
<wire x1="2.54" y1="1.27" x2="3.81" y2="1.27" width="0" layer="20"/>
<wire x1="45.72" y1="1.27" x2="48.26" y2="3.81" width="0" layer="20" curve="90"/>
<wire x1="48.26" y1="3.81" x2="48.26" y2="5.08" width="0" layer="20"/>
<wire x1="46.99" y1="49.53" x2="48.26" y2="48.26" width="0" layer="20" curve="-90"/>
<text x="31.75" y="45.72" size="1.27" layer="21" font="vector" ratio="12" align="center-left">+3V3</text>
<text x="31.75" y="43.18" size="1.27" layer="21" font="vector" ratio="12" align="center-left">RX</text>
<text x="31.75" y="40.64" size="1.27" layer="21" font="vector" ratio="12" align="center-left">TX</text>
<text x="31.75" y="38.1" size="1.27" layer="21" font="vector" ratio="12" align="center-left">16</text>
<text x="31.75" y="35.56" size="1.27" layer="21" font="vector" ratio="12" align="center-left">2</text>
<text x="31.75" y="33.02" size="1.27" layer="21" font="vector" ratio="12" align="center-left">0</text>
<text x="31.75" y="30.48" size="1.27" layer="21" font="vector" ratio="12" align="center-left">GND</text>
<wire x1="11.303" y1="45.72" x2="11.557" y2="45.72" width="0.508" layer="21"/>
<wire x1="13.843" y1="45.72" x2="14.097" y2="45.72" width="0.508" layer="21"/>
<wire x1="16.383" y1="45.72" x2="16.637" y2="45.72" width="0.508" layer="21"/>
<wire x1="18.923" y1="45.72" x2="19.177" y2="45.72" width="0.508" layer="21"/>
<wire x1="21.463" y1="45.72" x2="21.717" y2="45.72" width="0.508" layer="21"/>
<wire x1="24.003" y1="45.72" x2="24.257" y2="45.72" width="0.508" layer="21"/>
<wire x1="26.543" y1="45.72" x2="26.797" y2="45.72" width="0.508" layer="21"/>
<wire x1="29.083" y1="45.72" x2="29.337" y2="45.72" width="0.508" layer="21"/>
<wire x1="26.543" y1="27.94" x2="26.797" y2="27.94" width="0.508" layer="21"/>
<wire x1="24.003" y1="27.94" x2="24.257" y2="27.94" width="0.508" layer="21"/>
<wire x1="21.463" y1="27.94" x2="21.717" y2="27.94" width="0.508" layer="21"/>
<wire x1="18.923" y1="27.94" x2="19.177" y2="27.94" width="0.508" layer="21"/>
<wire x1="16.383" y1="27.94" x2="16.637" y2="27.94" width="0.508" layer="21"/>
<wire x1="13.843" y1="27.94" x2="14.097" y2="27.94" width="0.508" layer="21"/>
<wire x1="11.303" y1="27.94" x2="11.557" y2="27.94" width="0.508" layer="21"/>
<wire x1="8.763" y1="27.94" x2="9.017" y2="27.94" width="0.508" layer="21"/>
<wire x1="6.223" y1="27.94" x2="6.477" y2="27.94" width="0.508" layer="21"/>
<wire x1="3.683" y1="27.94" x2="3.937" y2="27.94" width="0.508" layer="21"/>
<wire x1="29.21" y1="27.94" x2="30.48" y2="29.21" width="0.508" layer="21" curve="90"/>
<wire x1="31.115" y1="22.225" x2="47.625" y2="22.225" width="0.508" layer="21" style="shortdash"/>
<wire x1="30.988" y1="22.225" x2="47.498" y2="22.225" width="0.508" layer="22" style="shortdash"/>
<text x="37.592" y="15.748" size="1.016" layer="21" font="vector" ratio="12" rot="SR0" align="center">+3V3</text>
<text x="31.496" y="17.78" size="1.016" layer="21" font="vector" ratio="12" align="center-right">GND</text>
<text x="40.64" y="16.256" size="1.016" layer="21" font="vector" ratio="12" rot="SR270" align="center-left">TX</text>
<text x="43.18" y="16.256" size="1.016" layer="21" font="vector" ratio="12" rot="SR270" align="center-left">RX</text>
<text x="31.496" y="26.67" size="1.016" layer="21" font="vector" ratio="12" align="center-right">GND</text>
<text x="37.338" y="28.702" size="1.016" layer="21" font="vector" ratio="12" rot="SR0" align="center">+3V3</text>
<text x="40.64" y="28.702" size="1.016" layer="21" font="vector" ratio="12" rot="SR0" align="center">TX</text>
<text x="43.18" y="28.702" size="1.016" layer="21" font="vector" ratio="12" rot="SR0" align="center">RX</text>
<text x="33.02" y="8.636" size="1.016" layer="22" font="vector" ratio="12" rot="MR0" align="center">ISP
3v3</text>
<text x="18.288" y="48.26" size="1.016" layer="22" font="vector" ratio="12" rot="MR0" align="center">github.com/JustgeekDE/ESP8266-devBoard</text>
<text x="43.434" y="41.656" size="1.016" layer="21" font="vector" ratio="12" rot="SR0" align="center">FLASH</text>
<text x="34.29" y="47.498" size="1.016" layer="22" font="vector" ratio="12" rot="MR270" align="top-left">ESP 8266
dev board
v0.1</text>
</plain>
<libraries>
<library name="rcl">
<packages>
<package name="C025-025X050">
<description>CAPACITOR

grid 2.5 mm, outline 2.5 x 5 mm</description>
<wire x1="-2.159" y1="1.27" x2="2.159" y2="1.27" width="0.1524" layer="21"/>
<wire x1="2.159" y1="-1.27" x2="-2.159" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="2.413" y1="1.016" x2="2.413" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="-2.413" y1="1.016" x2="-2.413" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="2.159" y1="1.27" x2="2.413" y2="1.016" width="0.1524" layer="21" curve="-90"/>
<wire x1="-2.413" y1="1.016" x2="-2.159" y2="1.27" width="0.1524" layer="21" curve="-90"/>
<wire x1="2.159" y1="-1.27" x2="2.413" y2="-1.016" width="0.1524" layer="21" curve="90"/>
<wire x1="-2.413" y1="-1.016" x2="-2.159" y2="-1.27" width="0.1524" layer="21" curve="90"/>
<wire x1="0.762" y1="0" x2="0.381" y2="0" width="0.1524" layer="51"/>
<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
<text x="-2.286" y="1.524" size="1.27" layer="25" ratio="10">>NAME</text>
<text x="-2.286" y="-2.794" size="1.27" layer="27" ratio="10">>VALUE</text>
</package>
<package name="0204/7">
<description>RESISTOR

type 0204, grid 7.5 mm</description>
<wire x1="3.81" y1="0" x2="2.921" y2="0" width="0.508" layer="51"/>
<wire x1="-3.81" y1="0" x2="-2.921" y2="0" width="0.508" layer="51"/>
<wire x1="-2.54" y1="0.762" x2="-2.286" y2="1.016" width="0.1524" layer="21" curve="-90"/>
<wire x1="-2.54" y1="-0.762" x2="-2.286" y2="-1.016" width="0.1524" layer="21" curve="90"/>
<wire x1="2.286" y1="-1.016" x2="2.54" y2="-0.762" width="0.1524" layer="21" curve="90"/>
<wire x1="2.286" y1="1.016" x2="2.54" y2="0.762" width="0.1524" layer="21" curve="-90"/>
<wire x1="-2.54" y1="-0.762" x2="-2.54" y2="0.762" width="0.1524" layer="21"/>
<wire x1="-2.286" y1="1.016" x2="-1.905" y2="1.016" width="0.1524" layer="21"/>
<wire x1="-1.778" y1="0.889" x2="-1.905" y2="1.016" width="0.1524" layer="21"/>
<wire x1="-2.286" y1="-1.016" x2="-1.905" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="-1.778" y1="-0.889" x2="-1.905" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="1.778" y1="0.889" x2="1.905" y2="1.016" width="0.1524" layer="21"/>
<wire x1="1.778" y1="0.889" x2="-1.778" y2="0.889" width="0.1524" layer="21"/>
<wire x1="1.778" y1="-0.889" x2="1.905" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="1.778" y1="-0.889" x2="-1.778" y2="-0.889" width="0.1524" layer="21"/>
<wire x1="2.286" y1="1.016" x2="1.905" y2="1.016" width="0.1524" layer="21"/>
<wire x1="2.286" y1="-1.016" x2="1.905" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-0.762" x2="2.54" y2="0.762" width="0.1524" layer="21"/>
<pad name="1" x="-3.81" y="0" drill="0.8128" shape="octagon"/>
<pad name="2" x="3.81" y="0" drill="0.8128" shape="octagon"/>
<text x="-2.54" y="1.2954" size="0.9906" layer="25" ratio="10">>NAME</text>
<text x="-1.6256" y="-0.4826" size="0.9906" layer="27" ratio="10">>VALUE</text>
<rectangle x1="2.54" y1="-0.254" x2="2.921" y2="0.254" layer="21"/>
<rectangle x1="-2.921" y1="-0.254" x2="-2.54" y2="0.254" layer="21"/>
</package>
</packages>
</library>
<library name="SparkFun">
<packages>
<package name="2X3">
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="1.905" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="3.81" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="4.445" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="6.35" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-1.27" y2="3.175" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="3.175" x2="-0.635" y2="3.81" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="3.81" x2="0.635" y2="3.81" width="0.2032" layer="21"/>
<wire x1="0.635" y1="3.81" x2="1.27" y2="3.175" width="0.2032" layer="21"/>
<wire x1="1.27" y1="3.175" x2="1.905" y2="3.81" width="0.2032" layer="21"/>
<wire x1="1.905" y1="3.81" x2="3.175" y2="3.81" width="0.2032" layer="21"/>
<wire x1="3.175" y1="3.81" x2="3.81" y2="3.175" width="0.2032" layer="21"/>
<wire x1="3.81" y1="3.175" x2="4.445" y2="3.81" width="0.2032" layer="21"/>
<wire x1="4.445" y1="3.81" x2="5.715" y2="3.81" width="0.2032" layer="21"/>
<wire x1="5.715" y1="3.81" x2="6.35" y2="3.175" width="0.2032" layer="21"/>
<wire x1="1.27" y1="3.175" x2="1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="3.175" x2="3.81" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="6.35" y1="3.175" x2="6.35" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="5.715" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="3.175" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="-1.605" x2="-0.635" y2="-1.605" width="0.2032" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796" shape="octagon"/>
<pad name="2" x="0" y="2.54" drill="1.016" diameter="1.8796" shape="octagon"/>
<pad name="3" x="2.54" y="0" drill="1.016" diameter="1.8796" shape="octagon"/>
<pad name="4" x="2.54" y="2.54" drill="1.016" diameter="1.8796" shape="octagon"/>
<pad name="5" x="5.08" y="0" drill="1.016" diameter="1.8796" shape="octagon"/>
<pad name="6" x="5.08" y="2.54" drill="1.016" diameter="1.8796" shape="octagon"/>
<text x="-1.27" y="4.445" size="1.27" layer="25" ratio="10">>NAME</text>
<text x="-1.27" y="-3.175" size="1.27" layer="27">>VALUE</text>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="2.286" x2="0.254" y2="2.794" layer="51"/>
<rectangle x1="2.286" y1="2.286" x2="2.794" y2="2.794" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="2.286" x2="5.334" y2="2.794" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
</package>
<package name="DIP08">
<description>Dual In Line</description>
<wire x1="-5.08" y1="2.54" x2="5.08" y2="2.54" width="0.2032" layer="21"/>
<wire x1="-5.08" y1="2.54" x2="-5.08" y2="-1.524" width="0.2032" layer="21"/>
<wire x1="5.08" y1="2.54" x2="5.08" y2="-2.54" width="0.2032" layer="21"/>
<wire x1="-5.08" y1="-2.54" x2="5.08" y2="-2.54" width="0.2032" layer="21"/>
<wire x1="-5.08" y1="-2.54" x2="-5.08" y2="-1.524" width="0.2032" layer="21"/>
<wire x1="-5.08" y1="-1.524" x2="-5.08" y2="-1.016" width="0.2032" layer="21"/>
<circle x="-3.81" y="-1.27" radius="0.7184" width="0.254" layer="21"/>
<pad name="1" x="-3.81" y="-3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<pad name="2" x="-1.27" y="-3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<pad name="3" x="1.27" y="-3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<pad name="4" x="3.81" y="-3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<pad name="5" x="3.81" y="3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<pad name="6" x="1.27" y="3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<pad name="7" x="-1.27" y="3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<pad name="8" x="-3.81" y="3.81" drill="0.8128" diameter="1.6002" shape="octagon"/>
<text x="-3.175" y="-0.635" size="1.27" layer="27" ratio="10">>VALUE</text>
<text x="-5.715" y="-3.81" size="1.27" layer="25" ratio="10" rot="R90">>NAME</text>
</package>
</packages>
</library>
<library name="led">
<packages>
<package name="LED3MM">
<description>LED

3 mm, round</description>
<wire x1="1.5748" y1="-1.27" x2="1.5748" y2="1.27" width="0.254" layer="51"/>
<wire x1="-1.524" y1="0" x2="-1.1708" y2="0.9756" width="0.1524" layer="51" curve="-39.80361"/>
<wire x1="-1.524" y1="0" x2="-1.1391" y2="-1.0125" width="0.1524" layer="51" curve="41.633208"/>
<wire x1="1.1571" y1="0.9918" x2="1.524" y2="0" width="0.1524" layer="51" curve="-40.601165"/>
<wire x1="1.1708" y1="-0.9756" x2="1.524" y2="0" width="0.1524" layer="51" curve="39.80361"/>
<wire x1="0" y1="1.524" x2="1.2401" y2="0.8858" width="0.1524" layer="21" curve="-54.461337"/>
<wire x1="-1.2192" y1="0.9144" x2="0" y2="1.524" width="0.1524" layer="21" curve="-53.130102"/>
<wire x1="0" y1="-1.524" x2="1.203" y2="-0.9356" width="0.1524" layer="21" curve="52.126876"/>
<wire x1="-1.203" y1="-0.9356" x2="0" y2="-1.524" width="0.1524" layer="21" curve="52.126876"/>
<wire x1="-0.635" y1="0" x2="0" y2="0.635" width="0.1524" layer="51" curve="-90"/>
<wire x1="-1.016" y1="0" x2="0" y2="1.016" width="0.1524" layer="51" curve="-90"/>
<wire x1="0" y1="-0.635" x2="0.635" y2="0" width="0.1524" layer="51" curve="90"/>
<wire x1="0" y1="-1.016" x2="1.016" y2="0" width="0.1524" layer="51" curve="90"/>
<wire x1="0" y1="2.032" x2="1.561" y2="1.3009" width="0.254" layer="21" curve="-50.193108"/>
<wire x1="-1.7929" y1="0.9562" x2="0" y2="2.032" width="0.254" layer="21" curve="-61.926949"/>
<wire x1="0" y1="-2.032" x2="1.5512" y2="-1.3126" width="0.254" layer="21" curve="49.763022"/>
<wire x1="-1.7643" y1="-1.0082" x2="0" y2="-2.032" width="0.254" layer="21" curve="60.255215"/>
<wire x1="-2.032" y1="0" x2="-1.7891" y2="0.9634" width="0.254" layer="51" curve="-28.301701"/>
<wire x1="-2.032" y1="0" x2="-1.7306" y2="-1.065" width="0.254" layer="51" curve="31.60822"/>
<pad name="A" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
<pad name="K" x="1.27" y="0" drill="0.8128" shape="octagon"/>
<text x="1.905" y="0.381" size="1.27" layer="25" ratio="10">>NAME</text>
<text x="1.905" y="-1.651" size="1.27" layer="27" ratio="10">>VALUE</text>
</package>
</packages>
</library>
<library name="p.peter-passives">
<packages>
<package name="SWITCH-GENERIC-4_PIN">
<pad name="P$1" x="2.25" y="3.25" drill="1" shape="octagon"/>
<pad name="P$3" x="-2.25" y="3.25" drill="1" shape="octagon"/>
<pad name="P$4" x="-2.25" y="-3.25" drill="1" shape="octagon"/>
<pad name="P$2" x="2.25" y="-3.25" drill="1" shape="octagon"/>
<wire x1="3" y1="3" x2="0" y2="3" width="0.06" layer="51"/>
<wire x1="0" y1="3" x2="-3" y2="3" width="0.06" layer="51"/>
<wire x1="-3" y1="3" x2="-3" y2="-3" width="0.06" layer="51"/>
<wire x1="-3" y1="-3" x2="0" y2="-3" width="0.06" layer="51"/>
<wire x1="0" y1="-3" x2="3" y2="-3" width="0.06" layer="51"/>
<wire x1="3" y1="-3" x2="3" y2="3" width="0.06" layer="51"/>
<wire x1="2.5" y1="2" x2="2.5" y2="0" width="0.06" layer="51"/>
<wire x1="2.5" y1="0" x2="2.5" y2="-2" width="0.06" layer="51"/>
<wire x1="-2.5" y1="2" x2="-2.5" y2="0" width="0.06" layer="51"/>
<wire x1="-2.5" y1="0" x2="-2.5" y2="-2" width="0.06" layer="51"/>
<wire x1="-2.5" y1="0" x2="-1" y2="0" width="0.06" layer="51"/>
<wire x1="-1" y1="0" x2="1" y2="0.5" width="0.06" layer="51"/>
<wire x1="2.5" y1="0" x2="1" y2="0" width="0.06" layer="51"/>
<wire x1="0" y1="0.5" x2="0" y2="1.2" width="0.06" layer="51" style="shortdash"/>
<wire x1="0.5" y1="1.2" x2="0" y2="1.2" width="0.06" layer="51"/>
<circle x="1" y="0" radius="0.1" width="0.06" layer="51"/>
<circle x="-1" y="0" radius="0.1" width="0.06" layer="51"/>
<circle x="2.5" y="2" radius="0.1" width="0.06" layer="51"/>
<circle x="2.5" y="-2" radius="0.1" width="0.06" layer="51"/>
<circle x="-2.5" y="-2" radius="0.1" width="0.06" layer="51"/>
<circle x="-2.5" y="2" radius="0.1" width="0.06" layer="51"/>
<wire x1="0" y1="1.2" x2="-0.5" y2="1.2" width="0.06" layer="51"/>
<wire x1="-0.5" y1="1.2" x2="-0.5" y2="1" width="0.06" layer="51"/>
<wire x1="0.5" y1="1.2" x2="0.5" y2="1" width="0.06" layer="51"/>
<circle x="-2.5" y="2" radius="0.05" width="0.06" layer="51"/>
<circle x="-2.5" y="-2" radius="0.05" width="0.06" layer="51"/>
<circle x="-1" y="0" radius="0.05" width="0.06" layer="51"/>
<circle x="1" y="0" radius="0.05" width="0.06" layer="51"/>
<circle x="2.5" y="2" radius="0.05" width="0.06" layer="51"/>
<circle x="2.5" y="-2" radius="0.05" width="0.06" layer="51"/>
<wire x1="-3" y1="2.6" x2="-3" y2="-2.5" width="0.16" layer="21"/>
<wire x1="-1.2" y1="-3" x2="1.2" y2="-3" width="0.16" layer="21"/>
<wire x1="3" y1="-2.5" x2="3" y2="2.5" width="0.16" layer="21"/>
<wire x1="1.2" y1="3" x2="-1.2" y2="3" width="0.16" layer="21"/>
<text x="-3.5" y="-2.5" size="0.7" layer="25" font="vector" ratio="12" rot="R90">>NAME</text>
</package>
</packages>
</library>
<library name="p.peter-connectors">
<packages>
<package name="PN61729-S">
<description>USB connector with shield
</description>
<wire x1="-5.9" y1="5.6" x2="-5.9" y2="-10.15" width="0.254" layer="51"/>
<wire x1="-5.9" y1="-10.15" x2="5.9" y2="-10.15" width="0.254" layer="21"/>
<wire x1="5.9" y1="-10.15" x2="5.9" y2="5.6" width="0.254" layer="51"/>
<wire x1="5.9" y1="5.6" x2="-5.9" y2="5.6" width="0.254" layer="21"/>
<wire x1="-5.9" y1="-2.02" x2="-5.9" y2="-10.15" width="0.254" layer="21"/>
<wire x1="5.9" y1="1.915" x2="5.9" y2="5.6" width="0.254" layer="21"/>
<wire x1="-5.9" y1="5.6" x2="-5.9" y2="1.915" width="0.254" layer="21"/>
<wire x1="5.9" y1="-10.15" x2="5.9" y2="-2.02" width="0.254" layer="21"/>
<pad name="1" x="1.25" y="4.71" drill="0.95" shape="octagon"/>
<pad name="2" x="-1.25" y="4.71" drill="0.95" shape="octagon"/>
<pad name="3" x="-1.25" y="2.71" drill="0.95" shape="octagon"/>
<pad name="4" x="1.25" y="2.71" drill="0.95" shape="octagon"/>
<pad name="S1" x="-6.02" y="0" drill="2.3" diameter="2.9"/>
<pad name="S2" x="6.02" y="0" drill="2.3" diameter="2.9"/>
<text x="-6.35" y="6.35" size="1.27" layer="25">>NAME</text>
<text x="7.62" y="-8.89" size="1.27" layer="27" rot="R90">>VALUE</text>
</package>
<package name="PINHEADER-100MIL-1X8-NOSILK">
<pad name="1" x="-8.89" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-6.35" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="-3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="-1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<text x="-10.2362" y="1.8288" size="1.27" layer="25" ratio="10">>NAME</text>
<pad name="7" x="6.35" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="8" x="8.89" y="0" drill="1.016" shape="long" rot="R90"/>
</package>
<package name="PINHEADER-100MIL-1X11-NOSILK">
<pad name="1" x="-12.7" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-10.16" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="-7.62" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="-5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="-2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<text x="-14.0462" y="1.8288" size="1.27" layer="25" ratio="10">>NAME</text>
<pad name="7" x="2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="8" x="5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="9" x="7.62" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="10" x="10.16" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="11" x="12.7" y="0" drill="1.016" shape="long" rot="R90"/>
</package>
<package name="PINHEADER-100MIL-1X7-NOSILK">
<pad name="1" x="-7.62" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="-2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="0" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="2.54" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="5.08" y="0" drill="1.016" shape="long" rot="R90"/>
<text x="-8.9662" y="1.8288" size="1.27" layer="25" ratio="10">>NAME</text>
<pad name="7" x="7.62" y="0" drill="1.016" shape="long" rot="R90"/>
</package>
<package name="PINHEADER-100MIL-1X6">
<description>PIN HEADER</description>
<wire x1="0.635" y1="1.27" x2="1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="1.27" x2="2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="2.54" y1="0.635" x2="2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="2.54" y1="-0.635" x2="1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="2.54" y1="0.635" x2="3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="1.27" x2="4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.08" y2="0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="0.635" x2="5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="-0.635" x2="4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="0.635" x2="-1.905" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-1.905" y1="1.27" x2="-0.635" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0" y2="0.635" width="0.1524" layer="21"/>
<wire x1="0" y1="0.635" x2="0" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="0" y1="-0.635" x2="-0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="-1.905" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-1.905" y1="-1.27" x2="-2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="0.635" y1="1.27" x2="0" y2="0.635" width="0.1524" layer="21"/>
<wire x1="0" y1="-0.635" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="0.635" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-6.985" y1="1.27" x2="-5.715" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-5.715" y1="1.27" x2="-5.08" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="0.635" x2="-5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="-0.635" x2="-5.715" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-5.08" y1="0.635" x2="-4.445" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-4.445" y1="1.27" x2="-3.175" y2="1.27" width="0.1524" layer="21"/>
<wire x1="-3.175" y1="1.27" x2="-2.54" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="0.635" x2="-2.54" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-2.54" y1="-0.635" x2="-3.175" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-3.175" y1="-1.27" x2="-4.445" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-4.445" y1="-1.27" x2="-5.08" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-7.62" y1="0.635" x2="-7.62" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="-6.985" y1="1.27" x2="-7.62" y2="0.635" width="0.1524" layer="21"/>
<wire x1="-7.62" y1="-0.635" x2="-6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="-5.715" y1="-1.27" x2="-6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.985" y2="1.27" width="0.1524" layer="21"/>
<wire x1="6.985" y1="1.27" x2="7.62" y2="0.635" width="0.1524" layer="21"/>
<wire x1="7.62" y1="0.635" x2="7.62" y2="-0.635" width="0.1524" layer="21"/>
<wire x1="7.62" y1="-0.635" x2="6.985" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="5.715" y1="1.27" x2="5.08" y2="0.635" width="0.1524" layer="21"/>
<wire x1="5.08" y1="-0.635" x2="5.715" y2="-1.27" width="0.1524" layer="21"/>
<wire x1="6.985" y1="-1.27" x2="5.715" y2="-1.27" width="0.1524" layer="21"/>
<pad name="1" x="-6.35" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="-3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="-1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="4" x="1.27" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="5" x="3.81" y="0" drill="1.016" shape="long" rot="R90"/>
<pad name="6" x="6.35" y="0" drill="1.016" shape="long" rot="R90"/>
<text x="-7.6962" y="1.8288" size="1.27" layer="25" ratio="10">>NAME</text>
<text x="-7.62" y="-3.175" size="1.27" layer="27">>VALUE</text>
<rectangle x1="3.556" y1="-0.254" x2="4.064" y2="0.254" layer="51"/>
<rectangle x1="1.016" y1="-0.254" x2="1.524" y2="0.254" layer="51"/>
<rectangle x1="-1.524" y1="-0.254" x2="-1.016" y2="0.254" layer="51"/>
<rectangle x1="-4.064" y1="-0.254" x2="-3.556" y2="0.254" layer="51"/>
<rectangle x1="-6.604" y1="-0.254" x2="-6.096" y2="0.254" layer="51"/>
<rectangle x1="6.096" y1="-0.254" x2="6.604" y2="0.254" layer="51"/>
</package>
</packages>
</library>
<library name="jumper">
<description>Jumpers

<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="SJ">
<description>Solder jumper</description>
<wire x1="1.397" y1="-1.016" x2="-1.397" y2="-1.016" width="0.1524" layer="21"/>
<wire x1="1.397" y1="1.016" x2="1.651" y2="0.762" width="0.1524" layer="21" curve="-90"/>
<wire x1="-1.651" y1="0.762" x2="-1.397" y2="1.016" width="0.1524" layer="21" curve="-90"/>
<wire x1="-1.651" y1="-0.762" x2="-1.397" y2="-1.016" width="0.1524" layer="21" curve="90"/>
<wire x1="1.397" y1="-1.016" x2="1.651" y2="-0.762" width="0.1524" layer="21" curve="90"/>
<wire x1="1.651" y1="-0.762" x2="1.651" y2="0.762" width="0.1524" layer="21"/>
<wire x1="-1.651" y1="-0.762" x2="-1.651" y2="0.762" width="0.1524" layer="21"/>
<wire x1="-1.397" y1="1.016" x2="1.397" y2="1.016" width="0.1524" layer="21"/>
<wire x1="1.016" y1="0" x2="1.524" y2="0" width="0.1524" layer="51"/>
<wire x1="-1.016" y1="0" x2="-1.524" y2="0" width="0.1524" layer="51"/>
<wire x1="-0.254" y1="-0.127" x2="-0.254" y2="0.127" width="1.27" layer="51" curve="-180" cap="flat"/>
<wire x1="0.254" y1="0.127" x2="0.254" y2="-0.127" width="1.27" layer="51" curve="-180" cap="flat"/>
<smd name="1" x="-0.762" y="0" dx="1.1684" dy="1.6002" layer="1"/>
<smd name="2" x="0.762" y="0" dx="1.1684" dy="1.6002" layer="1"/>
<text x="-1.651" y="1.143" size="1.27" layer="25" ratio="10">>NAME</text>
<text x="0.4001" y="0" size="0.02" layer="27">>VALUE</text>
<rectangle x1="-0.0762" y1="-0.9144" x2="0.0762" y2="0.9144" layer="29"/>
</package>
</packages>
</library>
<library name="p.peter-periphery">
<packages>
<package name="ESP8266-ESP-01-NOSILK">
<wire x1="-2.8" y1="7.15" x2="22" y2="7.15" width="0.127" layer="48"/>
<wire x1="-2.8" y1="-7.15" x2="22" y2="-7.15" width="0.127" layer="48"/>
<pad name="GPIO2" x="1.27" y="1.27" drill="0.9"/>
<pad name="H_PD" x="-1.27" y="1.27" drill="0.9"/>
<pad name="GPIO16" x="-1.27" y="-1.27" drill="0.9"/>
<pad name="GPIO0" x="1.27" y="-1.27" drill="0.9"/>
<pad name="VCC" x="-1.27" y="-3.81" drill="0.9"/>
<pad name="RX" x="1.27" y="-3.81" drill="0.9"/>
<pad name="TX" x="-1.27" y="3.81" drill="0.9"/>
<pad name="GND" x="1.27" y="3.81" drill="0.9" shape="square"/>
<wire x1="-2.8" y1="-7.15" x2="-2.8" y2="7.15" width="0.127" layer="48"/>
<wire x1="22" y1="-7.15" x2="22" y2="7.15" width="0.127" layer="48"/>
<wire x1="20" y1="-4" x2="20" y2="-1" width="0.6" layer="48"/>
<wire x1="20" y1="-1" x2="16" y2="-1" width="0.6" layer="48"/>
<wire x1="16" y1="-1" x2="16" y2="0" width="0.6" layer="48"/>
<wire x1="16" y1="0" x2="20" y2="0" width="0.6" layer="48"/>
<wire x1="20" y1="0" x2="20" y2="1" width="0.6" layer="48"/>
<wire x1="20" y1="1" x2="16" y2="1" width="0.6" layer="48"/>
<wire x1="16" y1="1" x2="16" y2="2" width="0.6" layer="48"/>
<wire x1="16" y1="2" x2="20" y2="2" width="0.6" layer="48"/>
<wire x1="20" y1="2" x2="20" y2="3" width="0.6" layer="48"/>
<wire x1="20" y1="3" x2="16" y2="3" width="0.6" layer="48"/>
<wire x1="16" y1="3" x2="16" y2="4" width="0.6" layer="48"/>
<wire x1="16" y1="4" x2="20" y2="4" width="0.6" layer="48"/>
<wire x1="20" y1="4" x2="20" y2="5" width="0.6" layer="48"/>
<wire x1="20" y1="5" x2="11" y2="5" width="0.6" layer="48"/>
<text x="-2" y="6" size="0.8" layer="25" font="vector" ratio="12" align="center-left">>NAME</text>
<text x="4" y="0" size="0.8" layer="27" font="vector" ratio="12" rot="SR270" align="center">>VALUE</text>
<wire x1="-2.54" y1="4.572" x2="-2.54" y2="-4.572" width="0.127" layer="21"/>
<wire x1="-2.032" y1="-5.08" x2="2.032" y2="-5.08" width="0.127" layer="21"/>
<wire x1="2.54" y1="-4.572" x2="2.54" y2="4.572" width="0.127" layer="21"/>
<wire x1="2.032" y1="5.08" x2="-2.032" y2="5.08" width="0.127" layer="21"/>
<wire x1="-2.032" y1="5.08" x2="-2.54" y2="4.572" width="0.127" layer="21" curve="90"/>
<wire x1="2.032" y1="5.08" x2="2.54" y2="4.572" width="0.127" layer="21" curve="-90"/>
<wire x1="-2.54" y1="-4.572" x2="-2.032" y2="-5.08" width="0.127" layer="21" curve="90"/>
<wire x1="2.032" y1="-5.08" x2="2.54" y2="-4.572" width="0.127" layer="21" curve="90"/>
</package>
</packages>
</library>
<library name="holes">
<description>Mounting Holes and Pads

<author>Created by librarian@cadsoft.de</author></description>
<packages>
<package name="3,2">
<description>MOUNTING HOLE 3.2 mm with drill center</description>
<wire x1="-2.159" y1="0" x2="0" y2="-2.159" width="2.4892" layer="51" curve="90" cap="flat"/>
<wire x1="0" y1="2.159" x2="2.159" y2="0" width="2.4892" layer="51" curve="-90" cap="flat"/>
<circle x="0" y="0" radius="3.429" width="0.1524" layer="21"/>
<circle x="0" y="0" radius="0.762" width="0.4572" layer="51"/>
<circle x="0" y="0" radius="3.048" width="2.032" layer="39"/>
<circle x="0" y="0" radius="3.048" width="2.032" layer="43"/>
<circle x="0" y="0" radius="3.048" width="2.032" layer="40"/>
<circle x="0" y="0" radius="3.048" width="2.032" layer="41"/>
<circle x="0" y="0" radius="3.048" width="2.032" layer="42"/>
<circle x="0" y="0" radius="1.7" width="0.2032" layer="21"/>
<hole x="0" y="0" drill="3.2"/>
</package>
</packages>
</library>
<library name="p.peter-regulators">
<packages>
<package name="TO220V">
<description>TO 200 vertical</description>
<wire x1="5.08" y1="-1.143" x2="4.953" y2="-4.064" width="0.127" layer="21"/>
<wire x1="4.699" y1="-4.318" x2="4.953" y2="-4.064" width="0.127" layer="21"/>
<wire x1="4.699" y1="-4.318" x2="-4.699" y2="-4.318" width="0.127" layer="21"/>
<wire x1="-4.953" y1="-4.064" x2="-4.699" y2="-4.318" width="0.127" layer="21"/>
<wire x1="-4.953" y1="-4.064" x2="-5.08" y2="-1.143" width="0.127" layer="21"/>
<circle x="-4.4958" y="-3.7084" radius="0.254" width="0.127" layer="21"/>
<pad name="1" x="-2.54" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="2" x="0" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<pad name="3" x="2.54" y="-2.54" drill="1.016" shape="long" rot="R90"/>
<text x="-5.08" y="-6.0452" size="1.27" layer="25" ratio="10">>NAME</text>
<text x="-5.08" y="-7.62" size="1.27" layer="27" ratio="10">>VALUE</text>
<text x="-3.175" y="-3.175" size="1.27" layer="51" ratio="10">1</text>
<text x="-0.635" y="-3.175" size="1.27" layer="51" ratio="10">2</text>
<text x="1.905" y="-3.175" size="1.27" layer="51" ratio="10">3</text>
<rectangle x1="-5.334" y1="-0.762" x2="5.334" y2="0" layer="21"/>
<rectangle x1="-5.334" y1="-1.27" x2="-3.429" y2="-0.762" layer="21"/>
<rectangle x1="-1.651" y1="-1.27" x2="-0.889" y2="-0.762" layer="21"/>
<rectangle x1="-3.429" y1="-1.27" x2="-1.651" y2="-0.762" layer="51"/>
<rectangle x1="0.889" y1="-1.27" x2="1.651" y2="-0.762" layer="21"/>
<rectangle x1="3.429" y1="-1.27" x2="5.334" y2="-0.762" layer="21"/>
<rectangle x1="-0.889" y1="-1.27" x2="0.889" y2="-0.762" layer="51"/>
<rectangle x1="1.651" y1="-1.27" x2="3.429" y2="-0.762" layer="51"/>
</package>
<package name="FUSE-THT-100-MIL">
<pad name="P$1" x="-1.27" y="0" drill="0.8"/>
<pad name="P$2" x="1.27" y="0" drill="0.8"/>
<wire x1="-1.27" y1="0.762" x2="1.27" y2="0.762" width="0.127" layer="21" curve="-73.739761"/>
<wire x1="1.27" y1="-0.762" x2="-1.27" y2="-0.762" width="0.127" layer="21" curve="-73.739761"/>
<text x="0" y="1.778" size="0.8" layer="25" font="vector" ratio="12" align="center">>NAME</text>
<text x="0" y="-1.778" size="0.8" layer="27" font="vector" ratio="12" align="center">>VALUE</text>
</package>
</packages>
</library>
<library name="p.peter-doc">
<packages>
<package name="LOGO-JUSTGEEK-XXXS">
<circle x="0" y="0" radius="1.5" width="0.16" layer="21"/>
<wire x1="0" y1="-0.1" x2="-0.3" y2="-0.1" width="0.16" layer="21"/>
<wire x1="0" y1="-0.1" x2="0.3" y2="-0.1" width="0.16" layer="21"/>
<wire x1="0" y1="-0.1" x2="0" y2="-1.5" width="0.16" layer="21"/>
<wire x1="-1.1" y1="0.3" x2="0" y2="0.3" width="0.16" layer="21"/>
<wire x1="0" y1="0.3" x2="1.1" y2="0.3" width="0.16" layer="21"/>
<wire x1="0" y1="1.5" x2="0" y2="0.3" width="0.16" layer="21"/>
<wire x1="-1.1" y1="-0.1" x2="-0.9" y2="-0.1" width="0.16" layer="21"/>
<wire x1="-0.9" y1="-0.1" x2="-0.7" y2="-0.1" width="0.16" layer="21"/>
<wire x1="0.7" y1="-0.1" x2="0.9" y2="-0.1" width="0.16" layer="21"/>
<wire x1="0.9" y1="-0.1" x2="1.1" y2="-0.1" width="0.16" layer="21"/>
<wire x1="-0.9" y1="-0.1" x2="-1.1" y2="-1" width="0.16" layer="21"/>
<wire x1="0.9" y1="-0.1" x2="1.1" y2="-1" width="0.16" layer="21"/>
<polygon width="0.16" layer="21">
<vertex x="0" y="-1.1"/>
<vertex x="-0.3" y="-0.7"/>
<vertex x="0.3" y="-0.7"/>
</polygon>
</package>
</packages>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="Elecrow_2-layer_eagle_rule *">
<description language="de">EAGLE Design Rules

Die Standard-Design-Rules sind so gewählt, dass sie für
die meisten Anwendungen passen. Sollte ihre Platine
besondere Anforderungen haben, treffen Sie die erforderlichen
Einstellungen hier und speichern die Design Rules unter
einem neuen Namen ab.</description>
<description language="en">EAGLE Design Rules

The default Design Rules have been set to cover
a wide range of applications. Your particular design
may have different requirements, so please make the
necessary adjustments and save your customized
design rules under a new name.</description>
<description language="zh">Elecrow EAGLE Design Rules
</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="6mil"/>
<param name="mdWirePad" value="6mil"/>
<param name="mdWireVia" value="6mil"/>
<param name="mdPadPad" value="6mil"/>
<param name="mdPadVia" value="6mil"/>
<param name="mdViaVia" value="6mil"/>
<param name="mdSmdPad" value="0mil"/>
<param name="mdSmdVia" value="0mil"/>
<param name="mdSmdSmd" value="0mil"/>
<param name="mdViaViaSameLayer" value="8mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="10mil"/>
<param name="mdDrill" value="10mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="6mil"/>
<param name="msDrill" value="12mil"/>
<param name="msMicroVia" value="12mil"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.15"/>
<param name="rvPadInner" value="0.15"/>
<param name="rvPadBottom" value="0.15"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="6mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="6mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="2"/>
<param name="psBottom" value="2"/>
<param name="psFirst" value="0"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="2mil"/>
<param name="mlMaxStopFrame" value="2mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="100mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkGrid" value="0"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="0"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="AutoGrid" value="1"/>
<param name="Efforts" value="0"/>
<param name="TopRouterVariant" value="1"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="a"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="a"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
<element name="C1" library="rcl" package="C025-025X050" value="100n" x="33.02" y="13.97" smashed="yes">
<attribute name="NAME" x="29.464" y="14.224" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
<attribute name="VALUE" x="38.354" y="13.97" size="1.27" layer="27" font="vector" ratio="12" align="center"/>
</element>
<element name="C2" library="rcl" package="C025-025X050" value="330n" x="13.97" y="5.08" smashed="yes" rot="R90">
<attribute name="NAME" x="11.684" y="2.032" size="1.016" layer="25" font="vector" ratio="12" rot="R180" align="center"/>
<attribute name="VALUE" x="18.034" y="2.032" size="1.27" layer="27" font="vector" ratio="12" align="center"/>
</element>
<element name="C3" library="rcl" package="C025-025X050" value="100n" x="22.86" y="11.43" smashed="yes">
<attribute name="NAME" x="26.162" y="11.43" size="1.016" layer="25" font="vector" ratio="12" rot="SR270" align="center"/>
<attribute name="VALUE" x="22.86" y="9.144" size="1.27" layer="27" font="vector" ratio="12" align="center"/>
</element>
<element name="ISP" library="SparkFun" package="2X3" value="AVR_SPI_PRG_6PTH" x="44.45" y="6.35" smashed="yes" rot="R90">
<attribute name="NAME" x="47.117" y="8.89" size="1.27" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
</element>
<element name="LED1" library="led" package="LED3MM" value="" x="22.86" y="16.51" smashed="yes" rot="R180">
<attribute name="VALUE" x="20.955" y="18.161" size="1.27" layer="27" ratio="10" rot="R180"/>
</element>
<element name="R1" library="rcl" package="0204/7" value="68" x="15.24" y="13.97" smashed="yes">
<attribute name="NAME" x="10.1346" y="14.224" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
<attribute name="VALUE" x="15.24" y="13.97" size="1.27" layer="27" font="vector" ratio="12" align="center"/>
</element>
<element name="R2" library="rcl" package="0204/7" value="68" x="15.24" y="8.89" smashed="yes">
<attribute name="NAME" x="10.1346" y="8.89" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
<attribute name="VALUE" x="15.24" y="8.89" size="1.27" layer="27" font="vector" ratio="12" align="center"/>
</element>
<element name="R3" library="rcl" package="0204/7" value="1.5k" x="15.24" y="11.43" smashed="yes">
<attribute name="NAME" x="10.1346" y="11.43" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
<attribute name="VALUE" x="15.24" y="11.43" size="1.27" layer="27" font="vector" ratio="12" align="center"/>
</element>
<element name="R5" library="rcl" package="0204/7" value="150" x="15.24" y="16.51" smashed="yes">
<attribute name="NAME" x="10.1346" y="16.51" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
<attribute name="VALUE" x="15.24" y="16.51" size="1.27" layer="27" font="vector" ratio="12" align="center"/>
</element>
<element name="SW1" library="p.peter-passives" package="SWITCH-GENERIC-4_PIN" value="" x="43.18" y="45.72" smashed="yes" rot="R90"/>
<element name="UC" library="SparkFun" package="DIP08" value="ATTINY85" x="33.02" y="7.62" smashed="yes" rot="R270">
<attribute name="VALUE" x="34.29" y="7.62" size="1.27" layer="27" font="vector" ratio="12" rot="R270" align="center"/>
</element>
<element name="SJ1" library="jumper" package="SJ" value="" x="33.02" y="5.08" smashed="yes" rot="MR90">
<attribute name="VALUE" x="33.02" y="5.4801" size="0.02" layer="28" rot="MR90"/>
</element>
<element name="CON1" library="p.peter-connectors" package="PN61729-S" value="USBB-SOCKET" x="3.81" y="10.16" smashed="yes" rot="R270"/>
<element name="RF1" library="p.peter-periphery" package="ESP8266-ESP-01-NOSILK" value="" x="44.45" y="34.29" smashed="yes" rot="R180">
<attribute name="VALUE" x="40.45" y="34.29" size="0.8" layer="27" font="vector" ratio="12" rot="SR90" align="center"/>
</element>
<element name="R4" library="rcl" package="0204/7" value="10k" x="39.37" y="34.29" smashed="yes" rot="R90">
<attribute name="NAME" x="39.3446" y="40.132" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
<attribute name="VALUE" x="39.3446" y="33.6804" size="1.27" layer="27" font="vector" ratio="12" rot="R90" align="center"/>
</element>
<element name="R6" library="rcl" package="0204/7" value="10k" x="36.83" y="34.29" smashed="yes" rot="R90">
<attribute name="NAME" x="36.8046" y="40.132" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
<attribute name="VALUE" x="36.8046" y="33.6804" size="1.27" layer="27" font="vector" ratio="12" rot="R90" align="center"/>
</element>
<element name="H1" library="holes" package="3,2" value="MOUNT-HOLE3.2" x="5.08" y="44.45"/>
<element name="IC2" library="p.peter-regulators" package="TO220V" value="3V3" x="21.59" y="7.62" smashed="yes"/>
<element name="F1" library="p.peter-regulators" package="FUSE-THT-100-MIL" value="500m" x="11.43" y="5.08" smashed="yes" rot="R90">
<attribute name="NAME" x="9.144" y="3.048" size="1.016" layer="25" font="vector" ratio="12" rot="R90" align="center"/>
</element>
<element name="CON2" library="p.peter-connectors" package="PINHEADER-100MIL-1X8-NOSILK" value="" x="19.05" y="45.72" smashed="yes"/>
<element name="CON4" library="p.peter-connectors" package="PINHEADER-100MIL-1X8-NOSILK" value="" x="19.05" y="40.64" smashed="yes"/>
<element name="CON5" library="p.peter-connectors" package="PINHEADER-100MIL-1X11-NOSILK" value="" x="15.24" y="27.94" smashed="yes"/>
<element name="CON6" library="p.peter-connectors" package="PINHEADER-100MIL-1X11-NOSILK" value="" x="15.24" y="35.56" smashed="yes"/>
<element name="CON7" library="p.peter-connectors" package="PINHEADER-100MIL-1X11-NOSILK" value="" x="15.24" y="33.02" smashed="yes"/>
<element name="CON8" library="p.peter-connectors" package="PINHEADER-100MIL-1X11-NOSILK" value="" x="15.24" y="30.48" smashed="yes"/>
<element name="CON9" library="p.peter-connectors" package="PINHEADER-100MIL-1X11-NOSILK" value="" x="15.24" y="38.1" smashed="yes"/>
<element name="ESP-UART" library="p.peter-connectors" package="PINHEADER-100MIL-1X6" value="" x="39.37" y="26.67" smashed="yes">
<attribute name="VALUE" x="31.75" y="23.495" size="1.27" layer="27"/>
</element>
<element name="AVR-UART" library="p.peter-connectors" package="PINHEADER-100MIL-1X6" value="" x="39.37" y="17.78" smashed="yes">
<attribute name="VALUE" x="31.75" y="14.605" size="1.27" layer="27"/>
</element>
<element name="CON10" library="p.peter-connectors" package="PINHEADER-100MIL-1X7-NOSILK" value="" x="30.48" y="38.1" smashed="yes" rot="R270"/>
<element name="CON3" library="p.peter-connectors" package="PINHEADER-100MIL-1X8-NOSILK" value="" x="19.05" y="43.18" smashed="yes"/>
<element name="U$3" library="p.peter-doc" package="LOGO-JUSTGEEK-XXXS" value="" x="33.528" y="44.704" rot="MR90"/>
</elements>
<signals>
<signal name="GND">
<contactref element="ISP" pad="6"/>
<contactref element="C1" pad="1"/>
<contactref element="UC" pad="4"/>
<contactref element="C3" pad="1"/>
<contactref element="C2" pad="1"/>
<contactref element="CON1" pad="4"/>
<contactref element="R5" pad="1"/>
<wire x1="31.75" y1="13.97" x2="31.75" y2="5.08" width="0.508" layer="1"/>
<wire x1="31.75" y1="5.08" x2="30.48" y2="3.81" width="0.508" layer="1"/>
<wire x1="30.48" y1="3.81" x2="29.21" y2="3.81" width="0.508" layer="1"/>
<wire x1="31.75" y1="13.97" x2="33.02" y2="15.24" width="0.508" layer="16"/>
<wire x1="33.02" y1="15.24" x2="41.91" y2="15.24" width="0.508" layer="16"/>
<via x="41.91" y="15.24" extent="1-16" drill="0.508"/>
<wire x1="41.91" y1="15.24" x2="41.91" y2="11.43" width="0.508" layer="1"/>
<wire x1="33.02" y1="26.67" x2="33.02" y2="17.78" width="0.508" layer="1"/>
<contactref element="RF1" pad="GND"/>
<contactref element="SW1" pad="P$4"/>
<contactref element="SW1" pad="P$3"/>
<wire x1="43.18" y1="30.48" x2="43.18" y2="29.464" width="0.508" layer="16"/>
<wire x1="43.18" y1="29.464" x2="42.672" y2="28.956" width="0.508" layer="16"/>
<wire x1="42.672" y1="28.956" x2="33.02" y2="28.956" width="0.508" layer="16"/>
<wire x1="43.18" y1="30.48" x2="43.942" y2="30.48" width="0.508" layer="1"/>
<wire x1="43.942" y1="30.48" x2="44.45" y2="30.988" width="0.508" layer="1"/>
<wire x1="44.45" y1="30.988" x2="44.45" y2="42.164" width="0.508" layer="1"/>
<wire x1="39.93" y1="43.47" x2="39.878" y2="43.434" width="0.508" layer="16"/>
<wire x1="39.878" y1="43.434" x2="43.18" y2="43.434" width="0.508" layer="16"/>
<wire x1="43.18" y1="43.434" x2="44.45" y2="43.434" width="0.508" layer="16"/>
<wire x1="44.45" y1="43.434" x2="46.482" y2="43.434" width="0.508" layer="16"/>
<wire x1="46.482" y1="43.434" x2="46.43" y2="43.47" width="0.508" layer="16"/>
<contactref element="IC2" pad="2"/>
<wire x1="13.97" y1="3.81" x2="14.224" y2="3.556" width="0.508" layer="1"/>
<wire x1="14.224" y1="3.556" x2="21.082" y2="3.556" width="0.508" layer="1"/>
<wire x1="21.082" y1="3.556" x2="21.59" y2="4.064" width="0.508" layer="1"/>
<wire x1="21.59" y1="4.064" x2="21.59" y2="5.08" width="0.508" layer="1"/>
<wire x1="11.43" y1="16.51" x2="8.128" y2="16.51" width="0.508" layer="1"/>
<wire x1="21.844" y1="13.97" x2="31.75" y2="13.97" width="0.508" layer="16"/>
<wire x1="21.59" y1="5.08" x2="21.59" y2="11.43" width="0.508" layer="1"/>
<wire x1="21.59" y1="11.43" x2="21.59" y2="13.716" width="0.508" layer="1"/>
<via x="21.59" y="13.716" extent="1-16" drill="0.508"/>
<wire x1="21.59" y1="13.716" x2="21.844" y2="13.97" width="0.508" layer="16"/>
<wire x1="13.97" y1="3.81" x2="13.97" y2="2.54" width="0.508" layer="1"/>
<wire x1="13.97" y1="2.54" x2="13.462" y2="2.032" width="0.508" layer="1"/>
<wire x1="13.462" y1="2.032" x2="7.874" y2="2.032" width="0.508" layer="1"/>
<wire x1="7.874" y1="2.032" x2="6.604" y2="3.302" width="0.508" layer="1"/>
<wire x1="6.604" y1="3.302" x2="6.604" y2="8.89" width="0.508" layer="1"/>
<wire x1="6.604" y1="8.89" x2="6.52" y2="8.91" width="0.508" layer="1"/>
<wire x1="8.128" y1="16.51" x2="4.826" y2="13.208" width="0.508" layer="1"/>
<wire x1="4.826" y1="13.208" x2="4.826" y2="9.906" width="0.508" layer="1"/>
<wire x1="4.826" y1="9.906" x2="5.842" y2="8.89" width="0.508" layer="1"/>
<wire x1="5.842" y1="8.89" x2="6.604" y2="8.89" width="0.508" layer="1"/>
<wire x1="6.604" y1="8.89" x2="6.52" y2="8.91" width="0.508" layer="1"/>
<contactref element="AVR-UART" pad="1"/>
<contactref element="ESP-UART" pad="1"/>
<wire x1="33.02" y1="28.956" x2="33.02" y2="26.67" width="0.508" layer="16"/>
<wire x1="33.02" y1="15.24" x2="33.02" y2="17.78" width="0.508" layer="16"/>
<contactref element="CON10" pad="7"/>
<contactref element="CON5" pad="4"/>
<contactref element="CON5" pad="5"/>
<contactref element="CON5" pad="6"/>
<contactref element="CON5" pad="7"/>
<contactref element="CON5" pad="8"/>
<contactref element="CON5" pad="9"/>
<contactref element="CON5" pad="10"/>
<contactref element="CON5" pad="11"/>
<contactref element="CON5" pad="1"/>
<contactref element="CON5" pad="2"/>
<contactref element="CON5" pad="3"/>
<wire x1="2.54" y1="27.94" x2="5.08" y2="27.94" width="0.508" layer="1"/>
<wire x1="5.08" y1="27.94" x2="7.62" y2="27.94" width="0.508" layer="1"/>
<wire x1="7.62" y1="27.94" x2="10.16" y2="27.94" width="0.508" layer="1"/>
<wire x1="10.16" y1="27.94" x2="12.7" y2="27.94" width="0.508" layer="1"/>
<wire x1="12.7" y1="27.94" x2="15.24" y2="27.94" width="0.508" layer="1"/>
<wire x1="15.24" y1="27.94" x2="17.78" y2="27.94" width="0.508" layer="1"/>
<wire x1="17.78" y1="27.94" x2="20.32" y2="27.94" width="0.508" layer="1"/>
<wire x1="20.32" y1="27.94" x2="22.86" y2="27.94" width="0.508" layer="1"/>
<wire x1="22.86" y1="27.94" x2="25.4" y2="27.94" width="0.508" layer="1"/>
<wire x1="25.4" y1="27.94" x2="27.94" y2="27.94" width="0.508" layer="1"/>
<wire x1="27.94" y1="27.94" x2="29.718" y2="27.94" width="0.508" layer="1"/>
<wire x1="29.718" y1="27.94" x2="30.


text:
48" y2="28.702" width="0.508" layer="1"/>
<wire x1="30.48" y1="28.702" x2="30.48" y2="30.48" width="0.508" layer="1"/>
<wire x1="33.02" y1="28.956" x2="30.988" y2="28.956" width="0.508" layer="16"/>
<wire x1="30.988" y1="28.956" x2="30.48" y2="29.464" width="0.508" layer="16"/>
<wire x1="30.48" y1="29.464" x2="30.48" y2="30.48" width="0.508" layer="16"/>
<wire x1="44.45" y1="42.164" x2="43.18" y2="43.434" width="0.508" layer="1"/>
<wire x1="43.18" y1="43.434" x2="43.18" y2="45.72" width="0.508" layer="1"/>
<via x="43.18" y="45.72" extent="1-16" drill="0.508"/>
<wire x1="43.18" y1="45.72" x2="43.18" y2="43.434" width="0.508" layer="16"/>
</signal>
<signal name="N$1">
<contactref element="UC" pad="2"/>
<contactref element="R2" pad="2"/>
<wire x1="19.05" y1="8.89" x2="21.59" y2="8.89" width="0.508" layer="16"/>
<wire x1="21.59" y1="8.89" x2="29.21" y2="8.89" width="0.508" layer="16"/>
</signal>
<signal name="N$2">
<contactref element="UC" pad="3"/>
<contactref element="R1" pad="2"/>
<wire x1="19.05" y1="13.97" x2="20.32" y2="12.7" width="0.508" layer="16"/>
<wire x1="20.32" y1="12.7" x2="27.178" y2="12.7" width="0.508" layer="16"/>
<via x="27.178" y="12.7" extent="1-16" drill="0.508"/>
<wire x1="27.178" y1="12.7" x2="27.178" y2="6.858" width="0.508" layer="1"/>
<wire x1="27.178" y1="6.858" x2="27.686" y2="6.35" width="0.508" layer="1"/>
<wire x1="27.686" y1="6.35" x2="29.21" y2="6.35" width="0.508" layer="1"/>
</signal>
<signal name="PIN3">
<contactref element="UC" pad="1"/>
<contactref element="ISP" pad="5"/>
<wire x1="29.21" y1="11.43" x2="30.48" y2="12.7" width="0.4064" layer="16"/>
<wire x1="30.48" y1="12.7" x2="35.56" y2="12.7" width="0.4064" layer="16"/>
<wire x1="35.56" y1="12.7" x2="36.83" y2="13.97" width="0.4064" layer="16"/>
<wire x1="36.83" y1="13.97" x2="43.18" y2="13.97" width="0.4064" layer="16"/>
<wire x1="43.18" y1="13.97" x2="44.45" y2="12.7" width="0.4064" layer="16"/>
<wire x1="44.45" y1="12.7" x2="44.45" y2="11.43" width="0.4064" layer="16"/>
</signal>
<signal name="PIN4">
<contactref element="UC" pad="5"/>
<contactref element="ISP" pad="4"/>
<wire x1="41.91" y1="8.89" x2="38.608" y2="8.89" width="0.2032" layer="16"/>
<wire x1="38.608" y1="8.89" x2="37.338" y2="7.62" width="0.2032" layer="16"/>
<wire x1="37.338" y1="7.62" x2="36.068" y2="7.62" width="0.2032" layer="16"/>
<wire x1="36.068" y1="7.62" x2="35.56" y2="7.112" width="0.2032" layer="16"/>
<wire x1="35.56" y1="7.112" x2="35.56" y2="4.318" width="0.2032" layer="16"/>
<wire x1="35.56" y1="4.318" x2="36.068" y2="3.81" width="0.2032" layer="16"/>
<wire x1="36.068" y1="3.81" x2="36.83" y2="3.81" width="0.2032" layer="16"/>
</signal>
<signal name="VCC_HEADER">
<contactref element="ISP" pad="2"/>
<contactref element="SJ1" pad="1"/>
<wire x1="33.02" y1="4.318" x2="33.02" y2="3.048" width="0.508" layer="16"/>
<wire x1="33.02" y1="3.048" x2="33.782" y2="2.286" width="0.508" layer="16"/>
<wire x1="33.782" y1="2.286" x2="41.148" y2="2.286" width="0.508" layer="16"/>
<wire x1="41.148" y1="2.286" x2="41.91" y2="3.048" width="0.508" layer="16"/>
<wire x1="41.91" y1="3.048" x2="41.91" y2="6.35" width="0.508" layer="16"/>
</signal>
<signal name="D+">
<contactref element="R1" pad="1"/>
<contactref element="CON1" pad="3"/>
<wire x1="11.43" y1="13.97" x2="9.144" y2="13.97" width="0.508" layer="1"/>
<wire x1="9.144" y1="13.97" x2="7.112" y2="11.938" width="0.508" layer="1"/>
<wire x1="7.112" y1="11.938" x2="6.52" y2="11.41" width="0.508" layer="1"/>
</signal>
<signal name="+3V3">
<contactref element="C1" pad="2"/>
<contactref element="UC" pad="8"/>
<contactref element="C3" pad="2"/>
<contactref element="SJ1" pad="2"/>
<contactref element="LED1" pad="A"/>
<wire x1="34.29" y1="15.494" x2="34.29" y2="13.97" width="0.508" layer="1"/>
<wire x1="38.1" y1="16.764" x2="36.83" y2="15.494" width="0.508" layer="1"/>
<wire x1="36.83" y1="15.494" x2="34.29" y2="15.494" width="0.508" layer="1"/>
<wire x1="34.29" y1="13.97" x2="34.29" y2="11.43" width="0.508" layer="1"/>
<wire x1="38.1" y1="17.78" x2="38.1" y2="26.67" width="0.508" layer="1"/>
<wire x1="36.83" y1="11.43" x2="34.29" y2="11.43" width="0.508" layer="1"/>
<wire x1="34.29" y1="11.43" x2="33.02" y2="11.43" width="0.508" layer="1"/>
<via x="33.02" y="11.43" extent="1-16" drill="0.508"/>
<wire x1="33.02" y1="11.43" x2="33.02" y2="5.842" width="0.508" layer="16"/>
<contactref element="RF1" pad="VCC"/>
<contactref element="R4" pad="2"/>
<wire x1="38.1" y1="27.432" x2="38.608" y2="27.94" width="0.508" layer="16"/>
<wire x1="38.608" y1="27.94" x2="47.244" y2="27.94" width="0.508" layer="16"/>
<via x="47.244" y="27.94" extent="1-16" drill="0.508"/>
<wire x1="47.244" y1="27.94" x2="47.244" y2="37.592" width="0.508" layer="1"/>
<wire x1="47.244" y1="37.592" x2="46.736" y2="38.1" width="0.508" layer="1"/>
<wire x1="46.736" y1="38.1" x2="45.72" y2="38.1" width="0.508" layer="1"/>
<wire x1="39.37" y1="38.1" x2="39.37" y2="38.862" width="0.508" layer="16"/>
<wire x1="39.37" y1="38.862" x2="39.878" y2="39.37" width="0.508" layer="16"/>
<wire x1="39.878" y1="39.37" x2="43.18" y2="39.37" width="0.508" layer="16"/>
<wire x1="43.18" y1="39.37" x2="45.212" y2="39.37" width="0.508" layer="16"/>
<wire x1="45.212" y1="39.37" x2="45.72" y2="38.862" width="0.508" layer="16"/>
<wire x1="45.72" y1="38.862" x2="45.72" y2="38.1" width="0.508" layer="16"/>
<contactref element="IC2" pad="3"/>
<wire x1="24.13" y1="5.08" x2="24.13" y2="11.43" width="0.508" layer="1"/>
<wire x1="24.13" y1="16.51" x2="24.384" y2="15.494" width="0.508" layer="1"/>
<wire x1="24.384" y1="15.494" x2="34.29" y2="15.494" width="0.508" layer="1"/>
<wire x1="24.13" y1="16.51" x2="24.13" y2="11.43" width="0.508" layer="1"/>
<contactref element="AVR-UART" pad="3"/>
<contactref element="ESP-UART" pad="3"/>
<wire x1="38.1" y1="27.432" x2="38.1" y2="26.67" width="0.508" layer="16"/>
<wire x1="38.1" y1="16.764" x2="38.1" y2="17.78" width="0.508" layer="1"/>
<contactref element="CON2" pad="7"/>
<contactref element="CON2" pad="8"/>
<contactref element="CON2" pad="6"/>
<contactref element="CON2" pad="2"/>
<contactref element="CON2" pad="1"/>
<contactref element="CON2" pad="5"/>
<contactref element="CON2" pad="4"/>
<contactref element="CON2" pad="3"/>
<contactref element="CON10" pad="1"/>
<wire x1="10.16" y1="45.72" x2="12.7" y2="45.72" width="0.508" layer="1"/>
<wire x1="12.7" y1="45.72" x2="15.24" y2="45.72" width="0.508" layer="1"/>
<wire x1="15.24" y1="45.72" x2="17.78" y2="45.72" width="0.508" layer="1"/>
<wire x1="17.78" y1="45.72" x2="20.32" y2="45.72" width="0.508" layer="1"/>
<wire x1="20.32" y1="45.72" x2="22.86" y2="45.72" width="0.508" layer="1"/>
<wire x1="22.86" y1="45.72" x2="25.4" y2="45.72" width="0.508" layer="1"/>
<wire x1="25.4" y1="45.72" x2="27.94" y2="45.72" width="0.508" layer="1"/>
<wire x1="27.94" y1="45.72" x2="30.48" y2="45.72" width="0.508" layer="1"/>
<wire x1="30.48" y1="45.72" x2="31.242" y2="45.72" width="0.508" layer="16"/>
<wire x1="31.242" y1="45.72" x2="35.052" y2="41.91" width="0.508" layer="16"/>
<wire x1="35.052" y1="41.91" x2="42.418" y2="41.91" width="0.508" layer="16"/>
<wire x1="42.418" y1="41.91" x2="43.18" y2="41.148" width="0.508" layer="16"/>
<wire x1="43.18" y1="41.148" x2="43.18" y2="39.37" width="0.508" layer="16"/>
<contactref element="R3" pad="2"/>
<wire x1="19.05" y1="11.43" x2="20.066" y2="10.414" width="0.508" layer="16"/>
<wire x1="20.066" y1="10.414" x2="20.32" y2="10.16" width="0.508" layer="16"/>
<wire x1="20.32" y1="10.16" x2="20.574" y2="9.906" width="0.508" layer="16"/>
<wire x1="20.574" y1="9.906" x2="23.622" y2="9.906" width="0.508" layer="16"/>
<wire x1="23.622" y1="9.906" x2="24.13" y2="10.414" width="0.508" layer="16"/>
<wire x1="24.13" y1="10.414" x2="24.13" y2="11.176" width="0.508" layer="16"/>
<wire x1="24.13" y1="11.176" x2="24.13" y2="11.43" width="0.508" layer="16"/>
<wire x1="24.13" y1="11.43" x2="24.13" y2="11.176" width="0.508" layer="16"/>
</signal>
<signal name="+5V">
<contactref element="C2" pad="2"/>
<contactref element="IC2" pad="1"/>
<contactref element="F1" pad="P$2"/>
<wire x1="11.43" y1="6.35" x2="13.97" y2="6.35" width="0.508" layer="1"/>
<wire x1="13.97" y1="6.35" x2="15.494" y2="6.35" width="0.508" layer="1"/>
<wire x1="15.494" y1="6.35" x2="16.764" y2="5.08" width="0.508" layer="1"/>
<wire x1="16.764" y1="5.08" x2="19.05" y2="5.08" width="0.508" layer="1"/>
</signal>
<signal name="N$4">
<contactref element="CON1" pad="1"/>
<contactref element="F1" pad="P$1"/>
<wire x1="8.382" y1="5.08" x2="9.652" y2="3.81" width="0.508" layer="1"/>
<wire x1="9.652" y1="3.81" x2="11.43" y2="3.81" width="0.508" layer="1"/>
<wire x1="8.382" y1="5.08" x2="8.382" y2="8.89" width="0.508" layer="1"/>
<wire x1="8.382" y1="8.89" x2="8.52" y2="8.91" width="0.508" layer="1"/>
</signal>
<signal name="D-">
<contactref element="R2" pad="1"/>
<contactref element="R3" pad="1"/>
<contactref element="CON1" pad="2"/>
<wire x1="8.636" y1="11.43" x2="8.52" y2="11.41" width="0.508" layer="1"/>
<wire x1="8.636" y1="11.43" x2="11.43" y2="11.43" width="0.508" layer="1"/>
<wire x1="11.43" y1="11.43" x2="11.43" y2="8.89" width="0.508" layer="1"/>
</signal>
<signal name="N$3">
<contactref element="R5" pad="2"/>
<contactref element="LED1" pad="K"/>
<wire x1="21.59" y1="16.51" x2="19.05" y2="16.51" width="0.508" layer="1"/>
</signal>
<signal name="AVR-RX">
<contactref element="UC" pad="7"/>
<contactref element="ISP" pad="3"/>
<wire x1="44.45" y1="8.89" x2="43.18" y2="10.16" width="0.2032" layer="16"/>
<wire x1="43.18" y1="10.16" x2="38.1" y2="10.16" width="0.2032" layer="16"/>
<contactref element="RF1" pad="TX"/>
<wire x1="38.1" y1="10.16" x2="36.83" y2="8.89" width="0.2032" layer="16"/>
<wire x1="43.18" y1="17.78" x2="43.18" y2="26.67" width="0.508" layer="1"/>
<wire x1="43.18" y1="16.51" x2="46.482" y2="13.208" width="0.508" layer="1"/>
<wire x1="46.482" y1="13.208" x2="46.482" y2="9.398" width="0.508" layer="1"/>
<wire x1="46.482" y1="9.398" x2="45.974" y2="8.89" width="0.508" layer="1"/>
<wire x1="45.974" y1="8.89" x2="44.45" y2="8.89" width="0.508" layer="1"/>
<wire x1="45.72" y1="30.48" x2="45.72" y2="29.21" width="0.508" layer="1"/>
<wire x1="45.72" y1="29.21" x2="44.704" y2="28.194" width="0.508" layer="1"/>
<wire x1="44.704" y1="28.194" x2="43.688" y2="28.194" width="0.508" layer="1"/>
<wire x1="43.688" y1="28.194" x2="43.18" y2="27.686" width="0.508" layer="1"/>
<wire x1="45.72" y1="30.48" x2="45.72" y2="30.988" width="0.508" layer="16"/>
<wire x1="45.72" y1="30.988" x2="44.958" y2="31.75" width="0.508" layer="16"/>
<wire x1="44.958" y1="31.75" x2="36.83" y2="31.75" width="0.508" layer="16"/>
<wire x1="36.83" y1="31.75" x2="34.798" y2="33.782" width="0.508" layer="16"/>
<via x="34.798" y="33.782" extent="1-16" drill="0.508"/>
<wire x1="34.798" y1="33.782" x2="34.798" y2="38.1" width="0.508" layer="1"/>
<via x="34.798" y="38.1" extent="1-16" drill="0.508"/>
<contactref element="AVR-UART" pad="5"/>
<contactref element="ESP-UART" pad="5"/>
<wire x1="43.18" y1="27.686" x2="43.18" y2="26.67" width="0.508" layer="1"/>
<wire x1="43.18" y1="16.51" x2="43.18" y2="17.78" width="0.508" layer="1"/>
<contactref element="CON10" pad="3"/>
<wire x1="30.48" y1="40.64" x2="31.242" y2="40.64" width="0.508" layer="16"/>
<wire x1="31.242" y1="40.64" x2="33.782" y2="38.1" width="0.508" layer="16"/>
<wire x1="33.782" y1="38.1" x2="34.798" y2="38.1" width="0.508" layer="16"/>
</signal>
<signal name="AVR-TX">
<contactref element="UC" pad="6"/>
<contactref element="ISP" pad="1"/>
<wire x1="38.1" y1="7.62" x2="43.18" y2="7.62" width="0.2032" layer="16"/>
<wire x1="43.18" y1="7.62" x2="44.45" y2="6.35" width="0.2032" layer="16"/>
<contactref element="RF1" pad="RX"/>
<wire x1="38.1" y1="7.62" x2="36.83" y2="6.35" width="0.2032" layer="16"/>
<wire x1="40.64" y1="17.78" x2="40.64" y2="26.67" width="0.508" layer="1"/>
<wire x1="40.64" y1="16.51" x2="39.37" y2="15.24" width="0.508" layer="1"/>
<wire x1="39.37" y1="15.24" x2="39.37" y2="7.366" width="0.508" layer="1"/>
<wire x1="39.37" y1="7.366" x2="38.354" y2="6.35" width="0.508" layer="1"/>
<wire x1="38.354" y1="6.35" x2="36.83" y2="6.35" width="0.508" layer="1"/>
<wire x1="40.64" y1="28.194" x2="41.656" y2="29.21" width="0.508" layer="1"/>
<wire x1="41.656" y1="29.21" x2="41.656" y2="38.1" width="0.508" layer="1"/>
<wire x1="41.656" y1="38.1" x2="43.18" y2="38.1" width="0.508" layer="1"/>
<wire x1="41.656" y1="38.1" x2="41.656" y2="40.64" width="0.508" layer="1"/>
<via x="41.656" y="40.64" extent="1-16" drill="0.508"/>
<contactref element="AVR-UART" pad="4"/>
<contactref element="ESP-UART" pad="4"/>
<wire x1="40.64" y1="26.67" x2="40.64" y2="28.194" width="0.508" layer="1"/>
<wire x1="40.64" y1="16.51" x2="40.64" y2="17.78" width="0.508" layer="1"/>
<contactref element="CON10" pad="2"/>
<wire x1="41.656" y1="40.64" x2="33.02" y2="40.64" width="0.508" layer="16"/>
<wire x1="33.02" y1="40.64" x2="30.48" y2="43.18" width="0.508" layer="16"/>
</signal>
<signal name="N$6">
<contactref element="RF1" pad="H_PD"/>
<contactref element="R4" pad="1"/>
<wire x1="45.72" y1="33.02" x2="45.72" y2="33.528" width="0.508" layer="16"/>
<wire x1="45.72" y1="33.528" x2="44.958" y2="34.29" width="0.508" layer="16"/>
<wire x1="44.958" y1="34.29" x2="39.37" y2="34.29" width="0.508" layer="16"/>
<via x="39.37" y="34.29" extent="1-16" drill="0.508"/>
<wire x1="39.37" y1="34.29" x2="39.37" y2="30.48" width="0.508" layer="1"/>
</signal>
<signal name="N$8">
<contactref element="R6" pad="2"/>
<contactref element="SW1" pad="P$2"/>
<contactref element="SW1" pad="P$1"/>
<wire x1="36.83" y1="38.1" x2="36.83" y2="47.498" width="0.508" layer="1"/>
<wire x1="36.83" y1="47.498" x2="37.338" y2="48.006" width="0.508" layer="1"/>
<wire x1="37.338" y1="48.006" x2="39.878" y2="48.006" width="0.508" layer="1"/>
<wire x1="39.878" y1="48.006" x2="39.93" y2="47.97" width="0.508" layer="1"/>
<wire x1="39.93" y1="47.97" x2="39.878" y2="48.006" width="0.508" layer="1"/>
<wire x1="39.878" y1="48.006" x2="46.482" y2="48.006" width="0.508" layer="1"/>
<wire x1="46.482" y1="48.006" x2="46.43" y2="47.97" width="0.508" layer="1"/>
</signal>
<signal name="IO2">
<contactref element="RF1" pad="GPIO2"/>
<contactref element="CON10" pad="5"/>
<wire x1="30.48" y1="35.56" x2="34.798" y2="35.56" width="0.508" layer="16"/>
<wire x1="34.798" y1="35.56" x2="37.338" y2="33.02" width="0.508" layer="16"/>
<wire x1="37.338" y1="33.02" x2="43.18" y2="33.02" width="0.508" layer="16"/>
</signal>
<signal name="IO16">
<contactref element="RF1" pad="GPIO16"/>
<wire x1="45.72" y1="35.56" x2="45.72" y2="36.068" width="0.508" layer="16"/>
<wire x1="45.72" y1="36.068" x2="44.958" y2="36.83" width="0.508" layer="16"/>
<wire x1="44.958" y1="36.83" x2="31.75" y2="36.83" width="0.508" layer="16"/>
<contactref element="CON10" pad="4"/>
<wire x1="31.75" y1="36.83" x2="30.48" y2="38.1" width="0.508" layer="16"/>
</signal>
<signal name="IO0">
<contactref element="RF1" pad="GPIO0"/>
<contactref element="R6" pad="1"/>
<wire x1="36.83" y1="30.48" x2="36.83" y2="35.56" width="0.508" layer="1"/>
<via x="36.83" y="35.56" extent="1-16" drill="0.508"/>
<wire x1="36.83" y1="35.56" x2="43.18" y2="35.56" width="0.508" layer="16"/>
<contactref element="CON10" pad="6"/>
<wire x1="30.48" y1="33.02" x2="33.02" y2="30.48" width="0.508" layer="16"/>
<wire x1="33.02" y1="30.48" x2="36.83" y2="30.48" width="0.508" layer="16"/>
</signal>
</signals>
<errors>
<approved hash="18,29,26ba2560ddd0de0a"/>
<approved hash="18,29,04c73b35c500faf8"/>
<approved hash="18,29,10b224e0dacfeea7"/>
<approved hash="18,29,69096e6ad36fdca3"/>
<approved hash="18,29,38c39e308a2ed109"/>
<approved hash="18,29,37de48249a88bd2c"/>
<approved hash="18,29,77d0ba4dd42db495"/>
</errors>
</board>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
</compatibility>
</eagle>

license: MIT

license_type: permissive

branch_name: refs/heads/master

extension: brd


text:
package stringutils

import (
	"golang.org/x/exp/slices"
	"os"
	"reflect"
	"sort"
	"strings"
	"testing"

	arrayutils "github.com/alessiosavi/GoGPUtils/array"
)

const distance1 string = `../testdata/files/testDistance.txt`
const distance2 string = `../testdata/files/testDistance1.txt`
const danteDataset string = `../testdata/files/dante.txt`

func TestExtractUpperBlock(t *testing.T) {
	for _, test := range []string{"test_ID", "test_ID_test", "Test_ID_TEST", "test_ID_test_ID", "test ID", "test_ID test", "Test ID TEST", "test ID_test ID", "TestID", "TestId"} {

		//for _, test := range []string{"CompanyName"} {
		r := strings.NewReplacer(" ", "_")

		expected := r.Replace(strings.ToLower(test))
		if res := ExtractUpperBlock(test, r); res != expected {
			t.Errorf("Expected: %s | Found: %s", expected, res)
		}
	}
}
func TestIsUpper(t *testing.T) {
	dataOK := []string{`AAA`, `BBB`, `ZZZ`}
	dataKO := []string{`aaa`, `bbb`, `zzz`, `<<<`, `!!!`}
	for i := range dataOK {
		if !IsUpper(dataOK[i]) {
			t.Fail()
		}
	}
	for i := range dataKO {
		if IsUpper(dataKO[i]) {
			t.Fail()
		}
	}
}

func TestIsLower(t *testing.T) {
	dataOK := []string{`AAA`, `BBB`, `ZZZ`}
	dataKO := []string{`aaa`, `bbb`, `zzz`}
	for i := range dataOK {
		if IsLower(dataOK[i]) {
			t.Fail()
		}
	}
	for i := range dataKO {
		if !IsLower(dataKO[i]) {
			t.Fail()
		}
	}
}
func TestContainsLetter(t *testing.T) {
	dataOK := []string{`baaaa`, `baa!aaa`, `baa aaa`, `!!!!a!!!`}
	dataKO := []string{`....`, `,,,,,`, `,,,,,,,`, `<<<`, `!!!`}
	for i := range dataOK {
		if !ContainsLetter(dataOK[i]) {
			t.Fail()
		}
	}
	for i := range dataKO {
		if ContainsLetter(dataKO[i]) {
			t.Fail()
		}
	}
}

func TestContainsOnlyLetter(t *testing.T) {
	dataOK := []string{`baaaa`, `baaaaa`, `baaa`, `a`}
	dataKO := []string{`....`, `,,,,,`, `<<<`, `!!!`, `2`}
	for i := range dataOK {
		if !ContainsOnlyLetter(dataOK[i]) {
			t.Error(dataOK[i])
		}
	}
	for i := range dataKO {
		if ContainsOnlyLetter(dataKO[i]) {
			t.Error(dataKO[i])
		}
	}
}

func TestContainsMultiple(t *testing.T) {

}

func TestRemoveNonAscii(t *testing.T) {
	testData := []string{`AÀ È Ì Ò Ù Ỳ Ǹ ẀA`, `AȨ Ç Ḑ Ģ Ḩ Ķ Ļ Ņ Ŗ ŞA`, `AA♩ ♪ ♫ ♬ ♭ ♮ ♯AA`}
	dataOK := []string{`A A`, `A A`, `AA AA`}
	var data []string
	for _, item := range testData {
		data = append(data, RemoveNonASCII(item))
	}
	if !reflect.DeepEqual(dataOK, data) {
		t.Errorf("Expected: %v | Found: %v", dataOK, data)
	}
}

func TestRemoveFromString(t *testing.T) {
	data := []string{`test1`, `another test`, `another another test`}
	for _, item := range data {
		res := RemoveFromString(item, len(item)-1)
		if res != item[:len(item)-1] {
			t.Log(item)
			t.Error(res)
		}
	}
}

func TestIsBlank(t *testing.T) {
	data := []string{``, ` `, `    `, `	`}
	for _, item := range data {
		if !IsBlank(item) {
			t.Log(item)
			t.Fail()
		}
	}
}

func TestTrimDoubleSpace(t *testing.T) {
	data := []string{`  test`, `test  `, `t  st`}
	for _, item := range data {
		str := Trim(item)
		if len(str) != 4 {
			t.Fail()
		}
	}
}

func TestRemoveDoubleWhiteSpace(t *testing.T) {
	data := []string{`  test`, `test  `, `te  st`}
	for _, item := range data {
		str := RemoveDoubleWhiteSpace(item)
		if len(str) != 5 {
			t.Fail()
		}
	}
}

func TestIsASCII(t *testing.T) {
	data := "This is a simple! Text< \n"
	if !IsASCII(data) {
		t.Fail()
	}
}

func TestCountLines(t *testing.T) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	lines := CountLines(data)
	if lines != 19567 {
		t.Error(lines)
	}
}
func TestTrim(t *testing.T) {
	data := []string{` test`, `test `, `te s`}
	for _, item := range data {
		str := Trim(item)
		if len(str) != 4 {
			t.Fail()
		}
	}
}
func TestTrimNewLine(t *testing.T) {
	data := []string{"test\n", "\ntest", "\ntest\n", "\ntest \n"}
	for _, item := range data {
		str := Trim(item)
		if len(str) != 4 {
			t.Fail()
		}
	}
}

func TestCheckPalindrome(t *testing.T) {
	data := []string{`aba`, `abba`, `abcba`}
	for _, item := range data {
		if !CheckPalindrome(item) {
			t.Fail()
		}
	}
}

func TestReverseString(t *testing.T) {
	data := "Golang is better than Java <3"
	test := `3< avaJ naht retteb si gnaloG`
	if ReverseString(data) != test {
		t.Fail()
	}
}
func TestExtractTextFromQuery(t *testing.T) {
	data := "Golang is better than java :D"
	ignore := []string{"java"}
	if len(ExtractTextFromQuery(data, nil)) != 6 {
		t.Fail()
	}
	if len(ExtractTextFromQuery(data, ignore)) != 5 {
		t.Fail()
	}
}
func TestCheckPresence(t *testing.T) {
	data := []string{"test1", "test2", "test3", "test4"}
	if !CheckPresence(data, "test4") {
		t.Fail()
	}
	if CheckPresence(data, "test5") {
		t.Fail()
	}
}

func TestLevenshteinDistanceLegacy(t *testing.T) {
	str1 := `kitten kitten kitten kitten kitten kitten`
	str2 := `sitting sitting sitting sitting sitting`
	distance := LevenshteinDistanceLegacy(str1, str2)
	if distance != 21 {
		t.Error(distance)
	}
}

func TestJaroDistance(t *testing.T) {
	var str1, str2 = "MARTHA", "MARHTA"
	if JaroDistance(str1, str2) != 0.9444444444444445 {
		t.Fail()
	}
}

func TestDiceCoefficient(t *testing.T) {
	str1, str2 := "prova1", "prova2"
	diceCoeffiecnt := DiceCoefficient(str1, str2)
	if diceCoeffiecnt != 0.8 {
		t.Error(diceCoeffiecnt)
	}
}

func TestLevenshteinDistance(t *testing.T) {
	str1 := `kitten kitten kitten kitten kitten kitten`
	str2 := `sitting sitting sitting sitting sitting`
	distance := LevenshteinDistance(str1, str2)
	if distance != 21 {
		t.Error(distance)
	}
}

func BenchmarkLevenshteinDistanceLegacy(t *testing.B) {
	content, err := os.ReadFile(distance1)
	if err != nil {
		return
	}
	data1 := strings.ToUpper(string(content))
	content, err = os.ReadFile(distance2)
	if err != nil {
		return
	}
	data2 := strings.ToUpper(string(content))

	t.ResetTimer()
	for i := 0; i < t.N; i++ {
		LevenshteinDistanceLegacy(data1, data2)
	}
}
func BenchmarkLevenshteinDistance(t *testing.B) {
	content, err := os.ReadFile(distance1)
	if err != nil {
		return
	}
	data1 := strings.ToUpper(string(content))
	content, err = os.ReadFile(distance2)
	if err != nil {
		return
	}
	data2 := strings.ToUpper(string(content))
	t.ResetTimer()
	for i := 0; i < t.N; i++ {
		LevenshteinDistance(data1, data2)
	}
}

func BenchmarkDiceCoefficient(t *testing.B) {
	content, err := os.ReadFile(distance1)
	if err != nil {
		return
	}
	data1 := strings.ToUpper(string(content))
	content, err = os.ReadFile(distance2)
	if err != nil {
		return
	}
	data2 := strings.ToUpper(string(content))
	t.ResetTimer()
	for i := 0; i < t.N; i++ {
		DiceCoefficient(data1, data2)
	}
}
func BenchmarkJaroDistance(t *testing.B) {
	content, err := os.ReadFile(distance1)
	if err != nil {
		return
	}
	data1 := strings.ToUpper(string(content))
	content, err = os.ReadFile(distance2)
	if err != nil {
		return
	}
	data2 := strings.ToUpper(string(content))
	t.ResetTimer()
	for i := 0; i < t.N; i++ {
		JaroDistance(data1, data2)
	}
}

func BenchmarkContainsOnlyLetter(t *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	t.ResetTimer()
	for i := 0; i < t.N; i++ {
		ContainsOnlyLetter(data)
	}
}

func BenchmarkRemoveFromString(t *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	t.ResetTimer()
	for n := 0; n < t.N; n++ {
		RemoveFromString(data, len(data)-1)
	}
}

func BenchmarkExtractTextFromQuery(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		ExtractTextFromQuery(data, nil)
	}
}
func BenchmarkCheckPresence(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		CheckPresence([]string{"amor, Beatrice"}, data)
	}
}
func BenchmarkIsUpper(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := strings.ToUpper(string(content))
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		IsUpper(data)
	}
}

func BenchmarkIsLower(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := strings.ToLower(string(content))
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		IsLower(data)
	}
}

func BenchmarkRemoveWhiteSpace(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		RemoveWhiteSpace(data)
	}
}
func BenchmarkIsASCII(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		IsASCII(data)
	}
}

func BenchmarkSplit(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		Split(strings.NewReader(data))
	}
}
func BenchmarkSplitBuiltin(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		strings.Split(data, "\n")
	}
}

func BenchmarkExtractString(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	initial := "LA DIVINA COMMEDIA"
	final := "altre stelle."
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		ExtractString(&data, initial, final)
	}
}

func BenchmarkRemoveNonASCII(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		RemoveNonASCII(data)
	}
}
func BenchmarkTestIsUpperOK(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := strings.ToUpper(string(content))
	b.ResetTimer()
	for n := 0; n < b.N; n++ {
		IsUpper(data)
	}
}

func BenchmarkTestIsLowerOK(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := strings.ToLower(string(content))
	b.ResetTimer()
	for n := 0; n < b.N; n++ {
		IsLower(data)
	}
}

func BenchmarkCreateJSON(t *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := strings.Split(string(content), "\n")
	t.ResetTimer()
	for i := 0; i < t.N; i++ {
		CreateJSON(data)
	}
}

func BenchmarkJoin(t *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := strings.Split(string(content), "\n")
	t.ResetTimer()
	for i := 0; i < t.N; i++ {
		arrayutils.JoinStrings(data, " ")
	}
}

func BenchmarkTrim(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		Trim(data)
	}
}

func BenchmarkRemoveDoubleWhiteSpace(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		RemoveDoubleWhiteSpace(data)
	}
}
func BenchmarkCountLines(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		CountLines(data)
	}
}

func BenchmarkReverseString(b *testing.B) {
	content, err := os.ReadFile(danteDataset)
	if err != nil {
		return
	}
	data := string(content)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		ReverseString(data)
	}
}

func TestContainsMultiple1(t *testing.T) {
	type args struct {
		lower     bool
		s         string
		substring []string
	}
	tests := []struct {
		name string
		args args
		want bool
	}{
		{name: "testOK1", args: struct {
			lower     bool
			s         string
			substring []string
		}{lower: true, s: "this is a test", substring: []string{"this", "is"}}, want: true},
		{name: "testKO1", args: struct {
			lower     bool
			s         string
			substring []string
		}{lower: true, s: "this is a test", substring: []string{"not", "found"}}, want: false},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := ContainsMultiple(tt.args.lower, tt.args.s, tt.args.substring...); got != tt.want {
				t.Errorf("ContainsMultiple() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestUnique2(t *testing.T) {
	type args struct {
		data []string
	}
	tests := []struct {
		name string
		args args
		want []string
	}{
		{
			name: "Ok",
			args: args{
				data: []string{"a", "b", "c", "c"},
			},
			want: []string{"a", "b", "c"},
		},
		{
			name: "Ok",
			args: args{
				data: []string{"a", "b", "c"},
			},
			want: []string{"a", "b", "c"},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			got := slices.Compact(tt.args.data)
			sort.Slice(got, func(i, j int) bool {
				return got[i] < got[j]
			})
			sort.Slice(tt.want, func(i, j int) bool {
				return tt.want[i] < tt.want[j]
			})
			if !reflect.DeepEqual(got, tt.want) {
				t.Errorf("Unique() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestIndexes(t *testing.T) {
	type args struct {
		s   string
		chs string
	}
	tests := []struct {
		name string
		args args
		want []int
	}{
		{
			name: "OK",
			args: args{
				s:   "ABAABA",
				chs: "A",
			},
			want: []int{0, 2, 3, 5},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := Indexes(tt.args.s, tt.args.chs); !reflect.DeepEqual(got, tt.want) {
				t.Errorf("Indexes() = %v, want %v", got, tt.want)
			}
		})
	}
}

repository: alessiosavi/GoGPUtils

repo_name: alessiosavi/GoGPUtils

gha_license_id: MIT

gha_language: Go

extension: go