text:
0.4064" layer="1"/>
<wire x1="18.69" y1="54.2" x2="20.34" y2="55.85" width="0.4064" layer="1"/>
<wire x1="20.34" y1="55.85" x2="20.34" y2="58.43" width="0.4064" layer="1"/>
<wire x1="20.34" y1="58.43" x2="20.35" y2="58.44" width="0.4064" layer="1"/>
<polygon width="0.4064" layer="16">
<vertex x="13.6" y="29.27"/>
<vertex x="29.8" y="29.27"/>
<vertex x="29.87" y="64.31"/>
<vertex x="13.67" y="64.31"/>
</polygon>
<wire x1="19.6" y1="38.27" x2="21" y2="38.27" width="0.4064" layer="1"/>
<wire x1="22.5" y1="38.27" x2="21" y2="38.27" width="0.4064" layer="1"/>
<wire x1="20.96" y1="36.87" x2="20.96" y2="38.23" width="0.4064" layer="1"/>
<wire x1="20.96" y1="38.23" x2="21" y2="38.27" width="0.4064" layer="1"/>
<wire x1="18.1344" y1="47.2996" x2="20.3496" y2="47.2996" width="0.4064" layer="1"/>
<wire x1="20.3496" y1="47.2996" x2="21.02" y2="47.97" width="0.4064" layer="1"/>
<wire x1="22.3254" y1="46.6646" x2="21.02" y2="47.97" width="0.4064" layer="1"/>
<contactref element="C3" pad="2"/>
<contactref element="C2" pad="2"/>
<wire x1="23.9256" y1="46.6646" x2="22.3254" y2="46.6646" width="0.4064" layer="1"/>
<contactref element="C10" pad="1"/>
<contactref element="C8" pad="1"/>
<contactref element="C5" pad="1"/>
<contactref element="C9" pad="1"/>
<contactref element="U$2" pad="9"/>
<contactref element="U$2" pad="6"/>
<contactref element="D2" pad="1"/>
<contactref element="C7" pad="2"/>
<contactref element="R7" pad="1"/>
<contactref element="LED4" pad="C"/>
<polygon width="0.4064" layer="16">
<vertex x="36.4615" y="54.7585"/>
<vertex x="87.574" y="54.7585"/>
<vertex x="87.504" y="49.966"/>
<vertex x="36.3915" y="49.966"/>
</polygon>
<polygon width="0.4064" layer="1" thermals="no">
<vertex x="36.4615" y="52.8535"/>
<vertex x="88.214" y="52.8535"/>
<vertex x="88.214" y="50.096"/>
<vertex x="36.4615" y="50.096"/>
</polygon>
<wire x1="43.764" y1="56.346" x2="43.764" y2="55.711" width="1.016" layer="1"/>
<wire x1="43.764" y1="55.711" x2="43.764" y2="52.2185" width="1.016" layer="1"/>
<wire x1="43.764" y1="52.2185" x2="43.4465" y2="51.901" width="1.016" layer="1"/>
<wire x1="46.2278" y1="55.711" x2="43.764" y2="55.711" width="0.254" layer="1"/>
<via x="41.224" y="51.266" extent="1-16" drill="0.6"/>
<via x="47.574" y="51.266" extent="1-16" drill="0.6"/>
<via x="57.734" y="51.266" extent="1-16" drill="0.6"/>
<via x="72.6565" y="51.266" extent="1-16" drill="0.6"/>
<via x="79.0065" y="51.266" extent="1-16" drill="0.6"/>
<contactref element="C16" pad="1"/>
<contactref element="C14" pad="1"/>
<contactref element="C11" pad="1"/>
<contactref element="C15" pad="1"/>
<contactref element="U$3" pad="9"/>
<contactref element="U$3" pad="6"/>
<contactref element="D1" pad="1"/>
<contactref element="C13" pad="2"/>
<contactref element="R10" pad="1"/>
<contactref element="LED1" pad="C"/>
<polygon width="0.4064" layer="16">
<vertex x="36.3655" y="82.0645"/>
<vertex x="87.648" y="81.9945"/>
<vertex x="87.508" y="76.572"/>
<vertex x="36.1555" y="76.712"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="36.3655" y="80.1595"/>
<vertex x="88.118" y="80.1595"/>
<vertex x="88.048" y="76.652"/>
<vertex x="36.2955" y="76.652"/>
</polygon>
<wire x1="43.668" y1="83.652" x2="43.668" y2="83.017" width="1.016" layer="1"/>
<wire x1="43.668" y1="83.017" x2="43.668" y2="79.5245" width="1.016" layer="1"/>
<wire x1="43.668" y1="79.5245" x2="43.3505" y2="79.207" width="1.016" layer="1"/>
<wire x1="46.1318" y1="83.017" x2="43.668" y2="83.017" width="0.254" layer="1"/>
<via x="41.128" y="78.572" extent="1-16" drill="0.6"/>
<via x="47.478" y="78.572" extent="1-16" drill="0.6"/>
<via x="57.638" y="78.572" extent="1-16" drill="0.6"/>
<via x="72.5605" y="78.572" extent="1-16" drill="0.6"/>
<via x="78.9105" y="78.572" extent="1-16" drill="0.6"/>
<contactref element="C22" pad="1"/>
<contactref element="C20" pad="1"/>
<contactref element="C17" pad="1"/>
<contactref element="C21" pad="1"/>
<contactref element="U$4" pad="9"/>
<contactref element="U$4" pad="6"/>
<contactref element="D3" pad="1"/>
<contactref element="C19" pad="2"/>
<contactref element="R13" pad="1"/>
<contactref element="LED2" pad="C"/>
<polygon width="0.4064" layer="16">
<vertex x="36.3915" y="67.8565"/>
<vertex x="87.664" y="67.8565"/>
<vertex x="87.734" y="63.274"/>
<vertex x="36.4615" y="63.274"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="36.3915" y="65.9515"/>
<vertex x="88.144" y="65.9515"/>
<vertex x="88.214" y="63.264"/>
<vertex x="36.4615" y="63.264"/>
</polygon>
<wire x1="43.694" y1="69.444" x2="43.694" y2="68.809" width="1.016" layer="1"/>
<wire x1="43.694" y1="68.809" x2="43.694" y2="65.3165" width="1.016" layer="1"/>
<wire x1="43.694" y1="65.3165" x2="43.3765" y2="64.999" width="1.016" layer="1"/>
<wire x1="46.1578" y1="68.809" x2="43.694" y2="68.809" width="0.254" layer="1"/>
<via x="41.154" y="64.364" extent="1-16" drill="0.6"/>
<via x="47.504" y="64.364" extent="1-16" drill="0.6"/>
<via x="57.664" y="64.364" extent="1-16" drill="0.6"/>
<via x="72.5865" y="64.364" extent="1-16" drill="0.6"/>
<via x="78.9365" y="64.364" extent="1-16" drill="0.6"/>
<via x="60.432" y="78.572" extent="1-16" drill="0.6"/>
<via x="52.812" y="77.683" extent="1-16" drill="0.6"/>
<wire x1="36.556" y1="78.953" x2="37.318" y2="79.715" width="0.254" layer="1"/>
<wire x1="37.318" y1="79.715" x2="38.563" y2="79.715" width="0.254" layer="1"/>
<wire x1="38.563" y1="79.715" x2="38.588" y2="79.69" width="0.254" layer="1"/>
<contactref element="C28" pad="1"/>
<contactref element="C26" pad="1"/>
<contactref element="C23" pad="1"/>
<contactref element="C27" pad="1"/>
<contactref element="U$5" pad="9"/>
<contactref element="U$5" pad="6"/>
<contactref element="D4" pad="1"/>
<contactref element="C25" pad="2"/>
<contactref element="R16" pad="1"/>
<contactref element="LED3" pad="C"/>
<polygon width="0.4064" layer="16">
<vertex x="36.0915" y="5.6085"/>
<vertex x="87.454" y="5.5385"/>
<vertex x="87.354" y="0.976"/>
<vertex x="36.2315" y="0.746"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="36.0915" y="3.7035"/>
<vertex x="87.844" y="3.7035"/>
<vertex x="87.984" y="0.746"/>
<vertex x="36.2315" y="0.746"/>
</polygon>
<wire x1="43.394" y1="7.196" x2="43.394" y2="6.561" width="1.016" layer="1"/>
<wire x1="43.394" y1="6.561" x2="43.394" y2="3.0685" width="1.016" layer="1"/>
<wire x1="43.394" y1="3.0685" x2="43.0765" y2="2.751" width="1.016" layer="1"/>
<wire x1="45.8578" y1="6.561" x2="43.394" y2="6.561" width="0.254" layer="1"/>
<via x="40.854" y="2.116" extent="1-16" drill="0.6"/>
<via x="47.204" y="2.116" extent="1-16" drill="0.6"/>
<via x="57.364" y="2.116" extent="1-16" drill="0.6"/>
<via x="72.2865" y="2.116" extent="1-16" drill="0.6"/>
<via x="78.6365" y="2.116" extent="1-16" drill="0.6"/>
<contactref element="C34" pad="1"/>
<contactref element="C32" pad="1"/>
<contactref element="C29" pad="1"/>
<contactref element="C33" pad="1"/>
<contactref element="U$6" pad="9"/>
<contactref element="U$6" pad="6"/>
<contactref element="D5" pad="1"/>
<contactref element="C31" pad="2"/>
<contactref element="R19" pad="1"/>
<contactref element="LED5" pad="C"/>
<polygon width="0.4064" layer="16">
<vertex x="36.1355" y="32.5645"/>
<vertex x="87.178" y="32.4045"/>
<vertex x="87.118" y="27.472"/>
<vertex x="36.0755" y="27.632"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="36.1355" y="30.6595"/>
<vertex x="87.888" y="30.6595"/>
<vertex x="87.828" y="27.632"/>
<vertex x="36.0755" y="27.632"/>
</polygon>
<wire x1="43.438" y1="34.152" x2="43.438" y2="33.517" width="1.016" layer="1"/>
<wire x1="43.438" y1="33.517" x2="43.438" y2="30.0245" width="1.016" layer="1"/>
<wire x1="43.438" y1="30.0245" x2="43.1205" y2="29.707" width="1.016" layer="1"/>
<wire x1="45.9018" y1="33.517" x2="43.438" y2="33.517" width="0.254" layer="1"/>
<via x="40.898" y="29.072" extent="1-16" drill="0.6"/>
<via x="47.248" y="29.072" extent="1-16" drill="0.6"/>
<via x="57.408" y="29.072" extent="1-16" drill="0.6"/>
<via x="72.3305" y="29.072" extent="1-16" drill="0.6"/>
<via x="78.6805" y="29.072" extent="1-16" drill="0.6"/>
<contactref element="C40" pad="1"/>
<contactref element="C38" pad="1"/>
<contactref element="C35" pad="1"/>
<contactref element="C39" pad="1"/>
<contactref element="U$7" pad="9"/>
<contactref element="U$7" pad="6"/>
<contactref element="D6" pad="1"/>
<contactref element="C37" pad="2"/>
<contactref element="R22" pad="1"/>
<contactref element="LED6" pad="C"/>
<polygon width="0.4064" layer="16">
<vertex x="36.0815" y="18.9765"/>
<vertex x="87.124" y="18.9765"/>
<vertex x="87.194" y="14.254"/>
<vertex x="36.1515" y="14.254"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="36.0815" y="17.0715"/>
<vertex x="87.834" y="17.0715"/>
<vertex x="87.974" y="14.184"/>
<vertex x="36.2215" y="14.184"/>
</polygon>
<wire x1="43.384" y1="20.564" x2="43.384" y2="19.929" width="1.016" layer="1"/>
<wire x1="43.384" y1="19.929" x2="43.384" y2="16.4365" width="1.016" layer="1"/>
<wire x1="43.384" y1="16.4365" x2="43.0665" y2="16.119" width="1.016" layer="1"/>
<wire x1="45.8478" y1="19.929" x2="43.384" y2="19.929" width="0.254" layer="1"/>
<via x="40.844" y="15.484" extent="1-16" drill="0.6"/>
<via x="47.194" y="15.484" extent="1-16" drill="0.6"/>
<via x="57.354" y="15.484" extent="1-16" drill="0.6"/>
<via x="72.2765" y="15.484" extent="1-16" drill="0.6"/>
<via x="78.6265" y="15.484" extent="1-16" drill="0.6"/>
<via x="60.202" y="29.072" extent="1-16" drill="0.6"/>
<via x="51.3628" y="28.3354" extent="1-16" drill="0.6"/>
<wire x1="36.326" y1="29.453" x2="37.088" y2="30.215" width="0.254" layer="1"/>
<wire x1="37.088" y1="30.215" x2="38.333" y2="30.215" width="0.254" layer="1"/>
<wire x1="38.333" y1="30.215" x2="38.358" y2="30.19" width="0.254" layer="1"/>
<polygon width="0.4064" layer="1">
<vertex x="29.36" y="0.58"/>
<vertex x="29.39" y="0.55"/>
<vertex x="36.6" y="0.55"/>
<vertex x="36.92" y="0.87"/>
<vertex x="36.92" y="41.27"/>
<vertex x="36.94" y="41.29"/>
<vertex x="36.94" y="90.11"/>
<vertex x="36.4" y="90.65"/>
<vertex x="28.07" y="90.65"/>
<vertex x="0.48" y="63.06"/>
<vertex x="0.48" y="48.83"/>
<vertex x="0.48" y="27.88"/>
<vertex x="27.78" y="0.58"/>
<vertex x="29.32" y="0.58"/>
</polygon>
<via x="14.47" y="63.52" extent="1-16" drill="1"/>
<via x="28.95" y="63.45" extent="1-16" drill="1"/>
<via x="14.41" y="30.15" extent="1-16" drill="1"/>
<via x="29.03" y="30.08" extent="1-16" drill="1"/>
<contactref element="PL2" pad="1"/>
<contactref element="PL1" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="86.37" y="80.47"/>
<vertex x="86.37" y="90.67"/>
<vertex x="95.66" y="90.67"/>
<vertex x="95.98" y="90.67"/>
<vertex x="95.98" y="0.47"/>
<vertex x="86.84" y="0.47"/>
<vertex x="86.84" y="0.63"/>
<vertex x="86.29" y="0.63"/>
<vertex x="86.29" y="40.98"/>
<vertex x="86.21" y="40.98"/>
<vertex x="85.42" y="41.77"/>
<vertex x="57.77" y="41.77"/>
<vertex x="56.11" y="43.43"/>
<vertex x="54.37" y="43.43"/>
<vertex x="53.35" y="44.45"/>
<vertex x="50.2" y="44.45"/>
<vertex x="50.2" y="45.96"/>
<vertex x="50.27" y="46.03"/>
<vertex x="53.04" y="46.03"/>
<vertex x="54.14" y="47.13"/>
<vertex x="55.95" y="47.13"/>
<vertex x="56.82" y="48"/>
<vertex x="56.82" y="48.16"/>
<vertex x="57.6" y="48.94"/>
<vertex x="57.6" y="49.17"/>
<vertex x="58.79" y="50.36"/>
<vertex x="86.21" y="50.36"/>
<vertex x="86.6" y="50.75"/>
<vertex x="86.6" y="80.19"/>
<vertex x="86.39" y="80.4"/>
</polygon>
<via x="87.02" y="79.6" extent="1-16" drill="0.6" shape="square"/>
<via x="87.09" y="77.32" extent="1-16" drill="0.6" shape="square"/>
<via x="87.41" y="63.68" extent="1-16" drill="0.6" shape="square"/>
<via x="87.41" y="65.73" extent="1-16" drill="0.6" shape="square"/>
<via x="87.25" y="52.41" extent="1-16" drill="0.6" shape="square"/>
<via x="87.25" y="50.51" extent="1-16" drill="0.6" shape="square"/>
<via x="86.86" y="30.11" extent="1-16" drill="0.6" shape="square"/>
<via x="86.86" y="28.37" extent="1-16" drill="0.6" shape="square"/>
<via x="87.02" y="16.63" extent="1-16" drill="0.6" shape="square"/>
<via x="87.02" y="14.82" extent="1-16" drill="0.6" shape="square"/>
<via x="87.09" y="3.63" extent="1-16" drill="0.6" shape="square"/>
<via x="87.0646" y="2.0386" extent="1-16" drill="0.6" shape="square"/>
<contactref element="R24" pad="2"/>
<contactref element="J1" pad="2"/>
<contactref element="J2" pad="2"/>
<contactref element="J4" pad="2"/>
<contactref element="J3" pad="2"/>
<contactref element="J5" pad="2"/>
<contactref element="J7" pad="2"/>
<contactref element="J8" pad="2"/>
<contactref element="J14" pad="2"/>
<contactref element="J9" pad="2"/>
<contactref element="J10" pad="2"/>
<contactref element="J6" pad="4"/>
<contactref element="J6" pad="1"/>
<contactref element="J12" pad="4"/>
<contactref element="J12" pad="1"/>
<via x="20.955" y="38.2016" extent="1-16" drill="0.5" shape="square"/>
<via x="19.812" y="49.2252" extent="1-16" drill="0.3302"/>
<via x="22.352" y="49.3014" extent="1-16" drill="0.3302"/>
<via x="19.685" y="46.6344" extent="1-16" drill="0.3302"/>
<via x="20.955" y="47.9298" extent="1-16" drill="0.3302"/>
<via x="22.352" y="46.7106" extent="1-16" drill="0.3302"/>
<via x="81.9658" y="51.2064" extent="1-16" drill="0.3302"/>
<via x="67.5386" y="50.9016" extent="1-16" drill="0.3302"/>
<via x="64.0842" y="50.9778" extent="1-16" drill="0.3302"/>
<via x="61.5188" y="51.0032" extent="1-16" drill="0.3302"/>
<via x="45.0088" y="51.0286" extent="1-16" drill="0.3302"/>
<via x="42.9006" y="51.054" extent="1-16" drill="0.3302"/>
<via x="38.5826" y="50.5206" extent="1-16" drill="0.3302"/>
<via x="37.4904" y="28.2448" extent="1-16" drill="0.3302"/>
<via x="42.926" y="28.2956" extent="1-16" drill="0.3302"/>
<via x="45.1358" y="28.2194" extent="1-16" drill="0.3302"/>
<via x="49.3522" y="28.2194" extent="1-16" drill="0.3302"/>
<via x="62.1538" y="28.2702" extent="1-16" drill="0.3302"/>
<via x="64.8462" y="28.2448" extent="1-16" drill="0.3302"/>
<via x="68.9356" y="28.2956" extent="1-16" drill="0.3302"/>
<via x="82.042" y="28.1178" extent="1-16" drill="0.3302"/>
<via x="37.973" y="14.7828" extent="1-16" drill="0.3302"/>
<via x="42.7482" y="14.7828" extent="1-16" drill="0.3302"/>
<wire x1="42.7482" y1="14.7828" x2="42.7482" y2="14.7828" width="0" layer="19" extent="1-16"/>
<via x="44.958" y="14.7574" extent="1-16" drill="0.3302"/>
<via x="48.8696" y="14.605" extent="1-16" drill="0.3302"/>
<via x="50.8762" y="14.5542" extent="1-16" drill="0.3302"/>
<via x="52.8828" y="14.5796" extent="1-16" drill="0.3302"/>
<via x="59.0042" y="14.478" extent="1-16" drill="0.3302"/>
<via x="61.1378" y="14.478" extent="1-16" drill="0.3302"/>
<via x="62.865" y="14.5288" extent="1-16" drill="0.3302"/>
<via x="64.516" y="14.5288" extent="1-16" drill="0.3302"/>
<via x="65.9638" y="14.5288" extent="1-16" drill="0.3302"/>
<via x="67.437" y="14.5288" extent="1-16" drill="0.3302"/>
<via x="68.834" y="14.5288" extent="1-16" drill="0.3302"/>
<via x="70.3326" y="14.5034" extent="1-16" drill="0.3302"/>
<via x="73.4314" y="14.4526" extent="1-16" drill="0.3302"/>
<via x="81.3562" y="14.605" extent="1-16" drill="0.3302"/>
<via x="82.7024" y="14.5034" extent="1-16" drill="0.3302"/>
<via x="84.2264" y="14.5542" extent="1-16" drill="0.3302"/>
<via x="81.4578" y="2.032" extent="1-16" drill="0.3302"/>
<via x="68.5292" y="1.9304" extent="1-16" drill="0.3302"/>
<via x="66.0146" y="1.8796" extent="1-16" drill="0.3302"/>
<via x="64.0588" y="1.8796" extent="1-16" drill="0.3302"/>
<via x="62.3316" y="1.9304" extent="1-16" drill="0.3302"/>
<via x="60.6552" y="1.9304" extent="1-16" drill="0.3302"/>
<via x="58.8264" y="1.9812" extent="1-16" drill="0.3302"/>
<wire x1="58.8264" y1="1.9812" x2="58.8264" y2="1.9812" width="0" layer="19" extent="1-16"/>
<via x="51.0286" y="1.8542" extent="1-16" drill="0.3302"/>
<via x="45.5422" y="1.9558" extent="1-16" drill="0.3302"/>
<via x="43.9674" y="1.9558" extent="1-16" drill="0.3302"/>
<wire x1="43.9674" y1="1.9558" x2="43.9674" y2="1.9558" width="0" layer="19" extent="1-16"/>
<via x="42.418" y="1.9558" extent="1-16" drill="0.3302"/>
<wire x1="42.418" y1="1.9558" x2="42.418" y2="1.9558" width="0" layer="19" extent="1-16"/>
<via x="36.6268" y="1.8796" extent="1-16" drill="0.3302"/>
<wire x1="42.9006" y1="51.054" x2="42.9006" y2="51.054" width="0" layer="19" extent="1-16"/>
<via x="36.957" y="63.881" extent="1-16" drill="0.3302"/>
<via x="42.9006" y="63.881" extent="1-16" drill="0.3302"/>
<via x="44.6278" y="63.8302" extent="1-16" drill="0.3302"/>
<via x="59.817" y="64.0334" extent="1-16" drill="0.3302"/>
<via x="61.6966" y="64.008" extent="1-16" drill="0.3302"/>
<via x="63.3984" y="63.9318" extent="1-16" drill="0.3302"/>
<via x="65.0494" y="63.9064" extent="1-16" drill="0.3302"/>
<via x="66.802" y="63.881" extent="1-16" drill="0.3302"/>
<via x="69.1896" y="63.9572" extent="1-16" drill="0.3302"/>
<via x="81.9912" y="63.7286" extent="1-16" drill="0.3302"/>
<via x="37.1602" y="77.4446" extent="1-16" drill="0.3302"/>
<via x="39.0144" y="77.3938" extent="1-16" drill="0.3302"/>
<via x="43.2562" y="77.343" extent="1-16" drill="0.3302"/>
<via x="45.1612" y="77.343" extent="1-16" drill="0.3302"/>
<via x="48.7934" y="77.2922" extent="1-16" drill="0.3302"/>
<via x="55.4736" y="77.6732" extent="1-16" drill="0.3302"/>
<wire x1="55.4736" y1="77.6732" x2="55.4736" y2="77.6732" width="0" layer="19" extent="1-16"/>
<via x="62.4586" y="77.5208" extent="1-16" drill="0.3302"/>
<via x="64.4398" y="77.47" extent="1-16" drill="0.3302"/>
<via x="66.3956" y="77.4192" extent="1-16" drill="0.3302"/>
<via x="68.453" y="77.4192" extent="1-16" drill="0.3302"/>
<via x="70.5358" y="77.47" extent="1-16" drill="0.3302"/>
<via x="81.8388" y="77.3684" extent="1-16" drill="0.3302"/>
<via x="83.9216" y="77.3176" extent="1-16" drill="0.3302"/>
</signal>
<signal name="PGD">
<contactref element="PROGRAMMING" pad="4"/>
<contactref element="PIC16F1718" pad="25"/>
<wire x1="21.03" y1="50.8556" x2="21.03" y2="54.55" width="0.4064" layer="1"/>
<wire x1="21.03" y1="54.55" x2="22.9" y2="56.42" width="0.4064" layer="1"/>
<wire x1="22.9" y1="56.42" x2="22.9" y2="58.43" width="0.4064" layer="1"/>
<wire x1="22.9" y1="58.43" x2="22.89" y2="58.44" width="0.4064" layer="1"/>
</signal>
<signal name="PGC">
<contactref element="PROGRAMMING" pad="5"/>
<contactref element="PIC16F1718" pad="24"/>
<wire x1="21.6904" y1="50.8556" x2="21.6904" y2="52.5304" width="0.4064" layer="1"/>
<wire x1="21.6904" y1="52.5304" x2="25.46" y2="56.3" width="0.4064" layer="1"/>
<wire x1="25.46" y1="56.3" x2="25.46" y2="58.41" width="0.4064" layer="1"/>
<wire x1="25.46" y1="58.41" x2="25.43" y2="58.44" width="0.4064" layer="1"/>
</signal>
<signal name="LVP">
<contactref element="PROGRAMMING" pad="6"/>
</signal>
<signal name="N$3">
<contactref element="PIC16F1718" pad="6"/>
</signal>
<signal name="N$4">
<contactref element="PIC16F1718" pad="27"/>
</signal>
<signal name="N$5">
<contactref element="PIC16F1718" pad="28"/>
</signal>
<signal name="N$6">
<contactref element="PIC16F1718" pad="1"/>
</signal>
<signal name="N$8">
<contactref element="PIC16F1718" pad="3"/>
</signal>
<signal name="N$9">
<contactref element="PIC16F1718" pad="4"/>
</signal>
<signal name="N$12">
<contactref element="PIC16F1718" pad="29"/>
</signal>
<signal name="N$13">
<contactref element="PIC16F1718" pad="8"/>
</signal>
<signal name="N$14">
<contactref element="PIC16F1718" pad="9"/>
</signal>
<signal name="N$15">
<contactref element="PIC16F1718" pad="10"/>
</signal>
<signal name="N$16">
<contactref element="PIC16F1718" pad="11"/>
</signal>
<signal name="N$17">
<contactref element="PIC16F1718" pad="12"/>
</signal>
<signal name="N$18">
<contactref element="PIC16F1718" pad="13"/>
</signal>
<signal name="EN6">
<contactref element="PIC16F1718" pad="14"/>
<contactref element="U$5" pad="5"/>
<wire x1="22.9858" y1="45.0644" x2="22.9858" y2="44.6642" width="0.4064" layer="1"/>
<wire x1="22.9858" y1="44.6642" x2="23.59" y2="44.06" width="0.4064" layer="1"/>
<wire x1="23.59" y1="44.06" x2="26.28" y2="44.06" width="0.4064" layer="1"/>
<wire x1="26.28" y1="44.06" x2="28.91" y2="41.43" width="0.4064" layer="1"/>
<wire x1="28.91" y1="41.43" x2="49" y2="41.43" width="0.4064" layer="1"/>
<wire x1="49" y1="41.43" x2="48.99" y2="41.4" width="0.4064" layer="1"/>
<wire x1="45.8578" y1="5.291" x2="46.689" y2="5.291" width="0.4064" layer="1"/>
<wire x1="46.689" y1="5.291" x2="47.57" y2="4.55" width="0.4064" layer="1"/>
<via x="47.57" y="4.55" extent="1-16" drill="0.6" shape="square"/>
<wire x1="47.57" y1="4.55" x2="51.88" y2="4.53" width="0.4064" layer="16"/>
<wire x1="51.88" y1="4.53" x2="55.63" y2="8.28" width="0.4064" layer="16"/>
<wire x1="55.63" y1="8.28" x2="55.63" y2="41.06" width="0.4064" layer="16"/>
<wire x1="55.63" y1="41.06" x2="55.24" y2="41.43" width="0.4064" layer="16"/>
<via x="55.24" y="41.43" extent="1-16" drill="0.6" shape="square"/>
<wire x1="55.24" y1="41.43" x2="49.04" y2="41.43" width="0.4064" layer="1"/>
<wire x1="49.04" y1="41.43" x2="48.99" y2="41.4" width="0.4064" layer="1"/>
</signal>
<signal name="EN5">
<contactref element="PIC16F1718" pad="15"/>
<contactref element="U$7" pad="5"/>
<wire x1="23.9256" y1="46.0042" x2="26.1358" y2="46.0042" width="0.4064" layer="1"/>
<wire x1="26.1358" y1="46.0042" x2="29.14" y2="43" width="0.4064" layer="1"/>
<wire x1="29.14" y1="43" x2="47.81" y2="43" width="0.4064" layer="1"/>
<wire x1="45.8478" y1="18.659" x2="46.831" y2="18.659" width="0.4064" layer="1"/>
<wire x1="46.831" y1="18.659" x2="47.57" y2="18" width="0.4064" layer="1"/>
<via x="47.57" y="18" extent="1-16" drill="0.6" shape="square"/>
<wire x1="47.57" y1="18" x2="51.09" y2="18" width="0.4064" layer="16"/>
<wire x1="51.09" y1="18" x2="53.03" y2="19.94" width="0.4064" layer="16"/>
<wire x1="53.03" y1="19.94" x2="53.03" y2="42.32" width="0.4064" layer="16"/>
<wire x1="53.03" y1="42.32" x2="52.32" y2="43.01" width="0.4064" layer="16"/>
<via x="52.32" y="43.01" extent="1-16" drill="0.6" shape="square"/>
<wire x1="52.32" y1="43.01" x2="47.84" y2="43.01" width="0.4064" layer="1"/>
<wire x1="47.84" y1="43.01" x2="47.81" y2="43" width="0.4064" layer="1"/>
</signal>
<signal name="EN4">
<contactref element="PIC16F1718" pad="18"/>
<contactref element="U$6" pad="5"/>
<wire x1="23.9256" y1="47.96" x2="32.53" y2="47.96" width="0.4064" layer="1"/>
<wire x1="32.53" y1="47.96" x2="36.07" y2="44.42" width="0.4064" layer="1"/>
<wire x1="36.07" y1="44.42" x2="48.56" y2="44.42" width="0.4064" layer="1"/>
<wire x1="45.9018" y1="32.247" x2="47.023" y2="32.247" width="0.4064" layer="1"/>
<wire x1="47.023" y1="32.247" x2="47.61" y2="31.66" width="0.4064" layer="1"/>
<via x="47.61" y="31.66" extent="1-16" drill="0.6" shape="square"/>
<wire x1="47.61" y1="31.66" x2="49.7" y2="31.66" width="0.4064" layer="16"/>
<via x="48.56" y="44.42" extent="1-16" drill="0.6" shape="square"/>
<wire x1="48.56" y1="44.42" x2="48.8" y2="44.42" width="0.4064" layer="16"/>
<wire x1="48.8" y1="44.42" x2="49.94" y2="43.28" width="0.4064" layer="16"/>
<wire x1="49.94" y1="43.28" x2="49.94" y2="31.9" width="0.4064" layer="16"/>
<wire x1="49.94" y1="31.9" x2="49.7" y2="31.66" width="0.4064" layer="16"/>
</signal>
<signal name="EN3">
<contactref element="PIC16F1718" pad="19"/>
<contactref element="U$2" pad="5"/>
<wire x1="23.9256" y1="48.6204" x2="33.6096" y2="48.6204" width="0.4064" layer="1"/>
<wire x1="33.6096" y1="48.6204" x2="36.47" y2="45.76" width="0.4064" layer="1"/>
<wire x1="36.47" y1="45.76" x2="48.56" y2="45.76" width="0.4064" layer="1"/>
<wire x1="46.2278" y1="54.441" x2="47.039" y2="54.441" width="0.4064" layer="1"/>
<wire x1="47.039" y1="54.441" x2="48.11" y2="53.61" width="0.4064" layer="1"/>
<via x="48.11" y="53.61" extent="1-16" drill="0.6" shape="square"/>
<wire x1="48.11" y1="53.61" x2="48.85" y2="53.16" width="0.4064" layer="16"/>
<wire x1="48.85" y1="53.16" x2="49.97" y2="52.65" width="0.4064" layer="16"/>
<wire x1="49.97" y1="52.65" x2="49.97" y2="47.17" width="0.4064" layer="16"/>
<wire x1="49.97" y1="47.17" x2="48.56" y2="45.76" width="0.4064" layer="16"/>
<via x="48.56" y="45.76" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="EN2">
<contactref element="PIC16F1718" pad="20"/>
<contactref element="U$4" pad="5"/>
<wire x1="23.9256" y1="49.2554" x2="34.2646" y2="49.2554" width="0.4064" layer="1"/>
<wire x1="34.2646" y1="49.2554" x2="36.23" y2="47.29" width="0.4064" layer="1"/>
<wire x1="36.23" y1="47.29" x2="52.2" y2="47.29" width="0.4064" layer="1"/>
<wire x1="46.1578" y1="67.539" x2="47.131" y2="67.539" width="0.4064" layer="1"/>
<wire x1="47.131" y1="67.539" x2="47.95" y2="66.72" width="0.4064" layer="1"/>
<via x="47.95" y="66.72" extent="1-16" drill="0.6" shape="square"/>
<wire x1="47.95" y1="66.72" x2="47.89" y2="66.86" width="0.4064" layer="16"/>
<wire x1="47.89" y1="66.86" x2="52.65" y2="62.1" width="0.4064" layer="16"/>
<wire x1="52.65" y1="62.1" x2="52.65" y2="47.68" width="0.4064" layer="16"/>
<wire x1="52.65" y1="47.68" x2="52.2" y2="47.29" width="0.4064" layer="16"/>
<via x="52.2" y="47.29" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="EN1">
<contactref element="PIC16F1718" pad="21"/>
<contactref element="U$3" pad="5"/>
<wire x1="23.9256" y1="49.9158" x2="34.8242" y2="49.9158" width="0.4064" layer="1"/>
<wire x1="34.8242" y1="49.9158" x2="36.03" y2="48.71" width="0.4064" layer="1"/>
<wire x1="36.03" y1="48.71" x2="55.02" y2="48.71" width="0.4064" layer="1"/>
<wire x1="46.1318" y1="81.747" x2="46.983" y2="81.747" width="0.4064" layer="1"/>
<wire x1="46.983" y1="81.747" x2="47.87" y2="80.81" width="0.4064" layer="1"/>
<via x="47.87" y="80.81" extent="1-16" drill="0.6" shape="square"/>
<wire x1="47.87" y1="80.81" x2="55.53" y2="73.2" width="0.4064" layer="16"/>
<wire x1="55.53" y1="73.2" x2="55.53" y2="49.22" width="0.4064" layer="16"/>
<wire x1="55.53" y1="49.22" x2="55.02" y2="48.71" width="0.4064" layer="16"/>
<via x="55.02" y="48.71" extent="1-16" drill="0.6" shape="square"/>
</signal>
<signal name="N$25">
<contactref element="PIC16F1718" pad="22"/>
</signal>
<signal name="N$26">
<contactref element="PIC16F1718" pad="23"/>
</signal>
<signal name="N$29">
<contactref element="PIC16F1718" pad="7"/>
</signal>
<signal name="N$10">
<contactref element="PIN" pad="A"/>
<contactref element="R1" pad="1"/>
<wire x1="20.1042" y1="33.43" x2="22.62" y2="33.43" width="0.4064" layer="1"/>
<wire x1="22.62" y1="33.43" x2="22.1886" y2="33.4662" width="0.4064" layer="1"/>
</signal>
<signal name="N$11">
<contactref element="POUT" pad="A"/>
<contactref element="R2" pad="1"/>
<wire x1="22.53" y1="42.72" x2="22.1448" y2="42.3036" width="0.6096" layer="1"/>
<wire x1="20.2444" y1="42.2628" x2="22.104" y2="42.2628" width="0.4064" layer="1"/>
<wire x1="22.104" y1="42.2628" x2="22.1448" y2="42.3036" width="0.4064" layer="1"/>
</signal>
<signal name="MCLR'">
<contactref element="R4" pad="1"/>
<contactref element="PIC16F1718" pad="26"/>
<wire x1="20.3696" y1="50.8556" x2="20.3696" y2="51.4904" width="0.4064" layer="1"/>
<wire x1="20.3696" y1="51.4904" x2="19.89" y2="51.97" width="0.4064" layer="1"/>
<wire x1="19.89" y1="51.97" x2="16.71" y2="51.97" width="0.4064" layer="1"/>
<wire x1="16.71" y1="51.97" x2="16.7" y2="51.98" width="0.4064" layer="1"/>
</signal>
<signal name="VOUT_3">
<contactref element="R8" pad="2"/>
<contactref element="L1" pad="2"/>
<contactref element="R6" pad="2"/>
<contactref element="C7" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="65.0365" y="62.188"/>
<vertex x="65.0365" y="54.1235"/>
<vertex x="71.069" y="54.1235"/>
<vertex x="73.9265" y="56.981"/>
<vertex x="83.1975" y="56.981"/>
<vertex x="83.1975" y="62.188"/>
</polygon>
<wire x1="38.684" y1="60.943" x2="38.684" y2="61.934" width="0.254" layer="1"/>
<wire x1="38.684" y1="61.934" x2="39.065" y2="62.315" width="0.254" layer="1"/>
<wire x1="39.065" y1="62.315" x2="65.1" y2="62.315" width="0.254" layer="1"/>
<wire x1="65.1" y1="62.315" x2="65.608" y2="61.807" width="0.254" layer="1"/>
<wire x1="65.608" y1="61.807" x2="65.608" y2="61.299" width="0.254" layer="1"/>
<wire x1="65.608" y1="61.299" x2="67.386" y2="59.521" width="0.254" layer="1"/>
<wire x1="67.386" y1="59.521" x2="67.386" y2="57.009" width="0.254" layer="1"/>
<wire x1="67.386" y1="57.009" x2="67.414" y2="56.981" width="0.254" layer="1"/>
<polygon width="0.254" layer="16">
<vertex x="95.575" y="45.797"/>
<vertex x="95.885" y="62.586"/>
<vertex x="89.738" y="62.586"/>
<vertex x="88.341" y="62.569"/>
<vertex x="75.895" y="62.569"/>
<vertex x="75.895" y="55.457"/>
<vertex x="88.849" y="55.457"/>
<vertex x="88.779" y="46.037"/>
</polygon>
<via x="82.118" y="59.775" extent="1-16" drill="0.762"/>
<via x="82.118" y="61.426" extent="1-16" drill="0.762"/>
<wire x1="84.404" y1="61.106" x2="82.778" y2="61.578" width="0.254" layer="1"/>
<wire x1="82.778" y1="61.578" x2="82.118" y2="61.426" width="0.254" layer="1"/>
<via x="82.118" y="58.124" extent="1-16" drill="0.762"/>
<contactref element="J5" pad="1"/>
<contactref element="J3" pad="1"/>
<contactref element="J4" pad="1"/>
</signal>
<signal name="VCC">
<contactref element="U$2" pad="7"/>
<contactref element="C8" pad="2"/>
<contactref element="C5" pad="2"/>
<contactref element="C9" pad="2"/>
<contactref element="C10" pad="2"/>
<polygon width="0.4064" layer="16">
<vertex x="36.4615" y="56.0285"/>
<vertex x="49.479" y="56.0285"/>
<vertex x="49.479" y="59.2035"/>
<vertex x="36.4615" y="59.2035"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="47.574" y="55.711"/>
<vertex x="47.574" y="57.2985"/>
<vertex x="51.0665" y="57.2985"/>
<vertex x="51.0665" y="54.441"/>
<vertex x="48.844" y="54.441"/>
</polygon>
<via x="48.3465" y="56.7735" extent="1-16" drill="1"/>
<wire x1="46.2278" y1="56.981" x2="48.209" y2="56.981" width="0.254" layer="1"/>
<wire x1="48.209" y1="56.981" x2="48.3465" y2="56.7735" width="0.254" layer="1"/>
<contactref element="U$3" pad="7"/>
<contactref element="C14" pad="2"/>
<contactref element="C11" pad="2"/>
<contactref element="C15" pad="2"/>
<contactref element="C16" pad="2"/>
<polygon width="0.4064" layer="16">
<vertex x="36.3655" y="83.3345"/>
<vertex x="49.383" y="83.3345"/>
<vertex x="49.383" y="86.5095"/>
<vertex x="36.3655" y="86.5095"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="47.478" y="83.017"/>
<vertex x="47.478" y="84.6045"/>
<vertex x="50.9705" y="84.6045"/>
<vertex x="50.9705" y="81.747"/>
<vertex x="48.748" y="81.747"/>
</polygon>
<via x="48.3305" y="84.0705" extent="1-16" drill="1"/>
<wire x1="46.1318" y1="84.287" x2="48.113" y2="84.287" width="0.254" layer="1"/>
<wire x1="48.113" y1="84.287" x2="48.3305" y2="84.0705" width="0.254" layer="1"/>
<contactref element="U$4" pad="7"/>
<contactref element="C20" pad="2"/>
<contactref element="C17" pad="2"/>
<contactref element="C21" pad="2"/>
<contactref element="C22" pad="2"/>
<polygon width="0.4064" layer="16">
<vertex x="36.3915" y="69.1265"/>
<vertex x="49.409" y="69.1265"/>
<vertex x="49.409" y="72.3015"/>
<vertex x="36.3915" y="72.3015"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="47.504" y="68.809"/>
<vertex x="47.504" y="70.3965"/>
<vertex x="50.9965" y="70.3965"/>
<vertex x="50.9965" y="67.539"/>
<vertex x="48.774" y="67.539"/>
</polygon>
<via x="48.2865" y="69.9015" extent="1-16" drill="1"/>
<wire x1="46.1578" y1="70.079" x2="48.139" y2="70.079" width="0.254" layer="1"/>
<wire x1="48.139" y1="70.079" x2="48.2865" y2="69.9015" width="0.254" layer="1"/>
<contactref element="U$5" pad="7"/>
<contactref element="C26" pad="2"/>
<contactref element="C23" pad="2"/>
<contactref element="C27" pad="2"/>
<contactref element="C28" pad="2"/>
<polygon width="0.4064" layer="16">
<vertex x="36.0915" y="6.8785"/>
<vertex x="49.109" y="6.8785"/>
<vertex x="49.109" y="10.0535"/>
<vertex x="36.0915" y="10.0535"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="47.204" y="6.561"/>
<vertex x="47.204" y="8.1485"/>
<vertex x="50.6965" y="8.1485"/>
<vertex x="50.6965" y="5.291"/>
<vertex x="48.474" y="5.291"/>
</polygon>
<via x="47.9765" y="7.6535" extent="1-16" drill="1"/>
<wire x1="45.8578" y1="7.831" x2="47.839" y2="7.831" width="0.254" layer="1"/>
<wire x1="47.839" y1="7.831" x2="47.9765" y2="7.6535" width="0.254" layer="1"/>
<contactref element="U$6" pad="7"/>
<contactref element="C32" pad="2"/>
<contactref element="C29" pad="2"/>
<contactref element="C33" pad="2"/>
<contactref element="C34" pad="2"/>
<polygon width="0.4064" layer="16">
<vertex x="36.1355" y="33.8345"/>
<vertex x="49.153" y="33.8345"/>
<vertex x="49.153" y="37.0095"/>
<vertex x="36.1355" y="37.0095"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="47.248" y="33.517"/>
<vertex x="47.248" y="35.1045"/>
<vertex x="50.7405" y="35.1045"/>
<vertex x="50.7405" y="32.247"/>
<vertex x="48.518" y="32.247"/>
</polygon>
<via x="48.0605" y="34.6095" extent="1-16" drill="1"/>
<wire x1="45.9018" y1="34.787" x2="47.883" y2="34.787" width="0.254" layer="1"/>
<wire x1="47.883" y1="34.787" x2="48.0605" y2="34.6095" width="0.254" layer="1"/>
<contactref element="U$7" pad="7"/>
<contactref element="C38" pad="2"/>
<contactref element="C35" pad="2"/>
<contactref element="C39" pad="2"/>
<contactref element="C40" pad="2"/>
<polygon width="0.4064" layer="16">
<vertex x="36.0815" y="20.2465"/>
<vertex x="49.099" y="20.2465"/>
<vertex x="49.099" y="23.4215"/>
<vertex x="36.0815" y="23.4215"/>
</polygon>
<polygon width="0.4064" layer="1">
<vertex x="47.194" y="19.929"/>
<vertex x="47.194" y="21.5165"/>
<vertex x="50.6865" y="21.5165"/>
<vertex x="50.6865" y="18.659"/>
<vertex x="48.464" y="18.659"/>
</polygon>
<via x="47.9865" y="21.0415" extent="1-16" drill="1"/>
<wire x1="45.8478" y1="21.199" x2="47.829" y2="21.199" width="0.254" layer="1"/>
<wire x1="47.829" y1="21.199" x2="47.9865" y2="21.0415" width="0.254" layer="1"/>
<polygon width="0.4064" layer="16">
<vertex x="14.14" y="15.04"/>
<vertex x="5.56" y="23.62"/>
<vertex x="5.56" y="26.65"/>
<vertex x="6.1" y="27.19"/>
<vertex x="29.44" y="27.19"/>
<vertex x="31.15" y="28.9"/>
<vertex x="31.15" y="37.5"/>
<vertex x="31.21" y="37.56"/>
<vertex x="37.19" y="37.56"/>
<vertex x="37.81" y="36.94"/>
<vertex x="37.81" y="33.92"/>
<vertex x="37.75" y="33.86"/>
<vertex x="35.2" y="33.86"/>
<vertex x="35.2" y="24.31"/>
<vertex x="36.71" y="22.8"/>
<vertex x="36.99" y="22.8"/>
<vertex x="37.12" y="22.67"/>
<vertex x="37.12" y="20.19"/>
<vertex x="37.05" y="20.26"/>
<vertex x="35.27" y="20.26"/>
<vertex x="35.2" y="20.19"/>
<vertex x="35.2" y="11.19"/>
<vertex x="36.98" y="9.41"/>
<vertex x="37.26" y="9.41"/>
<vertex x="37.33" y="9.34"/>
<vertex x="37.33" y="7.21"/>
<vertex x="36.99" y="6.87"/>
<vertex x="34.59" y="6.87"/>
<vertex x="34.52" y="6.8"/>
<vertex x="34.52" y="0.89"/>
<vertex x="34.45" y="0.82"/>
<vertex x="27.93" y="0.82"/>
<vertex x="14.24" y="14.51"/>
<vertex x="14.24" y="14.93"/>
<vertex x="14.27" y="14.93"/>
</polygon>
<contactref element="PL2" pad="2"/>
<polygon width="0.4064" layer="16">
<vertex x="14.82" y="76.78"/>
<vertex x="28.41" y="90.37"/>
<vertex x="37.19" y="90.37"/>
<vertex x="37.74" y="89.82"/>
<vertex x="37.74" y="84.12"/>
<vertex x="36.99" y="83.37"/>
<vertex x="34.99" y="83.37"/>
<vertex x="34.93" y="83.31"/>
<vertex x="34.93" y="73"/>
<vertex x="35.89" y="72.04"/>
<vertex x="36.85" y="72.04"/>
<vertex x="37.12" y="71.77"/>
<vertex x="37.12" y="69.15"/>
<vertex x="36.85" y="68.88"/>
<vertex x="35.34" y="68.88"/>
<vertex x="35.2" y="68.74"/>
<vertex x="35.2" y="60.16"/>
<vertex x="36.51" y="58.85"/>
<vertex x="37.26" y="58.85"/>
<vertex x="37.4" y="58.71"/>
<vertex x="37.4" y="56.31"/>
<vertex x="37.13" y="56.04"/>
<vertex x="35.54" y="56.04"/>
<vertex x="35.41" y="55.91"/>
<vertex x="35.41" y="48.69"/>
<vertex x="35.41" y="37.01"/>
<vertex x="34.87" y="36.47"/>
<vertex x="31.01" y="36.47"/>
<vertex x="31.01" y="65.99"/>
<vertex x="30.73" y="66.27"/>
<vertex x="12.76" y="66.27"/>
<vertex x="12.69" y="66.34"/>
<vertex x="12.69" y="75.06"/>
<vertex x="14.41" y="76.78"/>
<vertex x="14.81" y="76.78"/>
</polygon>
<contactref element="PL1" pad="2"/>
<contactref element="R5" pad="1"/>
<contactref element="ADP7142" pad="1"/>
<contactref element="ADP7142" pad="3"/>
<contactref element="CIN" pad="1"/>
<contactref element="R1" pad="2"/>
<wire x1="21.91" y1="36.87" x2="21.89" y2="36.85" width="0.4064" layer="1"/>
<wire x1="21.89" y1="36.85" x2="21.89" y2="35.49" width="0.4064" layer="1"/>
<wire x1="21.89" y1="35.49" x2="21.85" y2="35.45" width="0.4064" layer="1"/>
<wire x1="21.85" y1="35.45" x2="20.19" y2="35.45" width="0.4064" layer="1"/>
<wire x1="20.19" y1="35.45" x2="20.01" y2="35.63" width="0.4064" layer="1"/>
<wire x1="20.01" y1="35.63" x2="20.01" y2="36.87" width="0.4064" layer="1"/>
<via x="22.09" y="26.34" extent="1-16" drill="1" shape="square"/>
<wire x1="13.95" y1="43.63" x2="13.19" y2="40.62" width="0.3048" layer="1"/>
<wire x1="13.19" y1="40.62" x2="13.19" y2="28.82" width="0.3048" layer="1"/>
<wire x1="13.19" y1="28.82" x2="15.67" y2="26.34" width="0.3048" layer="1"/>
<wire x1="15.67" y1="26.34" x2="22.09" y2="26.34" width="0.3048" layer="1"/>
<wire x1="17.7436" y1="38.0622" x2="18.1754" y2="36.6886" width="0.4064" layer="1"/>
<wire x1="18.1754" y1="36.6886" x2="18.1864" y2="36.6776" width="0.4064" layer="1"/>
<wire x1="18.1864" y1="36.6776" x2="19.8176" y2="36.6776" width="0.4064" layer="1"/>
<wire x1="19.8176" y1="36.6776" x2="20.01" y2="36.87" width="0.4064" layer="1"/>
<wire x1="18.2042" y1="33.43" x2="18.2042" y2="30.2258" width="0.4064" layer="1"/>
<wire x1="18.2042" y1="30.2258" x2="22.09" y2="26.34" width="0.4064" layer="1"/>
<wire x1="18.2042" y1="33.43" x2="18.2042" y2="36.6598" width="0.4064" layer="1"/>
<wire x1="18.2042" y1="36.6598" x2="18.1864" y2="36.6776" width="0.4064" layer="1"/>
</signal>
<signal name="VSNS_5">
<contactref element="R6" pad="1"/>
<contactref element="R7" pad="2"/>
<contactref element="U$2" pad="4"/>
<wire x1="38.684" y1="55.228" x2="38.684" y2="58.099" width="0.254" layer="1"/>
<wire x1="41.3002" y1="54.441" x2="39.471" y2="54.441" width="0.254" layer="1"/>
<wire x1="39.471" y1="54.441" x2="38.684" y2="55.228" width="0.254" layer="1"/>
</signal>
<signal name="N$28">
<contactref element="R8" pad="1"/>
<contactref element="LED4" pad="A"/>
<wire x1="84.404" y1="59.206" x2="84.404" y2="55.8735" width="0.254" layer="1"/>
</signal>
<signal name="BOOT_5">
<contactref element="U$2" pad="1"/>
<contactref element="C6" pad="1"/>
<wire x1="41.3002" y1="58.251" x2="41.3002" y2="58.5939" width="0.254" layer="1"/>
<wire x1="41.3002" y1="58.5939" x2="42.8623" y2="60.156" width="0.254" layer="1"/>
</signal>
<signal name="PH_5">
<contactref element="C6" pad="2"/>
<contactref element="U$2" pad="8"/>
<contactref element="D2" pad="3"/>
<contactref element="L1" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="44.0815" y="61.1085"/>
<vertex x="44.0815" y="58.886"/>
<vertex x="44.7165" y="58.886"/>
<vertex x="45.3515" y="58.251"/>
<vertex x="52.019" y="58.251"/>
<vertex x="55.194" y="53.806"/>
<vertex x="61.544" y="53.806"/>
<vertex x="61.544" y="61.1085"/>
</polygon>
</signal>
<signal name="VSNS_6">
<contactref element="R9" pad="1"/>
<contactref element="R10" pad="2"/>
<contactref element="U$3" pad="4"/>
<wire x1="38.588" y1="82.534" x2="38.588" y2="85.405" width="0.254" layer="1"/>
<wire x1="41.2042" y1="81.747" x2="39.375" y2="81.747" width="0.254" layer="1"/>
<wire x1="39.375" y1="81.747" x2="38.588" y2="82.534" width="0.254" layer="1"/>
</signal>
<signal name="N$30">
<contactref element="R11" pad="1"/>
<contactref element="LED1" pad="A"/>
<wire x1="84.308" y1="86.512" x2="84.308" y2="83.1795" width="0.254" layer="1"/>
</signal>
<signal name="BOOT_6">
<contactref element="U$3" pad="1"/>
<contactref element="C12" pad="1"/>
<wire x1="41.2042" y1="85.557" x2="41.2042" y2="85.8999" width="0.254" layer="1"/>
<wire x1="41.2042" y1="85.8999" x2="42.7663" y2="87.462" width="0.254" layer="1"/>
</signal>
<signal name="VOUT_1">
<contactref element="C13" pad="1"/>
<contactref element="R9" pad="2"/>
<contactref element="R11" pad="2"/>
<contactref element="L2" pad="2"/>
<polygon width="0.4064" layer="1">
<vertex x="64.9405" y="90.002"/>
<vertex x="64.9405" y="81.4295"/>
<vertex x="70.973" y="81.4295"/>
<vertex x="73.8305" y="84.287"/>
<vertex x="82.9745" y="84.287"/>
<vertex x="82.9745" y="90.002"/>
</polygon>
<wire x1="38.588" y1="88.249" x2="40.0235" y2="89.6845" width="0.254" layer="1"/>
<wire x1="40.0235" y1="89.6845" x2="63.988" y2="89.6845" width="0.254" layer="1"/>
<wire x1="63.988" y1="89.6845" x2="67.318" y2="86.3545" width="0.254" layer="1"/>
<wire x1="67.318" y1="86.3545" x2="67.318" y2="84.287" width="0.254" layer="1"/>
<wire x1="75.418" y1="87.4747" x2="76.8273" y2="88.884" width="0.254" layer="1"/>
<wire x1="76.8273" y1="88.884" x2="84.308" y2="88.412" width="0.254" layer="1"/>
<via x="82.149" y="88.097" extent="1-16" drill="0.762"/>
<via x="82.149" y="84.795" extent="1-16" drill="0.762"/>
<polygon width="0.254" layer="16">
<vertex x="95.639" y="76.511"/>
<vertex x="95.779" y="89.382"/>
<vertex x="85.324" y="89.367"/>
<vertex x="72.37" y="89.367"/>
<vertex x="72.37" y="82.763"/>
<vertex x="88.753" y="82.763"/>
<vertex x="88.613" y="76.511"/>
</polygon>
<via x="82.149" y="86.446" extent="1-16" drill="0.762"/>
<contactref element="J6" pad="3"/>
<contactref element="J6" pad="2"/>
</signal>
<signal name="PH_6">
<contactref element="C12" pad="2"/>
<contactref element="U$3" pad="8"/>
<contactref element="D1" pad="3"/>
<contactref element="L2" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="43.9855" y="88.4145"/>
<vertex x="43.9855" y="86.192"/>
<vertex x="44.6205" y="86.192"/>
<vertex x="45.2555" y="85.557"/>
<vertex x="51.923" y="85.557"/>
<vertex x="55.098" y="81.112"/>
<vertex x="61.448" y="81.112"/>
<vertex x="61.448" y="88.4145"/>
</polygon>
</signal>
<signal name="VSNS1_MOTOR">
<contactref element="R12" pad="1"/>
<contactref element="R13" pad="2"/>
<contactref element="U$4" pad="4"/>
<wire x1="38.614" y1="68.326" x2="38.614" y2="71.197" width="0.254" layer="1"/>
<wire x1="41.2302" y1="67.539" x2="39.401" y2="67.539" width="0.254" layer="1"/>
<wire x1="39.401" y1="67.539" x2="38.614" y2="68.326" width="0.254" layer="1"/>
</signal>
<signal name="N$31">
<contactref element="R14" pad="1"/>
<contactref element="LED2" pad="A"/>
<wire x1="84.334" y1="72.304" x2="84.334" y2="68.9715" width="0.254" layer="1"/>
</signal>
<signal name="BOOT_MOTOR">
<contactref element="U$4" pad="1"/>
<contactref element="C18" pad="1"/>
<wire x1="41.2302" y1="71.349" x2="41.2302" y2="71.6919" width="0.254" layer="1"/>
<wire x1="41.2302" y1="71.6919" x2="42.7923" y2="73.254" width="0.254" layer="1"/>
</signal>
<signal name="VOUT_2">
<contactref element="C19" pad="1"/>
<contactref element="R12" pad="2"/>
<contactref element="R14" pad="2"/>
<contactref element="L3" pad="2"/>
<polygon width="0.4064" layer="1">
<vertex x="64.9665" y="75.286"/>
<vertex x="64.9665" y="67.2215"/>
<vertex x="70.999" y="67.2215"/>
<vertex x="73.9835" y="68.682"/>
<vertex x="83.1275" y="68.682"/>
<vertex x="83.0005" y="75.286"/>
</polygon>
<wire x1="38.614" y1="74.041" x2="39.5415" y2="75.4765" width="0.254" layer="1"/>
<wire x1="39.5415" y1="75.4765" x2="63.506" y2="75.4765" width="0.254" layer="1"/>
<wire x1="63.506" y1="75.4765" x2="67.344" y2="72.1465" width="0.254" layer="1"/>
<wire x1="67.344" y1="72.1465" x2="67.344" y2="70.079" width="0.254" layer="1"/>
<wire x1="75.444" y1="73.2667" x2="76.8533" y2="74.676" width="0.254" layer="1"/>
<wire x1="76.8533" y1="74.676" x2="84.334" y2="74.204" width="0.254" layer="1"/>
<via x="82.175" y="71.095" extent="1-16" drill="0.762"/>
<via x="82.175" y="72.746" extent="1-16" drill="0.762"/>
<polygon width="0.254" layer="16">
<vertex x="95.766" y="63.856"/>
<vertex x="95.836" y="75.482"/>
<vertex x="72.085" y="75.482"/>
<vertex x="72.015" y="68.682"/>
<vertex x="88.779" y="68.682"/>
<vertex x="88.779" y="63.856"/>
</polygon>
<via x="82.175" y="69.444" extent="1-16" drill="0.762"/>
<contactref element="J2" pad="1"/>
<contactref element="J1" pad="1"/>
</signal>
<signal name="PH_MOTOR">
<contactref element="C18" pad="2"/>
<contactref element="U$4" pad="8"/>
<contactref element="D3" pad="3"/>
<contactref element="L3" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="44.0115" y="74.2065"/>
<vertex x="44.0115" y="71.984"/>
<vertex x="44.6465" y="71.984"/>
<vertex x="45.2815" y="71.349"/>
<vertex x="51.949" y="71.349"/>
<vertex x="55.124" y="66.904"/>
<vertex x="61.474" y="66.904"/>
<vertex x="61.474" y="74.2065"/>
</polygon>
</signal>
<signal name="VOUT_6">
<contactref element="R17" pad="2"/>
<contactref element="L4" pad="2"/>
<contactref element="R15" pad="2"/>
<contactref element="C25" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="64.6665" y="13.038"/>
<vertex x="64.6665" y="4.9735"/>
<vertex x="70.699" y="4.9735"/>
<vertex x="73.5565" y="7.831"/>
<vertex x="82.8275" y="7.831"/>
<vertex x="82.8275" y="13.038"/>
</polygon>
<wire x1="38.314" y1="11.793" x2="38.314" y2="12.784" width="0.254" layer="1"/>
<wire x1="38.314" y1="12.784" x2="38.695" y2="13.165" width="0.254" layer="1"/>
<wire x1="38.695" y1="13.165" x2="64.73" y2="13.165" width="0.254" layer="1"/>
<wire x1="64.73" y1="13.165" x2="65.238" y2="12.657" width="0.254" layer="1"/>
<wire x1="65.238" y1="12.657" x2="65.238" y2="12.149" width="0.254" layer="1"/>
<wire x1="65.238" y1="12.149" x2="67.016" y2="10.371" width="0.254" layer="1"/>
<wire x1="67.016" y1="10.371" x2="67.016" y2="7.859" width="0.254" layer="1"/>
<wire x1="67.016" y1="7.859" x2="67.044" y2="7.831" width="0.254" layer="1"/>
<polygon width="0.254" layer="16">
<vertex x="95.845" y="0.857"/>
<vertex x="95.975" y="13.396"/>
<vertex x="89.368" y="13.376"/>
<vertex x="87.971" y="13.419"/>
<vertex x="75.525" y="13.419"/>
<vertex x="75.525" y="6.307"/>
<vertex x="88.479" y="6.307"/>
<vertex x="88.349" y="0.837"/>
</polygon>
<via x="81.748" y="10.625" extent="1-16" drill="0.762"/>
<via x="81.748" y="12.276" extent="1-16" drill="0.762"/>
<wire x1="84.034" y1="11.956" x2="82.408" y2="12.428" width="0.254" layer="1"/>
<wire x1="82.408" y1="12.428" x2="81.748" y2="12.276" width="0.254" layer="1"/>
<via x="81.748" y="8.974" extent="1-16" drill="0.762"/>
<contactref element="J12" pad="3"/>
<contactref element="J12" pad="2"/>
</signal>
<signal name="VSNS_1'">
<contactref element="R15" pad="1"/>
<contactref element="R16" pad="2"/>
<contactref element="U$5" pad="4"/>
<wire x1="38.314" y1="6.078" x2="38.314" y2="8.949" width="0.254" layer="1"/>
<wire x1="40.9302" y1="5.291" x2="39.101" y2="5.291" width="0.254" layer="1"/>
<wire x1="39.101" y1="5.291" x2="38.314" y2="6.078" width="0.254" layer="1"/>
</signal>
<signal name="N$32'">
<contactref element="R17" pad="1"/>
<contactref element="LED3" pad="A"/>
<wire x1="84.034" y1="10.056" x2="84.034" y2="6.7235" width="0.254" layer="1"/>
</signal>
<signal name="BOOT_5'">
<contactref element="U$5" pad="1"/>
<contactref element="C24" pad="1"/>
<wire x1="40.9302" y1="9.101" x2="40.9302" y2="9.4439" width="0.254" layer="1"/>
<wire x1="40.9302" y1="9.4439" x2="42.4923" y2="11.006" width="0.254" layer="1"/>
</signal>
<signal name="PH_5'">
<contactref element="C24" pad="2"/>
<contactref element="U$5" pad="8"/>
<contactref element="D4" pad="3"/>
<contactref element="L4" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="43.7115" y="11.9585"/>
<vertex x="43.7115" y="9.736"/>
<vertex x="44.3465" y="9.736"/>
<vertex x="44.9815" y="9.101"/>
<vertex x="51.649" y="9.101"/>
<vertex x="54.824" y="4.656"/>
<vertex x="61.174" y="4.656"/>
<vertex x="61.174" y="11.9585"/>
</polygon>
</signal>
<signal name="VSNS_2'">
<contactref element="R18" pad="1"/>
<contactref element="R19" pad="2"/>
<contactref element="U$6" pad="4"/>
<wire x1="38.358" y1="33.034" x2="38.358" y2="35.905" width="0.254" layer="1"/>
<wire x1="40.9742" y1="32.247" x2="39.145" y2="32.247" width="0.254" layer="1"/>
<wire x1="39.145" y1="32.247" x2="38.358" y2="33.034" width="0.254" layer="1"/>
</signal>
<signal name="N$33'">
<contactref element="R20" pad="1"/>
<contactref element="LED5" pad="A"/>
<wire x1="84.078" y1="37.012" x2="84.078" y2="33.6795" width="0.254" layer="1"/>
</signal>
<signal name="BOOT_6'">
<contactref element="U$6" pad="1"/>
<contactref element="C30" pad="1"/>
<wire x1="40.9742" y1="36.057" x2="40.9742" y2="36.3999" width="0.254" layer="1"/>
<wire x1="40.9742" y1="36.3999" x2="42.5363" y2="37.962" width="0.254" layer="1"/>
</signal>
<signal name="VOUT_4">
<contactref element="C31" pad="1"/>
<contactref element="R18" pad="2"/>
<contactref element="R20" pad="2"/>
<contactref element="L5" pad="2"/>
<polygon width="0.4064" layer="1">
<vertex x="64.7105" y="40.502"/>
<vertex x="64.7105" y="31.9295"/>
<vertex x="70.743" y="31.9295"/>
<vertex x="73.6005" y="34.787"/>
<vertex x="82.7445" y="34.787"/>
<vertex x="82.7445" y="40.502"/>
</polygon>
<wire x1="38.358" y1="38.749" x2="39.7935" y2="40.1845" width="0.254" layer="1"/>
<wire x1="39.7935" y1="40.1845" x2="63.758" y2="40.1845" width="0.254" layer="1"/>
<wire x1="63.758" y1="40.1845" x2="67.088" y2="36.8545" width="0.254" layer="1"/>
<wire x1="67.088" y1="36.8545" x2="67.088" y2="34.787" width="0.254" layer="1"/>
<wire x1="75.188" y1="37.9747" x2="76.5973" y2="39.384" width="0.254" layer="1"/>
<wire x1="76.5973" y1="39.384" x2="84.078" y2="38.912" width="0.254" layer="1"/>
<via x="81.919" y="38.597" extent="1-16" drill="0.762"/>
<via x="81.919" y="35.295" extent="1-16" drill="0.762"/>
<polygon width="0.254" layer="16">
<vertex x="95.699" y="27.551"/>
<vertex x="95.689" y="44.402"/>
<vertex x="85.014" y="44.562"/>
<vertex x="85.094" y="39.867"/>
<vertex x="72.14" y="39.867"/>
<vertex x="72.14" y="33.263"/>
<vertex x="88.523" y="33.263"/>
<vertex x="88.383" y="27.551"/>
</polygon>
<via x="81.919" y="36.946" extent="1-16" drill="0.762"/>
<contactref element="J8" pad="1"/>
<contactref element="J14" pad="1"/>
<contactref element="J7" pad="1"/>
</signal>
<signal name="PH_6'">
<contactref element="C30" pad="2"/>
<contactref element="U$6" pad="8"/>
<contactref element="D5" pad="3"/>
<contactref element="L5" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="43.7555" y="38.9145"/>
<vertex x="43.7555" y="36.692"/>
<vertex x="44.3905" y="36.692"/>
<vertex x="45.0255" y="36.057"/>
<vertex x="51.693" y="36.057"/>
<vertex x="54.868" y="31.612"/>
<vertex x="61.218" y="31.612"/>
<vertex x="61.218" y="38.9145"/>
</polygon>
</signal>
<signal name="VSNS1_MOTOR1'">
<contactref element="R21" pad="1"/>
<contactref element="R22" pad="2"/>
<contactref element="U$7" pad="4"/>
<wire x1="38.304" y1="19.446" x2="38.304" y2="22.317" width="0.254" layer="1"/>
<wire x1="40.9202" y1="18.659" x2="39.091" y2="18.659" width="0.254" layer="1"/>
<wire x1="39.091" y1="18.659" x2="38.304" y2="19.446" width="0.254" layer="1"/>
</signal>
<signal name="N$34'">
<contactref element="R23" pad="1"/>
<contactref element="LED6" pad="A"/>
<wire x1="84.024" y1="23.424" x2="84.024" y2="20.0915" width="0.254" layer="1"/>
</signal>
<signal name="BOOT_MOTOR'">
<contactref element="U$7" pad="1"/>
<contactref element="C36" pad="1"/>
<wire x1="40.9202" y1="22.469" x2="40.9202" y2="22.8119" width="0.254" layer="1"/>
<wire x1="40.9202" y1="22.8119" x2="42.4823" y2="24.374" width="0.254" layer="1"/>
</signal>
<signal name="VOUT_5">
<contactref element="C37" pad="1"/>
<contactref element="R21" pad="2"/>
<contactref element="R23" pad="2"/>
<contactref element="L6" pad="2"/>
<polygon width="0.4064" layer="1">
<vertex x="64.6565" y="26.406"/>
<vertex x="64.6565" y="18.3415"/>
<vertex x="70.689" y="18.3415"/>
<vertex x="73.6735" y="19.802"/>
<vertex x="82.8175" y="19.802"/>
<vertex x="82.6905" y="26.406"/>
</polygon>
<wire x1="38.304" y1="25.161" x2="39.2315" y2="26.5965" width="0.254" layer="1"/>
<wire x1="39.2315" y1="26.5965" x2="63.196" y2="26.5965" width="0.254" layer="1"/>
<wire x1="63.196" y1="26.5965" x2="67.034" y2="23.2665" width="0.254" layer="1"/>
<wire x1="67.034" y1="23.2665" x2="67.034" y2="21.199" width="0.254" layer="1"/>
<wire x1="75.134" y1="24.3867" x2="76.5433" y2="25.796" width="0.254" layer="1"/>
<wire x1="76.5433" y1="25.796" x2="84.024" y2="25.324" width="0.254" layer="1"/>
<via x="81.865" y="22.215" extent="1-16" drill="0.762"/>
<via x="81.865" y="23.866" extent="1-16" drill="0.762"/>
<polygon width="0.254" layer="16">
<vertex x="95.726" y="14.976"/>
<vertex x="95.646" y="25.912"/>
<vertex x="71.625" y="25.912"/>
<vertex x="71.705" y="19.802"/>
<vertex x="88.469" y="19.802"/>
<vertex x="88.469" y="14.976"/>
</polygon>
<via x="81.865" y="20.564" extent="1-16" drill="0.762"/>
<contactref element="J9" pad="1"/>
<contactref element="J10" pad="1"/>
</signal>
<signal name="PH_MOTOR'">
<contactref element="C36" pad="2"/>
<contactref element="U$7" pad="8"/>
<contactref element="D6" pad="3"/>
<contactref element="L6" pad="1"/>
<polygon width="0.4064" layer="1">
<vertex x="43.7015" y="25.3265"/>
<vertex x="43.7015" y="23.104"/>
<vertex x="44.3365" y="23.104"/>
<vertex x="44.9715" y="22.469"/>
<vertex x="51.639" y="22.469"/>
<vertex x="54.814" y="18.024"/>
<vertex x="61.164" y="18.024"/>
<vertex x="61.164" y="25.3265"/>
</polygon>
</signal>
<signal name="ADC">
<contactref element="R24" pad="1"/>
<contactref element="R5" pad="2"/>
<contactref element="PIC16F1718" pad="2"/>
<wire x1="18.1344" y1="49.2554" x2="18.099" y2="49.22" width="0.3048" layer="1"/>
<wire x1="18.099" y1="49.22" x2="15.99" y2="49.22" width="0.3048" layer="1"/>
<wire x1="15.99" y1="49.22" x2="14.58" y2="47.81" width="0.3048" layer="1"/>
<wire x1="14.58" y1="47.81" x2="13.99" y2="47.81" width="0.3048" layer="1"/>
<wire x1="13.95" y1="45.53" x2="13.95" y2="47.77" width="0.4064" layer="1"/>
<wire x1="13.95" y1="47.77" x2="13.99" y2="47.81" width="0.4064" layer="1"/>
</signal>
</signals>
</board>
</drawing>
</eagle>


text:
using Shouldly;
using Specify.Samples.Domain.Atm;
using TestStack.BDDfy;

namespace Specify.Samples.Specs.ATM
{
    public class AccountHasInsufficientFunds : ScenarioFor<Atm, AccountHolderWithdrawsCashStory>
    {
        private Card _card;

        // You can override step text using executable attributes
        [Given("Given the Account Balance is $10")]
        void GivenTheAccountBalanceIs10()
        {
            _card = new Card(true, 10);
        }

        void And_given_the_Card_is_valid()
        {
        }

        void AndGivenTheMachineContainsEnoughMoney()
        {
            SUT = new Atm(100);
        }

        [When("When the Account Holder requests $20")]
        void WhenTheAccountHolderRequests20()
        {
            SUT.RequestMoney(_card, 20);
        }

        void Then_the_ATM_should_not_dispense_any_Money()
        {
            SUT.DispenseValue.ShouldBe(0);
        }

        void And_the_ATM_should_say_there_are_Insufficient_Funds()
        {
            SUT.Message.ShouldBe(DisplayMessage.InsufficientFunds);
        }

        [AndThen("And the Account Balance should be $20")]
        void AndTheAccountBalanceShouldBe20()
        {
            _card.AccountBalance.ShouldBe(10);
        }

        void And_the_Card_should_be_returned()
        {
            SUT.CardIsRetained.ShouldBe(false);
        }
    }
}

license: MIT

repository: mwhelan/Specify

license_type: permissive

repo_name: mwhelan/Specify

branch_name: refs/heads/master

gha_license_id: MIT

gha_language: C#

extension: cs


text:
SUMMARY = "WiFi firmware files for TechNexion QCA module"
SECTION = "kernel"
LICENSE = "Proprietary"
LICENSE_FLAGS = "commercial_qca"
LIC_FILES_CHKSUM = "\
    file://qca9377/CadenceLicense.txt;md5=2d7b27d27db072fdc7383e37e76b848f \
"

SRC_URI += " \
    file://qca9377/CadenceLicense.txt \
    file://qca9377/bdwlan30.bin \
    file://qca9377/otp30.bin \
    file://qca9377/qwlan30.bin \
    file://qca9377/utf30.bin \
    file://qca6174/CadenceLicense.txt \
    file://qca6174/bdwlan30.bin \
    file://qca6174/otp30.bin \
    file://qca6174/qwlan30.bin \
    file://qca6174/utf30.bin \
    file://wlan/cfg.dat \
    file://wlan/qca9377/qcom_cfg.ini \
    file://wlan/qca6174/qcom_cfg.ini \
    file://qca/notice.txt \
    file://qca/nvm_tlv_3.2.bin \
    file://qca/rampatch_tlv_3.2.tlv \
"

S = "${WORKDIR}"

# Gitlab Personal Access Token: e.g. SbtQ_mC4fvJRA88_9jB7
OVERRIDES_append = "${@'' if (d.getVar('PA_TOKEN', True) is None or len(d.getVar('PA_TOKEN', True)) == 0) else ':token'}"
TOKEN = "${@'' if (d.getVar('PA_TOKEN', True) is None or len(d.getVar('PA_TOKEN', True)) == 0) else '%s' % d.getVar('PA_TOKEN', True)}"
SRCSERVER_token = "git://gitlab.com/technexion-imx/qca_firmware.git"
SRCOPTION_token = ";protocol=https;user=oauth2:${TOKEN}"
SRCBRANCH_token = "caf-wlan/CNSS.LEA.NRT_3.0"
SRCREV_token = "${AUTOREV}"
SRC_URI_token = "${SRCSERVER};branch=${SRCBRANCH}${SRCOPTION}"
S_token = "${WORKDIR}/git"

python do_pre_fetch() {
    # check for existing qca firmware files and use them if available
    src_uri = (d.getVar('SRC_URI') or "").split()
    if all(('file://' in p and os.path.exists(p.replace('file://', d.getVar('FILE_DIRNAME') + '/files/'))) for p in src_uri):
        bb.warn("Using existing QCA Firmware from %s (Please contact TechNexion: sales@technexion.com for newer QCA firmware files)" % (d.getVar('FILE_DIRNAME') + '/files/'))
        return
    # if token has been declared, use token to get latest qca firmware files
    token = d.getVar('PA_TOKEN')
    if token is None or len(token) == 0:
        bb.error("Download QCA Firmware requires personal access token (Please contact TechNexion: sales@technexion.com)")
}
addtask pre_fetch before do_fetch

do_install() {
    install -d ${D}/lib/firmware/qca9377/
    install -m 0755 ${S}/qca9377/bdwlan30.bin ${D}/lib/firmware/qca9377/
    install -m 0755 ${S}/qca9377/otp30.bin ${D}/lib/firmware/qca9377/
    install -m 0755 ${S}/qca9377/qwlan30.bin ${D}/lib/firmware/qca9377/
    install -m 0755 ${S}/qca9377/utf30.bin ${D}/lib/firmware/qca9377/
    install -d ${D}/lib/firmware/qca6174/
    install -m 0755 ${S}/qca6174/bdwlan30.bin ${D}/lib/firmware/qca6174/
    install -m 0755 ${S}/qca6174/otp30.bin ${D}/lib/firmware/qca6174/
    install -m 0755 ${S}/qca6174/qwlan30.bin ${D}/lib/firmware/qca6174/
    install -m 0755 ${S}/qca6174/utf30.bin ${D}/lib/firmware/qca6174/
    install -d ${D}/lib/firmware/wlan/qca9377/
    install -d ${D}/lib/firmware/wlan/qca6174/
    install -m 0755 ${S}/wlan/cfg.dat ${D}/lib/firmware/wlan/
    install -m 0755 ${S}/wlan/qca9377/qcom_cfg.ini ${D}/lib/firmware/wlan/qca9377/
    install -m 0755 ${S}/wlan/qca6174/qcom_cfg.ini ${D}/lib/firmware/wlan/qca6174/
    install -d ${D}/lib/firmware/qca
    install -m 0755 ${S}/qca/nvm_tlv_3.2.bin ${D}/lib/firmware/qca
    install -m 0755 ${S}/qca/rampatch_tlv_3.2.tlv ${D}/lib/firmware/qca
}

FILES_${PN}-dbg += "/lib/firmware/.debug"
FILES_${PN} += "/lib/firmware/"

COMPATIBLE_MACHINE = "(mx6|mx6ul|mx7|mx8)"

repository: sshyran/meta-tn-imx-bsp-TechNexion

repo_name: sshyran/meta-tn-imx-bsp-TechNexion

extension: bb


text:
package case_access

type RequestCreate2 struct {
	Hello []struct{
		UserRefId int `json:"user_id" validate:"required"`
		CaseRefId int `json:"case_id" validate:"required"`
	} `json:"hello" validate:"required"`
}

// RequestCreate
type RequestCreate struct {
	UserRefId int `json:"user_id" validate:"required"`
	CaseRefId int `json:"case_id" validate:"required"`
}

type RequestDelete struct {
	Id int `json:"id" validate:"required"`
}

type AssigneeDetails struct {
	UserType       string
	OrganizationId int
}

extension: go


text:
//sketch 06-08

int outputPin = 3;

void setup()
{
  pinMode(outputPin, OUTPUT);
  Serial.begin(115200);
  while (!Serial){} //If using an Arduino Leonardo or equivalent, wait until the serial port
                    //is ready so that the following statement is not missed by the Serial Monitor

  /////////////////////////////////////////////////////////////////////////////////
  //USER *MUST* INPUT A CHAR ON THE SERIAL PORT BEFORE THE PROGRAM WILL BEGIN!!!!//
  /////////////////////////////////////////////////////////////////////////////////

  //wait for the user to input any character to begin the program
  while (Serial.available()<=0){}
  //flush the serial input buffer of the just entered character(s)
  while (Serial.available()>0){
    Serial.read();
  }
  Serial.println("Enter Volts 0 to 5");
}

void loop()
{
  if (Serial.available() > 0)
  {
//    char ch = Serial.read();
//    int volts = (ch - '0') * 51;
//    analogWrite(outputPin, volts);

    float V_des = Serial.parseFloat(); //V
    uint8_t command = V_des*51.0; //V; truncated to uint8_t
    float V_com = command*5.0/255.0; //Voltage actually commanded, based on truncation above, & resolution of analogWrite
    Serial.print("V_des = ");
    Serial.print(V_des,4);
    Serial.print(", PWM command = ");
    Serial.print(command);
    Serial.print(" or ");
    Serial.print(command,4); //<--------NOTE: THIS PRODUCES STRANGE OUTPUT, W/4 #S INSTEAD OF 3 AT TIMES (EX: 34-->344 OR SOMETHING)
                             //I *THINK* that what *may* be happening, is when I specify the precision, it forces Serial.print to interpret
                             //the "command" value as a 4-byte float instead of a 1-byte uint8_t.
    Serial.print(", V_commanded = ");
    Serial.println(V_com,4);
    analogWrite(outputPin,command);
  }
}

extension: ino


text:
using Headstart.Models;
using Headstart.Models.Headstart;
using Microsoft.AspNetCore.Mvc;
using OrderCloud.SDK;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Headstart.Common.Constants
{
    class OrderSubmitEmailConstants
    {
        public enum OrderEmailTypes
        {
            OrderSubmitted,
            QuoteOrderSubmitted,
            RequiresApproval,
            RequestedApproval,
            Approved,
            Declined
        }

        public static EmailDisplayText GetOrderSubmitText(string orderID, string firstName, string lastName, VerifiedUserType verifiedUser)
        {
            var dictionary = new Dictionary<VerifiedUserType, EmailDisplayText>()
            {
                {VerifiedUserType.buyer, new EmailDisplayText()
                {
                    EmailSubject = $"Your order has been submitted {orderID}",
                    DynamicText = "Thank you for your order.",
                    DynamicText2 = "We are getting your order ready to be shipped. You will be notified when it has been sent. Your order contains the folowing items."
                } },
                {VerifiedUserType.admin, new EmailDisplayText()
                {
                    EmailSubject = $"An order has been submitted {orderID}",
                    DynamicText = $"{firstName} {lastName} has placed an order.",
                    DynamicText2 = "The order contains the following items:"
                } },
                {VerifiedUserType.supplier, new EmailDisplayText()
                {
                    EmailSubject = $"An order has been submitted {orderID}",
                    DynamicText = $"{firstName} {lastName} has placed an order.",
                    DynamicText2 = "The order contains the following items:"
                } },
            };
            return dictionary[verifiedUser];
        }
        public static EmailDisplayText GetQuoteOrderSubmitText(VerifiedUserType verifiedUser)
        {
            var dictionary = new Dictionary<VerifiedUserType, EmailDisplayText>()
            {
                {VerifiedUserType.buyer, new EmailDisplayText()
                {
                    EmailSubject = "Your quote has been submitted",
                    DynamicText = "Your quote has been submitted.",
                    DynamicText2 = "The vendor for this product will contact your with more information on your quote request."
                } },
                {VerifiedUserType.supplier, new EmailDisplayText()
                {
                    EmailSubject = "A quote has been requested",
                    DynamicText = "A quote has been requested for one of your products",
                    DynamicText2 = "Please reach out to the customer directly to give them more information about their quote."
                } },
            };
            return dictionary[verifiedUser];
        }
        public static EmailDisplayText GetOrderRequiresApprovalText()
        {
            return new EmailDisplayText()
            {
                EmailSubject = "An order requires your approval",
                DynamicText = "An order requires your approval. Please review the order and approve or decline the order.",
                DynamicText2 = "The order for approval contains the following items"
            };
        }
        public static EmailDisplayText GetRequestedApprovalText()
        {
            return new EmailDisplayText()
            {
                EmailSubject = "Your order was sent for approval",
                DynamicText = "Your order was sent for approval. You will receive an email when the order is approved.",
                DynamicText2 = "Your order awaiting approval contains the following items"
            };
        }
        public static EmailDisplayText GetOrderApprovedText()
        {
            return new EmailDisplayText()
            {
                EmailSubject = "Your order was approved",
                DynamicText = "Your order was approved and submitted.",
                DynamicText2 = "Your order contains the following items"
            };
        }
        public static EmailDisplayText GetOrderDeclinedText()
        {
            return new EmailDisplayText()
            {
                EmailSubject = "Your order was declined",
                DynamicText = "Your order was declined. Please review the order and re-submit the order again.",
                DynamicText2 = "Your declined order contains the following items"
            };
        }
    }
}

branch_name: refs/heads/development


text:
/*
    Plugin-SDK (Grand Theft Auto 3) header file
    Authors: GTA Community. See more here
    https://github.com/DK22Pac/plugin-sdk
    Do not delete this comment block. Respect others' work!
*/
#include "PluginBase.h"

namespace plugin {

CTOR_META_BEGIN(CAnimBlendSequence)
static int address;
static int global_address;
static const int id = 0x4022D0;
static const bool is_virtual = false;
static const int vtable_index = -1;
using mv_addresses_t = MvAddresses<0x4022D0, 0x4022D0, 0x4022D0>;
// total references count: 10en (1), 11en (1), steam (1)
using refs_t = RefList<0x403D2F,100,2,0,1, 0x403D2F,110,2,0,1, 0x403D2F,120,2,0,1>;
using def_t = CAnimBlendSequence *(CAnimBlendSequence *);
static const int cb_priority = PRIORITY_BEFORE;
using calling_convention_t = CallingConventions::Thiscall;
using args_t = ArgPick<ArgTypes<CAnimBlendSequence *>, 0>;
META_END

DTOR_META_BEGIN(CAnimBlendSequence)
static int address;
static int global_address;
static const int id = 0x402300;
static const bool is_virtual = false;
static const int vtable_index = -1;
using mv_addresses_t = MvAddresses<0x402300, 0x402300, 0x402300>;
// total references count: 10en (4), 11en (4), steam (4)
using refs_t = RefList<0x402493,100,0,0x402470,1, 0x401ABB,100,2,0,1, 0x402484,100,2,0,1, 0x403D2A,100,2,0,1, 0x402493,110,0,0x402470,1, 0x401ABB,110,2,0,1, 0x402484,110,2,0,1, 0x403D2A,110,2,0,1, 0x402493,120,0,0x402470,1, 0x401ABB,120,2,0,1, 0x402484,120,2,0,1, 0x403D2A,120,2,0,1>;
using def_t = void(CAnimBlendSequence *);
static const int cb_priority = PRIORITY_BEFORE;
using calling_convention_t = CallingConventions::Thiscall;
using args_t = ArgPick<ArgTypes<CAnimBlendSequence *>, 0>;
META_END

META_BEGIN(CAnimBlendSequence::SetName)
static int address;
static int global_address;
static const int id = 0x402330;
static const bool is_virtual = false;
static const int vtable_index = -1;
using mv_addresses_t = MvAddresses<0x402330, 0x402330, 0x402330>;
// total references count: 10en (1), 11en (1), steam (1)
using refs_t = RefList<0x403DF3,100,0,0x403A40,1, 0x403DF3,110,0,0x403A40,1, 0x403DF3,120,0,0x403A40,1>;
using def_t = void(CAnimBlendSequence *, char const *);
static const int cb_priority = PRIORITY_BEFORE;
using calling_convention_t = CallingConventions::Thiscall;
using args_t = ArgPick<ArgTypes<CAnimBlendSequence *,char const *>, 0,1>;
META_END

META_BEGIN(CAnimBlendSequence::SetNumFrames)
static int address;
static int global_address;
static const int id = 0x402350;
static const bool is_virtual = false;
static const int vtable_index = -1;
using mv_addresses_t = MvAddresses<0x402350, 0x402350, 0x402350>;
// total references count: 10en (2), 11en (2), steam (2)
using refs_t = RefList<0x403E5F,100,0,0x403A40,1, 0x403EDA,100,0,0x403A40,2, 0x403E5F,110,0,0x403A40,1, 0x403EDA,110,0,0x403A40,2, 0x403E5F,120,0,0x403A40,1, 0x403EDA,120,0,0x403A40,2>;
using def_t = void(CAnimBlendSequence *, int, bool);
static const int cb_priority = PRIORITY_BEFORE;
using calling_convention_t = CallingConventions::Thiscall;
using args_t = ArgPick<ArgTypes<CAnimBlendSequence *,int,bool>, 0,1,2>;
META_END

META_BEGIN(CAnimBlendSequence::RemoveQuaternionFlips)
static int address;
static int global_address;
static const int id = 0x4023A0;
static const bool is_virtual = false;
static const int vtable_index = -1;
using mv_addresses_t = MvAddresses<0x4023A0, 0x4023A0, 0x4023A0>;
// total references count: 10en (1), 11en (1), steam (1)
using refs_t = RefList<0x401A95,100,0,0x401A80,1, 0x401A95,110,0,0x401A80,1, 0x401A95,120,0,0x401A80,1>;
using def_t = void(CAnimBlendSequence *);
static const int cb_priority = PRIORITY_BEFORE;
using calling_convention_t = CallingConventions::Thiscall;
using args_t = ArgPick<ArgTypes<CAnimBlendSequence *>, 0>;
META_END

DEL_DTOR_META_BEGIN(CAnimBlendSequence)
static int address;
static int global_address;
static const int id = 0x402470;
static const bool is_virtual = true;
static const int vtable_index = 0;
using mv_addresses_t = MvAddresses<0x402470, 0x402470, 0x402470>;
// total references count: 10en (1), 11en (1), steam (1)
using refs_t = RefList<0x5EA060,100,2,0x5EA060,1, 0x5EA060,110,2,0x5EA060,1, 0x5F7060,120,2,0x5F7060,1>;
using def_t = void(CAnimBlendSequence *, int);
static const int cb_priority = PRIORITY_BEFORE;
using calling_convention_t = CallingConventions::Thiscall;
using args_t = ArgPick<ArgTypes<CAnimBlendSequence *,int>, 0,1>;
META_END

template<>
struct stack_object<CAnimBlendSequence> : stack_object_no_default<CAnimBlendSequence> {
    SUPPORTED_10EN_11EN_STEAM stack_object() {
        plugin::CallMethodDynGlobal<CAnimBlendSequence *>(ctor_gaddr(CAnimBlendSequence), reinterpret_cast<CAnimBlendSequence *>(objBuff));
    }
    SUPPORTED_10EN_11EN_STEAM ~stack_object() {
        plugin::CallMethodDynGlobal<CAnimBlendSequence *>(dtor_gaddr(CAnimBlendSequence), reinterpret_cast<CAnimBlendSequence *>(objBuff));
    }
};

template <>
SUPPORTED_10EN_11EN_STEAM inline CAnimBlendSequence *operator_new<CAnimBlendSequence>() {
    void *objData = operator new(sizeof(CAnimBlendSequence));
    CAnimBlendSequence *obj = reinterpret_cast<CAnimBlendSequence *>(objData);
    plugin::CallMethodDynGlobal<CAnimBlendSequence *>(ctor_gaddr(CAnimBlendSequence), obj);
    return obj;
}
template <>
SUPPORTED_10EN_11EN_STEAM inline CAnimBlendSequence *operator_new_array<CAnimBlendSequence>(unsigned int objCount) {
    void *objData = operator new(sizeof(CAnimBlendSequence) * objCount + 4);
    *reinterpret_cast<unsigned int *>(objData) = objCount;
    CAnimBlendSequence *objArray = reinterpret_cast<CAnimBlendSequence *>(reinterpret_cast<unsigned int>(objData) + 4);
    for (unsigned int i = 0; i < objCount; i++)
        plugin::CallMethodDynGlobal<CAnimBlendSequence *>(ctor_gaddr(CAnimBlendSequence), &objArray[i]);
    return objArray;
}
template <>
SUPPORTED_10EN_11EN_STEAM inline void operator_delete<CAnimBlendSequence>(CAnimBlendSequence *obj) {
    if (obj == nullptr) return;
    plugin::CallVirtualMethod<0, CAnimBlendSequence *, int>(obj, 1);
}
template <>
SUPPORTED_10EN_11EN_STEAM inline void operator_delete_array<CAnimBlendSequence>(CAnimBlendSequence *objArray) {
    if (objArray == nullptr) return;
    void *objData = reinterpret_cast<void *>(reinterpret_cast<char *>(objArray) - 4);
    unsigned int arraySize = *reinterpret_cast<unsigned int *>(objData);
    for (unsigned int i = 0; i < arraySize; i++)
        plugin::CallVirtualMethod<0, CAnimBlendSequence *, int>(&objArray[i], 1);
    operator delete(objData);
}

}

license: Zlib

gha_license_id: Zlib

extension: h


text:
package sub

import (
	"context"
	"os"

	"github.com/blang/semver"
	gitcli "github.com/justwatchcom/gopass/backend/sync/git/cli"
	"github.com/justwatchcom/gopass/backend/sync/git/gogit"
	"github.com/pkg/errors"
)

type giter interface {
	Add(context.Context, ...string) error
	AddRemote(context.Context, string, string) error
	Cmd(context.Context, string, ...string) error
	Commit(context.Context, string) error
	InitConfig(context.Context, string, string, string) error
	Pull(context.Context, string, string) error
	Push(context.Context, string, string) error
	Version(context.Context) semver.Version
}

// GitInit initializes the the git repo in the store
func (s *Store) GitInit(ctx context.Context, sk, un, ue string) error {
	if gg := os.Getenv("GOPASS_EXPERIMENTAL_GOGIT"); gg != "" {
		git, err := gogit.Init(ctx, s.path)
		if err != nil {
			return errors.Wrapf(err, "failed to init git: %s", err)
		}
		s.git = git
		return nil
	}

	git, err := gitcli.Init(ctx, s.path, s.gpg.Binary(), sk, un, ue)
	if err != nil {
		return errors.Wrapf(err, "failed to init git: %s", err)
	}
	s.git = git
	return nil
}

// GitInitConfig (re-)intializes the git config in an existing repo
func (s *Store) GitInitConfig(ctx context.Context, sk, un, ue string) error {
	return s.git.InitConfig(ctx, sk, un, ue)
}

// GitVersion returns the git version
func (s *Store) GitVersion(ctx context.Context) semver.Version {
	return s.git.Version(ctx)
}

// Git channels any git subcommand to git in the store
// TODO remove this command, doesn't work with gogit
func (s *Store) Git(ctx context.Context, args ...string) error {
	return s.git.Cmd(ctx, "Git", args...)
}

// GitAddRemote adds a new remote
func (s *Store) GitAddRemote(ctx context.Context, remote, url string) error {
	return s.git.AddRemote(ctx, remote, url)
}

// GitPull performs a git pull
func (s *Store) GitPull(ctx context.Context, origin, branch string) error {
	return s.git.Pull(ctx, origin, branch)
}

// GitPush performs a git push
func (s *Store) GitPush(ctx context.Context, origin, branch string) error {
	return s.git.Push(ctx, origin, branch)
}

repository: sherzberg/gopass

repo_name: sherzberg/gopass


text:
SECTION = "devel/chicken"
DESCRIPTION = "An image gallery generator."
LICENSE = "GPL-3"
LIC_FILES_CHKSUM = "file://sigma.meta;md5=dd0be71181e8df3d6f6fd447db88e1d2"
DEPENDS_append_class-cross = " chicken-egg-regex-cross chicken-egg-matchable-cross chicken-egg-sxml-transforms-cross chicken-egg-utf8-cross chicken-egg-uri-generic-cross chicken-egg-fmt-cross chicken-egg-getopt-long-cross"
DEPENDS_append_class-crosssdk = " chicken-egg-regex-crosssdk chicken-egg-matchable-crosssdk chicken-egg-sxml-transforms-crosssdk chicken-egg-utf8-crosssdk chicken-egg-uri-generic-crosssdk chicken-egg-fmt-crosssdk chicken-egg-getopt-long-crosssdk"
DEPENDS_append_class-nativesdk = " nativesdk-chicken-egg-regex nativesdk-chicken-egg-matchable nativesdk-chicken-egg-sxml-transforms nativesdk-chicken-egg-utf8 nativesdk-chicken-egg-uri-generic nativesdk-chicken-egg-fmt nativesdk-chicken-egg-getopt-long chicken-egg-regex-crosssdk chicken-egg-matchable-crosssdk chicken-egg-sxml-transforms-crosssdk chicken-egg-utf8-crosssdk chicken-egg-uri-generic-crosssdk chicken-egg-fmt-crosssdk chicken-egg-getopt-long-crosssdk"
DEPENDS = " chicken-egg-regex chicken-egg-matchable chicken-egg-sxml-transforms chicken-egg-utf8 chicken-egg-uri-generic chicken-egg-fmt chicken-egg-getopt-long chicken-egg-regex-cross chicken-egg-matchable-cross chicken-egg-sxml-transforms-cross chicken-egg-utf8-cross chicken-egg-uri-generic-cross chicken-egg-fmt-cross chicken-egg-getopt-long-cross"
RDEPENDS_${PN} = " chicken-egg-regex chicken-egg-matchable chicken-egg-sxml-transforms chicken-egg-utf8 chicken-egg-uri-generic chicken-egg-fmt chicken-egg-getopt-long"

SRC_URI = "http://code.call-cc.org/egg-tarballs/4/sigma/sigma-${PV}.tar.gz"

SRC_URI[md5sum] = "59147a687e2e3fe9a62c539047fd13c0"
SRC_URI[sha256sum] = "35de126b92a1d8e18cbfb340d6bcf546744a2670898d14792b6e7f04f0357006"

S = "${WORKDIR}/sigma-${PV}"

inherit chicken_install

BBCLASSEXTEND = "cross crosssdk nativesdk"

repository: OSSystems/meta-chicken

repo_name: OSSystems/meta-chicken


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Hangfire;
using Microsoft.EntityFrameworkCore;
using WhyNotEarth.Meredith.Data.Entity;
using WhyNotEarth.Meredith.Data.Entity.Models.Modules.Volkswagen;
using WhyNotEarth.Meredith.Exceptions;

namespace WhyNotEarth.Meredith.Volkswagen
{
    public class JumpStartService
    {
        private readonly ArticleService _articleService;
        private readonly IBackgroundJobClient _backgroundJobClient;
        private readonly MeredithDbContext _dbContext;
        private readonly JumpStartPlanService _jumpStartPlanService;

        public JumpStartService(MeredithDbContext dbContext, ArticleService articleService,
            IBackgroundJobClient backgroundJobClient, JumpStartPlanService jumpStartPlanService)
        {
            _dbContext = dbContext;
            _articleService = articleService;
            _backgroundJobClient = backgroundJobClient;
            _jumpStartPlanService = jumpStartPlanService;
        }

        public async Task<List<JumpStart>> ListAsync()
        {
            var jumpStarts = await _dbContext.JumpStarts
                .Include(item => item.Articles)
                .ThenInclude(item => item.Category)
                .ThenInclude(item => item.Image)
                .Where(item => item.Status == JumpStartStatus.Preview)
                .ToListAsync();

            foreach (var jumpStart in jumpStarts)
            {
                if (!jumpStart.Articles.Any())
                {
                    jumpStart.Articles =
                        await _articleService.GetDefaultArticles(jumpStart.DateTime.Date).ToListAsync();
                }
            }

            return jumpStarts;
        }

        public async Task EditAsync(int jumpStartId, DateTime dateTime, List<string> distributionGroups,
            List<int> articleIds)
        {
            if (articleIds.Count > _jumpStartPlanService.MaximumArticlesPerDayCount)
            {
                throw new InvalidActionException(
                    $"Maximum {_jumpStartPlanService.MaximumArticlesPerDayCount} articles are allowed per email");
            }

            var jumpStart = await GetAsync(jumpStartId);

            var newArticles = await _dbContext.Articles.Where(item => articleIds.Contains(item.Id))
                .ToListAsync();

            jumpStart.DateTime = dateTime;
            jumpStart.DistributionGroups = string.Join(',', distributionGroups);
            jumpStart.Articles = newArticles;
            _dbContext.JumpStarts.Update(jumpStart);

            foreach (var article in newArticles)
            {
                article.JumpStart = jumpStart;
                article.Order = articleIds.IndexOf(article.Id);
            }

            _dbContext.UpdateRange(newArticles);

            await _dbContext.SaveChangesAsync();
        }

        public async Task SendAsync()
        {
            var jumpStarts = await _dbContext.JumpStarts
                .Include(item => item.Articles)
                .Where(item => item.Status == JumpStartStatus.Preview && item.DateTime < DateTime.UtcNow.AddMinutes(15))
                .ToListAsync();

            foreach (var jumpStart in jumpStarts)
            {
                if (!jumpStart.Articles.Any())
                {
                    jumpStart.Articles =
                        await _articleService.GetDefaultArticles(jumpStart.DateTime.Date).ToListAsync();
                }

                jumpStart.Status = JumpStartStatus.ReadyToSend;
            }

            _dbContext.UpdateRange(jumpStarts);
            await _dbContext.SaveChangesAsync();

            foreach (var jumpStart in jumpStarts)
            {
                _backgroundJobClient.Enqueue<JumpStartPdfService>(service =>
                    service.CreatePdfAsync(jumpStart.Id));
            }
        }

        private async Task<JumpStart> GetAsync(int jumpStartId)
        {
            var jumpStart = await _dbContext.JumpStarts.FirstOrDefaultAsync(item => item.Id == jumpStartId);

            if (jumpStart is null)
            {
                throw new RecordNotFoundException($"JumpStart {jumpStartId} not found");
            }

            if (jumpStart.Status != JumpStartStatus.Preview)
            {
                throw new InvalidActionException($"JumpStart {jumpStartId} had already sent");
            }

            return jumpStart;
        }

        public async Task<List<Article>> GetAvailableArticlesAsync(int jumpStartId)
        {
            var jumpStart = await _dbContext.JumpStarts
                .Include(item => item.Articles)
                .FirstOrDefaultAsync(item => item.Id == jumpStartId);

            if (jumpStart is null)
            {
                throw new RecordNotFoundException($"JumpStart {jumpStartId} not found");
            }

            var query = _articleService.GetAvailableArticles(jumpStart.DateTime.Date);

            if (jumpStart.Articles.Any())
            {
                return await query.ToListAsync();
            }

            return await query
                .Skip(_jumpStartPlanService.MaximumArticlesPerDayCount)
                .ToListAsync();
        }
    }
}


text:
package devtestlab

import (
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func ListServiceFabricApplicableSchedules(ctx *pulumi.Context, args *ListServiceFabricApplicableSchedulesArgs, opts ...pulumi.InvokeOption) (*ListServiceFabricApplicableSchedulesResult, error) {
	var rv ListServiceFabricApplicableSchedulesResult
	err := ctx.Invoke("azure-native:devtestlab:listServiceFabricApplicableSchedules", args, &rv, opts...)
	if err != nil {
		return nil, err
	}
	return &rv, nil
}

type ListServiceFabricApplicableSchedulesArgs struct {
	LabName           string `pulumi:"labName"`
	Name              string `pulumi:"name"`
	ResourceGroupName string `pulumi:"resourceGroupName"`
	UserName          string `pulumi:"userName"`
}

type ListServiceFabricApplicableSchedulesResult struct {
	Id             string            `pulumi:"id"`
	LabVmsShutdown *ScheduleResponse `pulumi:"labVmsShutdown"`
	LabVmsStartup  *ScheduleResponse `pulumi:"labVmsStartup"`
	Location       *string           `pulumi:"location"`
	Name           string            `pulumi:"name"`
	Tags           map[string]string `pulumi:"tags"`
	Type           string            `pulumi:"type"`
}

repository: bpkgoud/pulumi-azure-native

repo_name: bpkgoud/pulumi-azure-native


text:
@inproceedings{Triska2016,
  author    = "Markus Triska",
  title     = "The {Boolean} Constraint Solver of {SWI-Prolog}: System Description",
  booktitle = "FLOPS: Functional and Logic Programming. 13th International Symposium",
  series    = "LNCS",
  volume    = 9613,
  year      = 2016,
  pages     = "45--61"
}

@inproceedings{Tubella1994,
  author="Jordi Tubella and Antonio Gonz{\'a}lez",
  title="Combining depth-first and breadth-first search in Prolog execution",
  booktitle="GULP-PRODE",
  year="1994",
  pages="452-453"
}

@misc{Bartak1998,
    author    = "Roman Bartak",
    title     = "Meta-Interpreters. in \textit{Online Prolog Programming}",
    howpublished = "\url{http://kti.ms.mff.cuni.cz/~bartak/prolog/meta\_interpret.html}",
    year     = "1998"
 }

@misc{berger2004,
    author = "Shai Berger",
    title  = "PYTHOLOGIC - PROLOG SYNTAX IN PYTHON (PYTHON RECIPE)",
    howpublished = "\url{http://code.activestate.com/recipes/}",
    year = 2004,
    note     = "303057-pythologic-prolog-syntax-in-python/"
}

@misc{Bolz2007,
    author    = "Carl Friedrich Bolz",
    title     = "A Prolog Interpreter in Python.",
    howpublished = "\url{http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.121.8625&rep=rep1&type=pdf}",
    year     = "2007"
}

@misc{Cesar2019,
    author    = "Bruno Kim Medeiros Cesar",
    title     = "Prol: a minimal, inefficient Prolog interpreter in a few LOCs of Python",
    howpublished = "\url{https://gist.github.com/brunokim/}",
    year = "2019"
}

@misc{Delford2009,
    author    = "Christophe Delord",
    title     = "PyLog",
    howpublished = "\url{http://cdsoft.fr/pylog/index.html}",
    year     = "2009"
}

@misc{Dhruv2018,
    author    = "Stuti Dhruv",
    title     = "The 5 best Programming Languages for AI Development",
    howpublished = "\url{https://www.aalpha.net/blog/the-5-best-programming-languages-for-ai-development/}",
    year     = "2009"
}

@misc{Frederiksen2011,
    author    = "Bruce Frederiksen",
    title     = "Pyke",
    year     = "2011",
    howpublished = "\url{http://pyke.sourceforge.net/}"
}

% @inbook{Kopec2019,
% 	author	= "David Kopec",
% 	title	= "Classic Computer Science Problems in Python",
% 	chapter	= "3 Constraint-satisfaction problems",
% 	pages	= "248 - 430",
% 	publisher= "Manning",
%     howpublished = "\url{https://freecontent.manning.com/constraint-satisfaction-problems-in-python/}",
% 	year	= "2019"
% }

@misc{Maxime2016,
    author    = "Istasse Maxime",
    title     = "Prology: Logic programming for Python3",
    howpublished = "\url{https://github.com/mistasse/Prology}",
    year     = "2016"
}

@misc{Mathur2018,
    author    = "Natasha Mathur",
    title     = "Top languages for Artificial Intelligence development
By Natasha Mathur - June 5, 2018 - 4:00 pm2433 0
",
    howpublished = "\url{https://hub.packtpub.com/top-languages-for-artificial-intelligence-development/}",
    year     = "2018"
}

@misc{Mehta2018,
    author = "Nisarg Mehta",
    title = "Top 5 Programming Languages for Building AI Solutions",
    howpublished = "\url{https://www.techtic.com/blog/top-5-programming-languages-building-ai-solutions}",
    year = 2018
}

@misc{Meyers2015,
    author    = "Chris Meyers",
    title     = "Prolog in Python",
    howpublished = "\url{http://www.openbookproject.net/py4fun/prolog/prolog1.html}",
    year     = "2015"
}

@misc{Miljkovic2019,
    author    = "Nikola Miljkovic",
    title     = "Python Prolog Interpreter",
    howpublished = "\url{https://github.com/photonlines/Python-Prolog-Interpreter}",
    year     = "2019"
}

% @misc{Niemeyer2019,
%     author    = "Gustavo Niemeyer and Sébastien Celles",
%     title     = "python-constraint library. Pypi page: python-constraint",
%     note     = "Also discussed in Popović, Olivera (2019) Constraint Programming with python-constraint",
%     howpublished = "\url{https://stackabuse.com/constraint-programming-with-python-constraint/listofbuiltinconstraints}",
%     year     = "2019"
% }

@misc{Piumarta2017,
    author    = "Ian Piumarta",
    title     = "Lecture notes and slides from weeks 5-7 of a course on programming paradigms",
    howpublished = "\url{http://www.ritsumei.ac.jp/~piumarta/pl/}",
    year     = "2017"
}

@misc{Raturi2019,
    author    = "Gaurav Raturi",
    title     = "5 Best Programming Languages to choose for Developing Innovative AI Solutions",
    publisher= "medium.com",
    howpublished = "\url{https://becominghuman.ai/5-best-programming-languages-to-choose-for-developing-innovative-ai-solutions-bac000e00df2}",
    year     = "2019"
}

@misc{Rocklin2019,
    author    = "Matthew Rocklin",
    title     = "Kanren: Logic Programming in Python",
    howpublished = "\url{https://github.com/logpy/logpy/}",
    year     = "2019"
}

@misc{Sagar2019,
    author    = "Paresh Sagar",
    title     = "Powerful Programming Languages to Code your AI Application",
    publisher= "Manning",
    howpublished = "\url{https://medium.com/datadriveninvestor/powerful-programming-languages-to-code-your-ai-application-ef69429f7872}",
    year     = "2019"
}

@misc{Santini2018,
    author    = "Claudio Santini",
    title     = "Pampy: The Pattern Matching for Python you always dreamed of",
    howpublished = "\url{https://github.com/santinic/pampy}",
    year     = "2018"
}

@misc{Thompson2017,
    author    = "Jeff Thompson",
    title     = "Yield Prolog",
    howpublished = "\url{http://yieldprolog.sourceforge.net/}",
    year     = "2017"
}

@misc{Triska2020,
    author    = "Markus Triska",
    title     = "The Power of Prolog",
    howpublished = "\url{http://www.swi-prolog.org/man/clpfd.html}",
    year     = "2020"
}

repository: RussAbbott/pylog

repo_name: RussAbbott/pylog

gha_language: Python

extension: bib