text:
="360.68" y2="261.62" width="0.1524" layer="91"/>
<label x="350.52" y="261.62" size="1.4224" layer="95"/>
<pinref part="JP12" gate="G$1" pin="3"/>
<junction x="360.68" y="261.62"/>
</segment>
<segment>
<pinref part="X2" gate="-3" pin="K"/>
<wire x1="271.78" y1="175.26" x2="261.62" y2="175.26" width="0.1524" layer="91"/>
<label x="261.62" y="175.26" size="1.778" layer="95"/>
</segment>
<segment>
<label x="261.62" y="121.92" size="1.778" layer="95"/>
<wire x1="271.78" y1="121.92" x2="261.62" y2="121.92" width="0.1524" layer="91"/>
<pinref part="X6" gate="-4" pin="K"/>
</segment>
</net>
<net name="VDD2" class="0">
<segment>
<pinref part="Q16" gate="G$1" pin="D"/>
<wire x1="119.38" y1="111.76" x2="119.38" y2="101.6" width="0.1524" layer="91"/>
<label x="119.38" y="99.06" size="1.778" layer="95"/>
</segment>
<segment>
<wire x1="350.52" y1="259.08" x2="360.68" y2="259.08" width="0.1524" layer="91"/>
<label x="350.52" y="259.08" size="1.4224" layer="95"/>
<pinref part="JP12" gate="G$1" pin="4"/>
<junction x="360.68" y="259.08"/>
</segment>
<segment>
<pinref part="X2" gate="-2" pin="K"/>
<wire x1="271.78" y1="182.88" x2="261.62" y2="182.88" width="0.1524" layer="91"/>
<label x="261.62" y="182.88" size="1.778" layer="95"/>
</segment>
</net>
<net name="VDD3" class="0">
<segment>
<pinref part="Q18" gate="G$1" pin="D"/>
<wire x1="172.72" y1="111.76" x2="172.72" y2="101.6" width="0.1524" layer="91"/>
<label x="172.72" y="99.06" size="1.778" layer="95"/>
</segment>
<segment>
<label x="350.52" y="251.46" size="1.4224" layer="95"/>
<wire x1="360.68" y1="251.46" x2="350.52" y2="251.46" width="0.1524" layer="91"/>
<pinref part="JP12" gate="G$1" pin="7"/>
</segment>
<segment>
<wire x1="314.96" y1="167.64" x2="307.34" y2="167.64" width="0.1524" layer="91"/>
<label x="307.34" y="167.64" size="1.778" layer="95"/>
<pinref part="X3" gate="-4" pin="K"/>
</segment>
</net>
<net name="VDD4" class="0">
<segment>
<pinref part="Q20" gate="G$1" pin="D"/>
<wire x1="223.52" y1="111.76" x2="223.52" y2="101.6" width="0.1524" layer="91"/>
<label x="223.52" y="99.06" size="1.778" layer="95"/>
</segment>
<segment>
<label x="350.52" y="223.52" size="1.778" layer="95"/>
<wire x1="360.68" y1="223.52" x2="350.52" y2="223.52" width="0.1524" layer="91"/>
<pinref part="JP12" gate="G$1" pin="18"/>
</segment>
<segment>
<pinref part="X5" gate="-3" pin="K"/>
<wire x1="401.32" y1="175.26" x2="393.7" y2="175.26" width="0.1524" layer="91"/>
<label x="393.7" y="175.26" size="1.778" layer="95"/>
</segment>
</net>
<net name="P1.5" class="0">
<segment>
<label x="350.52" y="246.38" size="1.4224" layer="95"/>
<wire x1="360.68" y1="246.38" x2="350.52" y2="246.38" width="0.1524" layer="91"/>
<pinref part="JP12" gate="G$1" pin="9"/>
</segment>
<segment>
<pinref part="X3" gate="-2" pin="K"/>
<wire x1="314.96" y1="182.88" x2="309.88" y2="182.88" width="0.1524" layer="91"/>
<label x="307.34" y="182.88" size="1.778" layer="95"/>
</segment>
</net>
<net name="P1.3" class="0">
<segment>
<label x="350.52" y="254" size="1.778" layer="95"/>
<wire x1="360.68" y1="254" x2="350.52" y2="254" width="0.1524" layer="91"/>
<pinref part="JP12" gate="G$1" pin="6"/>
</segment>
<segment>
<pinref part="X3" gate="-5" pin="K"/>
<wire x1="314.96" y1="160.02" x2="309.88" y2="160.02" width="0.1524" layer="91"/>
<label x="307.34" y="160.02" size="1.778" layer="95"/>
</segment>
</net>
<net name="P1.2" class="0">
<segment>
<label x="350.52" y="256.54" size="1.778" layer="95"/>
<wire x1="360.68" y1="256.54" x2="350.52" y2="256.54" width="0.1524" layer="91"/>
<pinref part="JP12" gate="G$1" pin="5"/>
</segment>
<segment>
<pinref part="X2" gate="-1" pin="K"/>
<wire x1="271.78" y1="190.5" x2="261.62" y2="190.5" width="0.1524" layer="91"/>
<label x="261.62" y="190.5" size="1.778" layer="95"/>
</segment>
</net>
<net name="!EA" class="0">
<segment>
<pinref part="JP11" gate="G$1" pin="7"/>
<wire x1="320.04" y1="251.46" x2="309.88" y2="251.46" width="0.1524" layer="91"/>
<label x="309.88" y="251.46" size="1.778" layer="95"/>
</segment>
<segment>
<pinref part="X7" gate="-4" pin="K"/>
<wire x1="314.96" y1="121.92" x2="309.88" y2="121.92" width="0.1524" layer="91"/>
<label x="309.88" y="121.92" size="1.778" layer="95"/>
<junction x="314.96" y="121.92"/>
</segment>
</net>
<net name="!PSEN" class="0">
<segment>
<label x="309.88" y="243.84" size="1.4224" layer="95"/>
<wire x1="320.04" y1="243.84" x2="309.88" y2="243.84" width="0.1524" layer="91"/>
<pinref part="JP11" gate="G$1" pin="10"/>
</segment>
<segment>
<pinref part="X7" gate="-1" pin="K"/>
<wire x1="314.96" y1="144.78" x2="309.88" y2="144.78" width="0.1524" layer="91"/>
<label x="309.88" y="144.78" size="1.778" layer="95"/>
</segment>
</net>
<net name="ALE" class="0">
<segment>
<label x="309.88" y="246.38" size="1.4224" layer="95"/>
<wire x1="320.04" y1="246.38" x2="309.88" y2="246.38" width="0.1524" layer="91"/>
<pinref part="JP11" gate="G$1" pin="9"/>
</segment>
<segment>
<pinref part="X7" gate="-2" pin="K"/>
<wire x1="314.96" y1="137.16" x2="309.88" y2="137.16" width="0.1524" layer="91"/>
<label x="309.88" y="137.16" size="1.778" layer="95"/>
</segment>
</net>
<net name="RESET" class="0">
<segment>
<label x="350.52" y="238.76" size="1.4224" layer="95"/>
<wire x1="360.68" y1="238.76" x2="350.52" y2="238.76" width="0.1524" layer="91"/>
<pinref part="JP12" gate="G$1" pin="12"/>
</segment>
<segment>
<wire x1="360.68" y1="167.64" x2="353.06" y2="167.64" width="0.1524" layer="91"/>
<label x="353.06" y="167.64" size="1.778" layer="95"/>
<pinref part="X4" gate="-4" pin="K"/>
</segment>
</net>
<net name="P0.0" class="0">
<segment>
<pinref part="R24" gate="G$1" pin="1"/>
<pinref part="R25" gate="G$1" pin="2"/>
<wire x1="287.02" y1="63.5" x2="287.02" y2="60.96" width="0.1524" layer="91"/>
<wire x1="287.02" y1="63.5" x2="302.26" y2="63.5" width="0.1524" layer="91"/>
<junction x="287.02" y="63.5"/>
<label x="299.72" y="63.5" size="1.778" layer="95"/>
</segment>
</net>
</nets>
</sheet>
<sheet>
<plain>
<text x="33.02" y="149.86" size="1.778" layer="209">Telit TX</text>
<text x="33.02" y="147.32" size="1.778" layer="209">Telit RX</text>
<text x="30.48" y="142.24" size="1.778" layer="209">Telit Reset</text>
<text x="27.94" y="144.78" size="1.778" layer="209">Telit ONOFF</text>
<text x="91.44" y="177.8" size="1.778" layer="209">V_TELIT</text>
<text x="91.44" y="177.8" size="1.778" layer="209">V_TELIT</text>
<text x="93.98" y="142.24" size="1.778" layer="209">LED</text>
<text x="-20.32" y="170.18" size="1.778" layer="209">Note That P1 stands for P12
So P1[0] is actually P12[0] in PSoC Creator

*1 actually indicates 1, sp P*1[6] is P1[6]</text>
<text x="91.44" y="187.96" size="1.778" layer="209">VBAT1</text>
<text x="91.44" y="185.42" size="1.778" layer="209">VBAT2</text>
<text x="91.44" y="180.34" size="1.778" layer="209">VDD2</text>
<text x="91.44" y="182.88" size="1.778" layer="209">VDD1</text>
<text x="35.56" y="177.8" size="1.778" layer="209">VDD3</text>
<text x="35.56" y="157.48" size="1.778" layer="209">VDD4</text>
<text x="25.4" y="185.42" size="1.778" layer="209">VBAT_READ_EN</text>
<text x="25.4" y="185.42" size="1.778" layer="209">VBAT_READ_EN</text>
<text x="25.4" y="187.96" size="1.778" layer="209">VBAT_READ</text>
<text x="35.56" y="167.64" size="1.778" layer="209">P*1.7</text>
<text x="91.44" y="165.1" size="1.778" layer="209">P15.4</text>
<text x="91.44" y="162.56" size="1.778" layer="209">P15.5</text>
<text x="91.44" y="167.64" size="1.778" layer="209">P*1.6</text>
<text x="228.6" y="25.4" size="1.778" layer="209">SWD 10-pin debug port</text>
<text x="231.14" y="-5.08" size="1.778" layer="209">5-pin molex debug port</text>
</plain>
<instances>
<instance part="U$1" gate="G$1" x="66.04" y="45.72">
<attribute name="PN" x="66.04" y="45.72" size="1.778" layer="96" display="off"/>
</instance>
<instance part="U$1" gate="G$2" x="17.78" y="12.7"/>
<instance part="JP13" gate="G$1" x="63.5" y="193.04" rot="R180"/>
<instance part="JP14" gate="G$1" x="124.46" y="195.58" rot="R180"/>
<instance part="C7" gate="G$1" x="162.56" y="40.64">
<attribute name="PN" x="162.56" y="40.64" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND32" gate="1" x="147.32" y="30.48"/>
<instance part="C8" gate="G$1" x="147.32" y="40.64">
<attribute name="PN" x="147.32" y="40.64" size="1.778" layer="96" display="off"/>
</instance>
<instance part="C9" gate="G$1" x="129.54" y="35.56">
<attribute name="PN" x="129.54" y="35.56" size="1.778" layer="96" display="off"/>
</instance>
<instance part="C10" gate="G$1" x="111.76" y="7.62">
<attribute name="PN" x="111.76" y="7.62" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND33" gate="1" x="111.76" y="2.54"/>
<instance part="C11" gate="G$1" x="53.34" y="-27.94">
<attribute name="PN" x="53.34" y="-27.94" size="1.778" layer="96" display="off"/>
</instance>
<instance part="C12" gate="G$1" x="43.18" y="-27.94">
<attribute name="PN" x="43.18" y="-27.94" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND34" gate="1" x="43.18" y="-38.1"/>
<instance part="C13" gate="G$1" x="25.4" y="-20.32">
<attribute name="PN" x="25.4" y="-20.32" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND35" gate="1" x="25.4" y="-27.94"/>
<instance part="GND36" gate="1" x="5.08" y="38.1"/>
<instance part="C14" gate="G$1" x="15.24" y="86.36">
<attribute name="PN" x="15.24" y="86.36" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND37" gate="1" x="15.24" y="78.74"/>
<instance part="C15" gate="G$1" x="45.72" y="104.14">
<attribute name="PN" x="45.72" y="104.14" size="1.778" layer="96" display="off"/>
</instance>
<instance part="C16" gate="G$1" x="55.88" y="104.14">
<attribute name="PN" x="55.88" y="104.14" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND38" gate="1" x="50.8" y="96.52"/>
<instance part="C17" gate="G$1" x="91.44" y="109.22">
<attribute name="PN" x="91.44" y="109.22" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND39" gate="1" x="91.44" y="96.52"/>
<instance part="C18" gate="G$1" x="114.3" y="81.28">
<attribute name="PN" x="114.3" y="81.28" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND40" gate="1" x="114.3" y="73.66"/>
<instance part="GND41" gate="1" x="-7.62" y="17.78" rot="R270"/>
<instance part="VDD1" gate="G$1" x="111.76" y="20.32"/>
<instance part="VDD2" gate="G$1" x="147.32" y="55.88"/>
<instance part="VDD3" gate="G$1" x="114.3" y="91.44"/>
<instance part="VDD4" gate="G$1" x="15.24" y="99.06"/>
<instance part="VDD5" gate="G$1" x="68.58" y="116.84"/>
<instance part="VDD6" gate="G$1" x="53.34" y="-15.24"/>
<instance part="VDD7" gate="G$1" x="25.4" y="-7.62"/>
<instance part="VDD8" gate="G$1" x="106.68" y="193.04"/>
<instance part="GND16" gate="1" x="251.46" y="88.9"/>
<instance part="XRES" gate="G$1" x="241.3" y="96.52" rot="R270"/>
<instance part="X10" gate="-1" x="243.84" y="12.7"/>
<instance part="X10" gate="-2" x="243.84" y="10.16"/>
<instance part="X10" gate="-3" x="243.84" y="7.62"/>
<instance part="X10" gate="-4" x="243.84" y="5.08"/>
<instance part="X10" gate="-5" x="243.84" y="2.54"/>
<instance part="Q3" gate="G$1" x="246.38" y="45.72"/>
<instance part="C30" gate="G$1" x="223.52" y="45.72">
<attribute name="PN" x="223.52" y="45.72" size="1.778" layer="96" display="off"/>
</instance>
<instance part="GND46" gate="1" x="223.52" y="40.64"/>
<instance part="GND47" gate="1" x="236.22" y="33.02"/>
<instance part="FRAME3" gate="G$1" x="-81.28" y="-55.88"/>
</instances>
<busses>
</busses>
<nets>
<net name="P1.0" class="0">
<segment>
<wire x1="53.34" y1="187.96" x2="45.72" y2="187.96" width="0.1524" layer="91"/>
<label x="45.72" y="187.96" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="1"/>
</segment>
<segment>
<wire x1="101.6" y1="33.02" x2="106.68" y2="33.02" width="0.1524" layer="91"/>
<label x="106.68" y="33.02" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P12_0_I2C1_SCL"/>
</segment>
</net>
<net name="P1.1" class="0">
<segment>
<wire x1="53.34" y1="185.42" x2="45.72" y2="185.42" width="0.1524" layer="91"/>
<label x="45.72" y="185.42" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="2"/>
</segment>
<segment>
<wire x1="101.6" y1="35.56" x2="106.68" y2="35.56" width="0.1524" layer="91"/>
<label x="106.68" y="35.56" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P12_1_I2C1_SDA"/>
</segment>
</net>
<net name="P1.2" class="0">
<segment>
<wire x1="53.34" y1="182.88" x2="45.72" y2="182.88" width="0.1524" layer="91"/>
<label x="45.72" y="182.88" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="3"/>
</segment>
<segment>
<wire x1="101.6" y1="53.34" x2="106.68" y2="53.34" width="0.1524" layer="91"/>
<label x="106.68" y="53.34" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P12_2"/>
</segment>
</net>
<net name="P1.3" class="0">
<segment>
<wire x1="53.34" y1="180.34" x2="45.72" y2="180.34" width="0.1524" layer="91"/>
<label x="45.72" y="180.34" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="4"/>
</segment>
<segment>
<wire x1="101.6" y1="55.88" x2="106.68" y2="55.88" width="0.1524" layer="91"/>
<label x="106.68" y="55.88" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P12_3"/>
</segment>
</net>
<net name="P1.4" class="0">
<segment>
<wire x1="53.34" y1="177.8" x2="45.72" y2="177.8" width="0.1524" layer="91"/>
<label x="45.72" y="177.8" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="5"/>
</segment>
<segment>
<wire x1="30.48" y1="60.96" x2="25.4" y2="60.96" width="0.1524" layer="91"/>
<label x="20.32" y="60.96" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P12_4_I2C0_SCL"/>
</segment>
</net>
<net name="P1.5" class="0">
<segment>
<wire x1="53.34" y1="175.26" x2="45.72" y2="175.26" width="0.1524" layer="91"/>
<label x="45.72" y="175.26" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="6"/>
</segment>
<segment>
<wire x1="30.48" y1="58.42" x2="25.4" y2="58.42" width="0.1524" layer="91"/>
<label x="20.32" y="58.42" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P12_5_I2C0_SDA"/>
</segment>
</net>
<net name="P1.6" class="0">
<segment>
<wire x1="53.34" y1="172.72" x2="45.72" y2="172.72" width="0.1524" layer="91"/>
<label x="45.72" y="172.72" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="7"/>
</segment>
<segment>
<wire x1="50.8" y1="10.16" x2="50.8" y2="2.54" width="0.1524" layer="91"/>
<label x="50.8" y="-2.54" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P12_6"/>
</segment>
</net>
<net name="P1.7" class="0">
<segment>
<wire x1="53.34" y1="170.18" x2="45.72" y2="170.18" width="0.1524" layer="91"/>
<label x="45.72" y="170.18" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="8"/>
</segment>
<segment>
<wire x1="53.34" y1="10.16" x2="53.34" y2="2.54" width="0.1524" layer="91"/>
<label x="53.34" y="-2.54" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P12_7"/>
</segment>
</net>
<net name="RESET" class="0">
<segment>
<wire x1="53.34" y1="167.64" x2="45.72" y2="167.64" width="0.1524" layer="91"/>
<label x="45.72" y="167.64" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="9"/>
</segment>
<segment>
<pinref part="U$1" gate="G$1" pin="P1_7"/>
<wire x1="48.26" y1="10.16" x2="48.26" y2="2.54" width="0.1524" layer="91"/>
<label x="48.26" y="-2.54" size="1.778" layer="95" rot="R90"/>
</segment>
</net>
<net name="P3.0" class="0">
<segment>
<wire x1="53.34" y1="165.1" x2="45.72" y2="165.1" width="0.1524" layer="91"/>
<label x="45.72" y="165.1" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="10"/>
</segment>
<segment>
<wire x1="73.66" y1="10.16" x2="73.66" y2="5.08" width="0.1524" layer="91"/>
<label x="73.66" y="0" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P3_0"/>
</segment>
</net>
<net name="P3.1" class="0">
<segment>
<wire x1="53.34" y1="162.56" x2="45.72" y2="162.56" width="0.1524" layer="91"/>
<label x="45.72" y="162.56" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="11"/>
</segment>
<segment>
<wire x1="76.2" y1="10.16" x2="76.2" y2="5.08" width="0.1524" layer="91"/>
<label x="76.2" y="0" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P3_1"/>
</segment>
</net>
<net name="P3.2" class="0">
<segment>
<wire x1="53.34" y1="160.02" x2="45.72" y2="160.02" width="0.1524" layer="91"/>
<label x="45.72" y="160.02" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="12"/>
</segment>
<segment>
<wire x1="78.74" y1="10.16" x2="78.74" y2="5.08" width="0.1524" layer="91"/>
<label x="78.74" y="0" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P3_2"/>
</segment>
</net>
<net name="P3.3" class="0">
<segment>
<wire x1="53.34" y1="157.48" x2="45.72" y2="157.48" width="0.1524" layer="91"/>
<label x="45.72" y="157.48" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="13"/>
</segment>
<segment>
<wire x1="81.28" y1="10.16" x2="81.28" y2="5.08" width="0.1524" layer="91"/>
<label x="81.28" y="0" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P3_3"/>
</segment>
</net>
<net name="P3.4" class="0">
<segment>
<wire x1="53.34" y1="154.94" x2="45.72" y2="154.94" width="0.1524" layer="91"/>
<label x="45.72" y="154.94" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="14"/>
</segment>
<segment>
<wire x1="83.82" y1="10.16" x2="83.82" y2="5.08" width="0.1524" layer="91"/>
<label x="83.82" y="0" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P3_4"/>
</segment>
</net>
<net name="P3.5" class="0">
<segment>
<wire x1="53.34" y1="152.4" x2="45.72" y2="152.4" width="0.1524" layer="91"/>
<label x="45.72" y="152.4" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="15"/>
</segment>
<segment>
<wire x1="86.36" y1="10.16" x2="86.36" y2="5.08" width="0.1524" layer="91"/>
<label x="86.36" y="0" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P3_5"/>
</segment>
</net>
<net name="P3.6" class="0">
<segment>
<wire x1="53.34" y1="149.86" x2="45.72" y2="149.86" width="0.1524" layer="91"/>
<label x="45.72" y="149.86" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="16"/>
</segment>
<segment>
<wire x1="101.6" y1="27.94" x2="106.68" y2="27.94" width="0.1524" layer="91"/>
<label x="106.68" y="27.94" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P3_6"/>
</segment>
</net>
<net name="P3.7" class="0">
<segment>
<wire x1="53.34" y1="147.32" x2="45.72" y2="147.32" width="0.1524" layer="91"/>
<label x="45.72" y="147.32" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="17"/>
</segment>
<segment>
<wire x1="101.6" y1="30.48" x2="106.68" y2="30.48" width="0.1524" layer="91"/>
<label x="106.68" y="30.48" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P3_7"/>
</segment>
</net>
<net name="P0.0" class="0">
<segment>
<wire x1="114.3" y1="187.96" x2="106.68" y2="187.96" width="0.1524" layer="91"/>
<label x="101.6" y="187.96" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="2"/>
</segment>
<segment>
<wire x1="101.6" y1="58.42" x2="106.68" y2="58.42" width="0.1524" layer="91"/>
<label x="106.68" y="58.42" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P0_0"/>
</segment>
</net>
<net name="P0.1" class="0">
<segment>
<wire x1="114.3" y1="185.42" x2="106.68" y2="185.42" width="0.1524" layer="91"/>
<label x="101.6" y="185.42" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="3"/>
</segment>
<segment>
<wire x1="101.6" y1="60.96" x2="106.68" y2="60.96" width="0.1524" layer="91"/>
<label x="106.68" y="60.96" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P0_1"/>
</segment>
</net>
<net name="P0.2" class="0">
<segment>
<wire x1="106.68" y1="182.88" x2="114.3" y2="182.88" width="0.1524" layer="91"/>
<label x="101.6" y="182.88" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="4"/>
</segment>
<segment>
<wire x1="101.6" y1="63.5" x2="106.68" y2="63.5" width="0.1524" layer="91"/>
<label x="106.68" y="63.5" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P0_2"/>
</segment>
</net>
<net name="P0.3" class="0">
<segment>
<wire x1="114.3" y1="180.34" x2="106.68" y2="180.34" width="0.1524" layer="91"/>
<label x="101.6" y="180.34" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="5"/>
</segment>
<segment>
<wire x1="101.6" y1="66.04" x2="106.68" y2="66.04" width="0.1524" layer="91"/>
<label x="106.68" y="66.04" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P0_3"/>
</segment>
</net>
<net name="P0.4" class="0">
<segment>
<wire x1="114.3" y1="177.8" x2="106.68" y2="177.8" width="0.1524" layer="91"/>
<label x="101.6" y="177.8" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="6"/>
</segment>
<segment>
<wire x1="83.82" y1="81.28" x2="83.82" y2="88.9" width="0.1524" layer="91"/>
<label x="83.82" y="88.9" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P0_4"/>
</segment>
</net>
<net name="P0.5" class="0">
<segment>
<wire x1="114.3" y1="175.26" x2="106.68" y2="175.26" width="0.1524" layer="91"/>
<label x="101.6" y="175.26" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="7"/>
</segment>
<segment>
<wire x1="81.28" y1="81.28" x2="81.28" y2="88.9" width="0.1524" layer="91"/>
<label x="81.28" y="88.9" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P0_5"/>
</segment>
</net>
<net name="P0.6" class="0">
<segment>
<wire x1="114.3" y1="172.72" x2="106.68" y2="172.72" width="0.1524" layer="91"/>
<label x="101.6" y="172.72" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="8"/>
</segment>
<segment>
<wire x1="78.74" y1="81.28" x2="78.74" y2="88.9" width="0.1524" layer="91"/>
<label x="78.74" y="88.9" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P0_6"/>
</segment>
</net>
<net name="P0.7" class="0">
<segment>
<wire x1="114.3" y1="170.18" x2="106.68" y2="170.18" width="0.1524" layer="91"/>
<label x="101.6" y="170.18" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="9"/>
</segment>
<segment>
<wire x1="76.2" y1="81.28" x2="76.2" y2="88.9" width="0.1524" layer="91"/>
<label x="76.2" y="88.9" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P0_7"/>
</segment>
</net>
<net name="!EA" class="0">
<segment>
<wire x1="114.3" y1="167.64" x2="106.68" y2="167.64" width="0.1524" layer="91"/>
<label x="101.6" y="167.64" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="10"/>
</segment>
<segment>
<wire x1="45.72" y1="10.16" x2="45.72" y2="2.54" width="0.1524" layer="91"/>
<label x="45.72" y="-2.54" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P1_6"/>
</segment>
</net>
<net name="ALE" class="0">
<segment>
<wire x1="114.3" y1="165.1" x2="106.68" y2="165.1" width="0.1524" layer="91"/>
<label x="101.6" y="165.1" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="11"/>
</segment>
<segment>
<wire x1="66.04" y1="81.28" x2="66.04" y2="88.9" width="0.1524" layer="91"/>
<label x="66.04" y="88.9" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P15_4"/>
</segment>
</net>
<net name="!PSEN" class="0">
<segment>
<wire x1="114.3" y1="162.56" x2="106.68" y2="162.56" width="0.1524" layer="91"/>
<label x="101.6" y="162.56" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="12"/>
</segment>
<segment>
<wire x1="63.5" y1="81.28" x2="63.5" y2="88.9" width="0.1524" layer="91"/>
<label x="63.5" y="88.9" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P15_5"/>
</segment>
</net>
<net name="P2.7" class="0">
<segment>
<wire x1="114.3" y1="160.02" x2="106.68" y2="160.02" width="0.1524" layer="91"/>
<label x="101.6" y="160.02" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="13"/>
</segment>
<segment>
<wire x1="30.48" y1="63.5" x2="25.4" y2="63.5" width="0.1524" layer="91"/>
<label x="20.32" y="63.5" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P2_7"/>
</segment>
</net>
<net name="P2.6" class="0">
<segment>
<wire x1="114.3" y1="157.48" x2="106.68" y2="157.48" width="0.1524" layer="91"/>
<label x="101.6" y="157.48" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="14"/>
</segment>
<segment>
<wire x1="30.48" y1="66.04" x2="25.4" y2="66.04" width="0.1524" layer="91"/>
<label x="20.32" y="66.04" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P2_6"/>
</segment>
</net>
<net name="P2.5" class="0">
<segment>
<wire x1="114.3" y1="154.94" x2="106.68" y2="154.94" width="0.1524" layer="91"/>
<label x="101.6" y="154.94" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="15"/>
</segment>
<segment>
<wire x1="45.72" y1="81.28" x2="45.72" y2="86.36" width="0.1524" layer="91"/>
<label x="45.72" y="86.36" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P2_5"/>
</segment>
</net>
<net name="P2.4" class="0">
<segment>
<wire x1="114.3" y1="152.4" x2="106.68" y2="152.4" width="0.1524" layer="91"/>
<label x="101.6" y="152.4" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="16"/>
</segment>
<segment>
<wire x1="50.8" y1="81.28" x2="50.8" y2="86.36" width="0.1524" layer="91"/>
<label x="50.8" y="86.36" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P2_4"/>
</segment>
</net>
<net name="P2.3" class="0">
<segment>
<wire x1="114.3" y1="149.86" x2="106.68" y2="149.86" width="0.1524" layer="91"/>
<label x="101.6" y="149.86" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="17"/>
</segment>
<segment>
<wire x1="53.34" y1="81.28" x2="53.34" y2="86.36" width="0.1524" layer="91"/>
<label x="53.34" y="86.36" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P2_3"/>
</segment>
</net>
<net name="P2.2" class="0">
<segment>
<wire x1="114.3" y1="147.32" x2="106.68" y2="147.32" width="0.1524" layer="91"/>
<label x="101.6" y="147.32" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="18"/>
</segment>
<segment>
<wire x1="55.88" y1="81.28" x2="55.88" y2="86.36" width="0.1524" layer="91"/>
<label x="55.88" y="86.36" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P2_2"/>
</segment>
</net>
<net name="P2.1" class="0">
<segment>
<wire x1="114.3" y1="144.78" x2="106.68" y2="144.78" width="0.1524" layer="91"/>
<label x="101.6" y="144.78" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="19"/>
</segment>
<segment>
<wire x1="58.42" y1="81.28" x2="58.42" y2="86.36" width="0.1524" layer="91"/>
<label x="58.42" y="86.36" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P2_1"/>
</segment>
</net>
<net name="P2.0" class="0">
<segment>
<wire x1="114.3" y1="142.24" x2="106.68" y2="142.24" width="0.1524" layer="91"/>
<label x="101.6" y="142.24" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="20"/>
</segment>
<segment>
<wire x1="60.96" y1="81.28" x2="60.96" y2="86.36" width="0.1524" layer="91"/>
<label x="60.96" y="86.36" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="P2_0"/>
</segment>
</net>
<net name="!XRES" class="0">
<segment>
<wire x1="30.48" y1="43.18" x2="17.78" y2="43.18" width="0.1524" layer="91"/>
<label x="10.16" y="43.18" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="XRES"/>
</segment>
<segment>
<wire x1="233.68" y1="81.28" x2="233.68" y2="93.98" width="0.1524" layer="91"/>
<pinref part="XRES" gate="G$1" pin="1"/>
<wire x1="233.68" y1="93.98" x2="233.68" y2="96.52" width="0.1524" layer="91"/>
<wire x1="233.68" y1="96.52" x2="236.22" y2="96.52" width="0.1524" layer="91"/>
<pinref part="XRES" gate="G$1" pin="2"/>
<wire x1="236.22" y1="93.98" x2="233.68" y2="93.98" width="0.1524" layer="91"/>
<junction x="233.68" y="93.98"/>
<label x="231.14" y="76.2" size="1.778" layer="95"/>
</segment>
<segment>
<pinref part="X10" gate="-3" pin="S"/>
<wire x1="241.3" y1="7.62" x2="233.68" y2="7.62" width="0.1524" layer="91"/>
<label x="233.68" y="7.62" size="1.778" layer="95"/>
</segment>
<segment>
<pinref part="Q3" gate="G$1" pin="10"/>
<wire x1="248.92" y1="40.64" x2="259.08" y2="40.64" width="0.1524" layer="91"/>
<label x="259.08" y="40.64" size="1.778" layer="95"/>
</segment>
</net>
<net name="SWDIO" class="0">
<segment>
<wire x1="30.48" y1="40.64" x2="17.78" y2="40.64" width="0.1524" layer="91"/>
<label x="17.78" y="40.64" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P1_0_TMS"/>
</segment>
<segment>
<pinref part="X10" gate="-1" pin="S"/>
<wire x1="241.3" y1="12.7" x2="233.68" y2="12.7" width="0.1524" layer="91"/>
<label x="233.68" y="12.7" size="1.778" layer="95"/>
</segment>
<segment>
<pinref part="Q3" gate="G$1" pin="2"/>
<wire x1="248.92" y1="50.8" x2="259.08" y2="50.8" width="0.1524" layer="91"/>
<label x="259.08" y="50.8" size="1.778" layer="95"/>
</segment>
</net>
<net name="SWDCK" class="0">
<segment>
<wire x1="30.48" y1="38.1" x2="17.78" y2="38.1" width="0.1524" layer="91"/>
<label x="17.78" y="38.1" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P1_1_TCK"/>
</segment>
<segment>
<pinref part="X10" gate="-2" pin="S"/>
<wire x1="241.3" y1="10.16" x2="233.68" y2="10.16" width="0.1524" layer="91"/>
<label x="233.68" y="10.16" size="1.778" layer="95"/>
</segment>
<segment>
<pinref part="Q3" gate="G$1" pin="4"/>
<wire x1="248.92" y1="48.26" x2="259.08" y2="48.26" width="0.1524" layer="91"/>
<label x="259.08" y="48.26" size="1.778" layer="95"/>
</segment>
</net>
<net name="SWV" class="0">
<segment>
<wire x1="30.48" y1="33.02" x2="17.78" y2="33.02" width="0.1524" layer="91"/>
<label x="17.78" y="33.02" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="P1_3_TDO"/>
</segment>
<segment>
<pinref part="Q3" gate="G$1" pin="6"/>
<wire x1="248.92" y1="45.72" x2="259.08" y2="45.72" width="0.1524" layer="91"/>
<label x="259.08" y="45.72" size="1.778" layer="95"/>
</segment>
</net>
<net name="GND" class="0">
<segment>
<wire x1="162.56" y1="38.1" x2="162.56" y2="33.02" width="0.1524" layer="91"/>
<wire x1="162.56" y1="33.02" x2="147.32" y2="33.02" width="0.1524" layer="91"/>
<wire x1="147.32" y1="38.1" x2="147.32" y2="33.02" width="0.1524" layer="91"/>
<wire x1="129.54" y1="33.02" x2="139.7" y2="33.02" width="0.1524" layer="91"/>
<wire x1="139.7" y1="33.02" x2="147.32" y2="33.02" width="0.1524" layer="91"/>
<wire x1="101.6" y1="45.72" x2="139.7" y2="45.72" width="0.1524" layer="91"/>
<wire x1="139.7" y1="45.72" x2="139.7" y2="33.02" width="0.1524" layer="91"/>
<wire x1="139.7" y1="45.72" x2="139.7" y2="50.8" width="0.1524" layer="91"/>
<wire x1="139.7" y1="50.8" x2="101.6" y2="50.8" width="0.1524" layer="91"/>
<junction x="147.32" y="33.02"/>
<junction x="139.7" y="45.72"/>
<junction x="139.7" y="33.02"/>
<pinref part="C7" gate="G$1" pin="2"/>
<pinref part="GND32" gate="1" pin="GND"/>
<pinref part="C8" gate="G$1" pin="2"/>
<pinref part="C9" gate="G$1" pin="2"/>
<pinref part="U$1" gate="G$1" pin="VSSA"/>
<pinref part="U$1" gate="G$1" pin="VSSD@2"/>
</segment>
<segment>
<pinref part="C10" gate="G$1" pin="2"/>
<pinref part="GND33" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="63.5" y1="10.16" x2="63.5" y2="-33.02" width="0.1524" layer="91"/>
<wire x1="63.5" y1="-33.02" x2="53.34" y2="-33.02" width="0.1524" layer="91"/>
<wire x1="53.34" y1="-33.02" x2="43.18" y2="-33.02" width="0.1524" layer="91"/>
<wire x1="53.34" y1="-30.48" x2="53.34" y2="-33.02" width="0.1524" layer="91"/>
<wire x1="43.18" y1="-30.48" x2="43.18" y2="-33.02" width="0.1524" layer="91"/>
<wire x1="43.18" y1="-33.02" x2="43.18" y2="-35.56" width="0.1524" layer="91"/>
<junction x="53.34" y="-33.02"/>
<junction x="43.18" y="-33.02"/>
<pinref part="U$1" gate="G$1" pin="VSSD@1"/>
<pinref part="C11" gate="G$1" pin="2"/>
<pinref part="C12" gate="G$1" pin="2"/>
<pinref part="GND34" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="25.4" y1="-22.86" x2="25.4" y2="-25.4" width="0.1524" layer="91"/>
<pinref part="C13" gate="G$1" pin="2"/>
<pinref part="GND35" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="30.48" y1="55.88" x2="5.08" y2="55.88" width="0.1524" layer="91"/>
<wire x1="5.08" y1="55.88" x2="5.08" y2="50.8" width="0.1524" layer="91"/>
<wire x1="5.08" y1="50.8" x2="5.08" y2="48.26" width="0.1524" layer="91"/>
<wire x1="5.08" y1="48.26" x2="5.08" y2="45.72" width="0.1524" layer="91"/>
<wire x1="5.08" y1="45.72" x2="5.08" y2="40.64" width="0.1524" layer="91"/>
<wire x1="30.48" y1="50.8" x2="5.08" y2="50.8" width="0.1524" layer="91"/>
<wire x1="30.48" y1="48.26" x2="5.08" y2="48.26" width="0.1524" layer="91"/>
<wire x1="30.48" y1="45.72" x2="5.08" y2="45.72" width="0.1524" layer="91"/>
<junction x="5.08" y="50.8"/>
<junction x="5.08" y="48.26"/>
<junction x="5.08" y="45.72"/>
<pinref part="U$1" gate="G$1" pin="VSSB"/>
<pinref part="GND36" gate="1" pin="GND"/>
<pinref part="U$1" gate="G$1" pin="VBOOST"/>
<pinref part="U$1" gate="G$1" pin="VBAT"/>
<pinref part="U$1" gate="G$1" pin="VSSD"/>
</segment>
<segment>
<wire x1="15.24" y1="83.82" x2="15.24" y2="81.28" width="0.1524" layer="91"/>
<pinref part="C14" gate="G$1" pin="2"/>
<pinref part="GND37" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="55.88" y1="101.6" x2="55.88" y2="99.06" width="0.1524" layer="91"/>
<wire x1="55.88" y1="99.06" x2="50.8" y2="99.06" width="0.1524" layer="91"/>
<wire x1="50.8" y1="99.06" x2="45.72" y2="99.06" width="0.1524" layer="91"/>
<wire x1="45.72" y1="99.06" x2="45.72" y2="101.6" width="0.1524" layer="91"/>
<junction x="50.8" y="99.06"/>
<pinref part="C16" gate="G$1" pin="2"/>
<pinref part="C15" gate="G$1" pin="2"/>
<pinref part="GND38" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="71.12" y1="81.28" x2="71.12" y2="101.6" width="0.1524" layer="91"/>
<wire x1="71.12" y1="101.6" x2="91.44" y2="101.6" width="0.1524" layer="91"/>
<wire x1="91.44" y1="106.68" x2="91.44" y2="101.6" width="0.1524" layer="91"/>
<wire x1="91.44" y1="101.6" x2="91.44" y2="99.06" width="0.1524" layer="91"/>
<junction x="91.44" y="101.6"/>
<pinref part="U$1" gate="G$1" pin="VSSD@3"/>
<pinref part="C17" gate="G$1" pin="2"/>
<pinref part="GND39" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="114.3" y1="78.74" x2="114.3" y2="76.2" width="0.1524" layer="91"/>
<pinref part="C18" gate="G$1" pin="2"/>
<pinref part="GND40" gate="1" pin="GND"/>
</segment>
<segment>
<wire x1="53.34" y1="139.7" x2="45.72" y2="139.7" width="0.1524" layer="91"/>
<label x="45.72" y="139.7" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="20"/>
</segment>
<segment>
<pinref part="U$1" gate="G$2" pin="VSSDPAD"/>
<pinref part="GND41" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="XRES" gate="G$1" pin="4"/>
<pinref part="GND16" gate="1" pin="GND"/>
<wire x1="246.38" y1="93.98" x2="248.92" y2="93.98" width="0.1524" layer="91"/>
<wire x1="248.92" y1="93.98" x2="251.46" y2="93.98" width="0.1524" layer="91"/>
<wire x1="251.46" y1="93.98" x2="251.46" y2="91.44" width="0.1524" layer="91"/>
<pinref part="XRES" gate="G$1" pin="3"/>
<wire x1="246.38" y1="96.52" x2="248.92" y2="96.52" width="0.1524" layer="91"/>
<wire x1="248.92" y1="96.52" x2="248.92" y2="93.98" width="0.1524" layer="91"/>
<junction x="248.92" y="93.98"/>
</segment>
<segment>
<pinref part="X10" gate="-4" pin="S"/>
<wire x1="241.3" y1="5.08" x2="233.68" y2="5.08" width="0.1524" layer="91"/>
<label x="233.68" y="5.08" size="1.778" layer="95"/>
</segment>
<segment>
<pinref part="C30" gate="G$1" pin="2"/>
<pinref part="GND46" gate="1" pin="GND"/>
</segment>
<segment>
<pinref part="Q3" gate="G$1" pin="3"/>
<wire x1="241.3" y1="48.26" x2="236.22" y2="48.26" width="0.1524" layer="91"/>
<wire x1="236.22" y1="48.26" x2="236.22" y2="45.72" width="0.1524" layer="91"/>
<pinref part="Q3" gate="G$1" pin="5"/>
<junction x="236.22" y="45.72"/>
<wire x1="236.22" y1="45.72" x2="236.22" y2="43.18" width="0.1524" layer="91"/>
<wire x1="236.22" y1="43.18" x2="236.22" y2="40.64" width="0.1524" layer="91"/>
<wire x1="236.22" y1="40.64" x2="236.22" y2="35.56" width="0.1524" layer="91"/>
<wire x1="236.22" y1="45.72" x2="241.3" y2="45.72" width="0.1524" layer="91"/>
<pinref part="Q3" gate="G$1" pin="9"/>
<wire x1="241.3" y1="40.64" x2="236.22" y2="40.64" width="0.1524" layer="91"/>
<junction x="236.22" y="40.64"/>
<pinref part="GND47" gate="1" pin="GND"/>
<pinref part="Q3" gate="G$1" pin="7"/>
<wire x1="241.3" y1="43.18" x2="236.22" y2="43.18" width="0.1524" layer="91"/>
<junction x="236.22" y="43.18"/>
</segment>
</net>
<net name="N$35" class="0">
<segment>
<wire x1="101.6" y1="43.18" x2="129.54" y2="43.18" width="0.1524" layer="91"/>
<wire x1="129.54" y1="43.18" x2="129.54" y2="40.64" width="0.1524" layer="91"/>
<pinref part="U$1" gate="G$1" pin="VCCA"/>
<pinref part="C9" gate="G$1" pin="1"/>
</segment>
</net>
<net name="VCCD" class="0">
<segment>
<wire x1="73.66" y1="81.28" x2="73.66" y2="116.84" width="0.1524" layer="91"/>
<wire x1="73.66" y1="116.84" x2="91.44" y2="116.84" width="0.1524" layer="91"/>
<wire x1="91.44" y1="116.84" x2="91.44" y2="114.3" width="0.1524" layer="91"/>
<wire x1="91.44" y1="116.84" x2="91.44" y2="119.38" width="0.1524" layer="91"/>
<junction x="91.44" y="116.84"/>
<label x="91.44" y="119.38" size="1.778" layer="95"/>
<pinref part="U$1" gate="G$1" pin="VCCD@1"/>
<pinref part="C17" gate="G$1" pin="1"/>
</segment>
<segment>
<wire x1="66.04" y1="10.16" x2="66.04" y2="5.08" width="0.1524" layer="91"/>
<label x="66.04" y="0" size="1.778" layer="95" rot="R90"/>
<pinref part="U$1" gate="G$1" pin="VCCD"/>
</segment>
</net>
<net name="VDD" class="0">
<segment>
<wire x1="114.3" y1="190.5" x2="106.68" y2="190.5" width="0.1524" layer="91"/>
<label x="101.6" y="190.5" size="1.778" layer="95"/>
<pinref part="JP14" gate="G$1" pin="1"/>
<pinref part="VDD8" gate="G$1" pin="VDD"/>
</segment>
<segment>
<wire x1="101.6" y1="25.4" x2="101.6" y2="15.24" width="0.1524" layer="91"/>
<wire x1="101.6" y1="15.24" x2="111.76" y2="15.24" width="0.1524" layer="91"/>
<wire x1="111.76" y1="15.24" x2="111.76" y2="12.7" width="0.1524" layer="91"/>
<wire x1="111.76" y1="15.24" x2="111.76" y2="17.78" width="0.1524" layer="91"/>
<junction x="111.76" y="15.24"/>
<pinref part="U$1" gate="G$1" pin="VDDIO3"/>
<pinref part="C10" gate="G$1" pin="1"/>
<pinref part="VDD1" gate="G$1" pin="VDD"/>
</segment>
<segment>
<wire x1="101.6" y1="48.26" x2="147.32" y2="48.26" width="0.1524" layer="91"/>
<wire x1="147.32" y1="48.26" x2="162.56" y2="48.26" width="0.1524" layer="91"/>
<wire x1="147.32" y1="48.26" x2="147.32" y2="53.34" width="0.1524" layer="91"/>
<wire x1="162.56" y1="48.26" x2="162.56" y2="45.72" width="0.1524" layer="91"/>
<wire x1="147.32" y1="48.26" x2="147.32" y2="45.72" width="0.1524" layer="91"/>
<junction x="147.32" y="48.26"/>
<pinref part="U$1" gate="G$1" pin="VDDA"/>
<pinref part="C7" gate="G$1" pin="1"/>
<pinref part="C8" gate="G$1" pin="1"/>
<pinref part="VDD2" gate="G$1" pin="VDD"/>
</segment>
<segment>
<wire x1="86.36" y1="81.28" x2="86.36" y2="88.9" width="0.1524" layer="91"/>
<wire x1="86.36" y1="88.9" x2="114.3" y2="88.9" width="0.1524" layer="91"/>
<wire x1="114.3" y1="88.9" x2="114.3" y2="86.36" width="0.1524" layer="91"/>
<pinref part="U$1" gate="G$1" pin="VDDIO0"/>
<pinref part="C18" gate="G$1" pin="1"/>
<pinref part="VDD3" gate="G$1" pin="VDD"/>
<junction x="114.3" y="88.9"/>
</segment>
<segment>
<wire x1="48.26" y1="81.28" x2="48.26" y2="93.98" width="0.1524" layer="91"/>
<wire x1="48.26" y1="93.98" x2="15.24" y2="93.98" width="0.1524" layer="91"/>
<wire x1="15.24" y1="96.52" x2="15.24" y2="93.98" width="0.1524" layer="91"/>
<wire x1="15.24" y1="93.98" x2="15.24" y2="91.44" width="0.1524" layer="91"/>
<junction x="15.24" y="93.98"/>
<pinref part="U$1" gate="G$1" pin="VDDIO2"/>
<pinref part="C14" gate="G$1" pin="1"/>
<pinref part="VDD4" gate="G$1" pin="VDD"/>
</segment>
<segment>
<wire x1="68.58" y1="81.28" x2="68.58" y2="111.76" width="0.1524" layer="91"/>
<wire x1="68.58" y1="111.76" x2="55.88" y2="111.76" width="0.1524" layer="91"/>
<wire x1="55.88" y1="111.76" x2="45.72" y2="111.76" width="0.1524" layer="91"/>
<wire x1="45.72" y1="111.76" x2="45.72" y2="109.22" width="0.1524" layer="91"/>
<wire x1="55.88" y1="111.76" x2="55.88" y2="109.22" width="0.1524" layer="91"/>
<wire x1="68.58" y1="114.3" x2="68.58" y2="111.76" width="0.1524" layer="91"/>
<junction x="68.58" y="111.76"/>
<junction x="55.88" y="111.76"/>
<pinref part="U$1" gate="G$1" pin="VDDD@1"/>
<pinref part="C15" gate="G$1" pin="1"/>
<pinref part="C16" gate="G$1" pin="1"/>
<pinref part="VDD5" gate="G$1" pin="VDD"/>
</segment>
<segment>
<wire x1="60.96" y1="10.16" x2="60.96" y2="-20.32" width="0.1524" layer="91"/>
<wire x1="60.96" y1="-20.32" x2="53.34" y2="-20.32" width="0.1524" layer="91"/>
<wire x1="53.34" y1="-20.32" x2="43.18" y2="-20.32" width="0.1524" layer="91"/>
<wire x1="53.34" y1="-20.32" x2="53.34" y2="-17.78" width="0.1524" layer="91"/>
<wire x1="53.34" y1="-20.32" x2="53.34" y2="-22.86" width="0.1524" layer="91"/>
<wire x1="43.18" y1="-20.32" x2="43.18" y2="-22.86" width="0.1524" layer="91"/>
<junction x="53.34" y="-20.32"/>
<pinref part="U$1" gate="G$1" pin="VDDD"/>
<pinref part="C11" gate="G$1" pin="1"/>
<pinref part="C12" gate="G$1" pin="1"/>
<pinref part="VDD6" gate="G$1" pin="VDD"/>
</segment>
<segment>
<wire x1="30.48" y1="25.4" x2="30.48" y2="-12.7" width="0.1524" layer="91"/>
<wire x1="30.48" y1="-12.7" x2="25.4" y2="-12.7" width="0.1524" layer="91"/>
<wire x1="25.4" y1="-12.7" x2="25.4" y2="-10.16" width="0.1524" layer="91"/>
<wire x1="25.4" y1="-12.7" x2="25.4" y2="-15.24" width="0.1524" layer="91"/>
<junction x="25.4" y="-12.7"/>
<pinref part="U$1" gate="G$1" pin="VDDIO1"/>
<pinref part="C13" gate="G$1" pin="1"/>
<pinref part="VDD7" gate="G$1" pin="VDD"/>
</segment>
<segment>
<pinref part="X10" gate="-5" pin="S"/>
<wire x1="241.3" y1="2.54" x2="233.68" y2="2.54" width="0.1524" layer="91"/>
<label x="233.68" y="2.54" size="1.778" layer="95"/>
</segment>
</net>
<net name="MXO" class="0">
<segment>
<pinref part="U$1" gate="G$1" pin="P15_0_MXO"/>
<wire x1="68.58" y1="10.16" x2="68.58" y2="-7.62" width="0.1524" layer="91"/>
<label x="68.58" y="-7.62" size="1.778" layer="95" rot="R90"/>
</segment>
<segment>
<wire x1="53.34" y1="142.24" x2="45.72" y2="142.24" width="0.1524" layer="91"/>
<label x="45.72" y="142.24" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="19"/>
</segment>
</net>
<net name="MXI" class="0">
<segment>
<pinref part="U$1" gate="G$1" pin="P15_1_MXI"/>
<wire x1="71.12" y1="10.16" x2="71.12" y2="-7.62" width="0.1524" layer="91"/>
<label x="71.12" y="-7.62" size="1.778" layer="95" rot="R90"/>
</segment>
<segment>
<wire x1="53.34" y1="144.78" x2="45.72" y2="144.78" width="0.1524" layer="91"/>
<label x="45.72" y="144.78" size="1.778" layer="95"/>
<pinref part="JP13" gate="G$1" pin="18"/>
</segment>
</net>
<net name="VDDD" class="0">
<segment>
<pinref part="Q3" gate="G$1" pin="1"/>
<wire x1="241.3" y1="50.8" x2="233.68" y2="50.8" width="0.1524" layer="91"/>
<wire x1="233.68" y1="50.8" x2="233.68" y2="58.42" width="0.1524" layer="91"/>
<label x="233.68" y="58.42" size="1.778" layer="95"/>
<pinref part="C30" gate="G$1" pin="1"/>
<junction x="233.68" y="50.8"/>
<wire x1="223.52" y1="50.8" x2="233.68" y2="50.8" width="0.1524" layer="91"/>
</segment>
</net>
<net name="TDI" class="0">
<segment>
<pinref part="U$1" gate="G$1" pin="P1_4_TDI"/>
<wire x1="30.48" y1="30.48" x2="17.78" y2="30.48" width="0.1524" layer="91"/>
<label x="17.78" y="30.48" size="1.778" layer="95"/>
</segment>
<segment>
<pinref part="Q3" gate="G$1" pin="8"/>
<wire x1="248.92" y1="43.18" x2="261.62" y2="43.18" width="0.1524" layer="91"/>
<label x="259.08" y="43.18" size="1.778" layer="95"/>
</segment>
</net>
</nets>
</sheet>
</sheets>
<errors>
<approved hash="104,1,30.48,231.14,IC1,VBATT1,N$2,,,"/>
<approved hash="104,1,71.12,48.26,IC1,GND1,GND,,,"/>
<approved hash="104,1,71.12,45.72,IC1,GND2,GND,,,"/>
<approved hash="104,1,71.12,43.18,IC1,GND3,GND,,,"/>
<approved hash="204,1,30.48,218.44,IC1,CHARGE1,,,,"/>
<approved hash="202,1,30.48,116.84,IC1,AXE,,,,"/>
<approved hash="202,1,30.48,104.14,IC1,SIMIN,,,,"/>
<approved hash="202,1,30.48,88.9,IC1,C105/RTS,,,,"/>
<approved hash="202,1,30.48,48.26,IC1,ADC_IN1,,,,"/>
<approved hash="202,1,30.48,45.72,IC1,ADC_IN2,,,,"/>
<approved hash="202,1,30.48,43.18,IC1,ADC_IN3,,,,"/>
<approved hash="104,1,30.48,228.6,IC1,VBATT2,N$2,,,"/>
<approved hash="104,1,30.48,226.06,IC1,VBATT3,N$2,,,"/>
<approved hash="104,1,30.48,223.52,IC1,VBATT4,N$2,,,"/>
<approved hash="204,1,30.48,215.9,IC1,CHARGE2,,,,"/>
<approved hash="104,1,71.12,40.64,IC1,GND4,GND,,,"/>
<approved hash="104,3,-5.08,17.78,U$1G$2,VSSDPAD,GND,,,"/>
<approved hash="113,1,193.571,130.071,FRAME1,,,,,"/>
<approved hash="113,1,348.302,97.79,LED1,,,,,"/>
<approved hash="113,1,150.978,149.86,J4,,,,,"/>
<approved hash="113,1,97.1973,227.135,JP1,,,,,"/>
<approved hash="113,1,361.357,222.055,JP2,,,,,"/>
<approved hash="113,1,358.817,103.945,JP5,,,,,"/>
<approved hash="113,1,148.438,58.42,J2,,,,,"/>
<approved hash="113,2,209.355,45.0427,JP9,,,,,"/>
<approved hash="113,2,323.257,242.274,JP11,,,,,"/>
<approved hash="113,2,363.897,242.274,JP12,,,,,"/>
<approved hash="113,2,264.691,158.011,FRAME2,,,,,"/>
<approved hash="113,2,145.102,227.33,LED2,,,,,"/>
<approved hash="113,2,105.215,75.5227,JP3,,,,,"/>
<approved hash="113,2,101.6,86.8468,D4,,,,,"/>
<approved hash="113,1,78.74,231.627,D2,,,,,"/>
<approved hash="113,1,88.9,231.627,D5,,,,,"/>
<approved hash="113,1,221.657,100.135,JP6,,,,,"/>
<approved hash="113,1,287.697,89.9753,JP7,,,,,"/>
</errors>
</schematic>
</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

repository: open-storm/open-storm-hardware

license_type: permissive

repo_name: open-storm/open-storm-hardware

branch_name: refs/heads/master

extension: sch


text:
/// @copyright
/// Copyright (C) 2020 Assured Information Security, Inc.
///
/// @copyright
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights
/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
/// copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// @copyright
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// @copyright
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
/// SOFTWARE.

#ifndef DISPATCH_SYSCALL_VPS_FAILURE_OP_HPP
#define DISPATCH_SYSCALL_VPS_FAILURE_OP_HPP

#include <bf_constants.hpp>
#include <bf_reg_t.hpp>
#include <ext_t.hpp>
#include <intrinsic_t.hpp>
#include <page_pool_t.hpp>
#include <tls_t.hpp>
#include <vm_pool_t.hpp>
#include <vp_pool_t.hpp>
#include <vps_pool_t.hpp>

#include <bsl/convert.hpp>
#include <bsl/debug.hpp>
#include <bsl/finally.hpp>
#include <bsl/safe_integral.hpp>
#include <bsl/unlikely.hpp>

namespace mk
{
    /// <!-- description -->
    ///   @brief Implements the bf_vps_op_create_vps syscall
    ///
    /// <!-- inputs/outputs -->
    ///   @param tls the current TLS block
    ///   @param page_pool the page pool to use
    ///   @param vps_pool the VPS pool to use
    ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    ///     otherwise
    ///
    [[nodiscard]] constexpr auto
    syscall_vps_op_create_vps_failure(
        tls_t &tls, page_pool_t &page_pool, vps_pool_t &vps_pool) noexcept -> bsl::errc_type
    {
        bsl::errc_type ret{};

        if (!tls.state_reversal_required) {
            return bsl::errc_success;
        }

        ret = vps_pool.deallocate(tls, page_pool, tls.log_vpsid);
        if (bsl::unlikely(!bsl::success_or_precondition(ret))) {
            bsl::print<bsl::V>() << bsl::here();
            return ret;
        }

        return bsl::errc_success;
    }

    /// <!-- description -->
    ///   @brief Implements the bf_vps_op_destroy_vps syscall
    ///
    /// <!-- inputs/outputs -->
    ///   @param tls the current TLS block
    ///   @param vps_pool the VPS pool to use
    ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    ///     otherwise
    ///
    [[nodiscard]] constexpr auto
    syscall_vps_op_destroy_vps_failure(tls_t &tls, vps_pool_t &vps_pool) noexcept -> bsl::errc_type
    {
        bsl::errc_type ret{};

        if (!tls.state_reversal_required) {
            return bsl::errc_success;
        }

        ret = vps_pool.zombify(bsl::to_u16_unsafe(tls.ext_reg1));
        if (bsl::unlikely(!bsl::success_or_precondition(ret))) {
            bsl::print<bsl::V>() << bsl::here();
            return ret;
        }

        return bsl::errc_success;
    }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_init_as_root syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_init_as_root_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.state_save_to_vps(
    //         tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1), *tls.root_vp_state)};

    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_read8 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_read8_failure(tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const val{vps_pool.template read<bsl::uint8>(
    //         tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1), tls.ext_reg2)};

    //     if (bsl::unlikely(!val)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return bsl::errc_failure;
    //     }

    //     constexpr bsl::safe_uintmax mask{0xFFFFFFFFFFFFFF00U};
    //     tls.ext_reg0 = ((tls.ext_reg0 & mask) | bsl::to_umax(val)).get();

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_read16 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_read16_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const val{vps_pool.template read<bsl::uint16>(
    //         tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1), tls.ext_reg2)};

    //     if (bsl::unlikely(!val)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return bsl::errc_failure;
    //     }

    //     constexpr bsl::safe_uintmax mask{0xFFFFFFFFFFFF0000U};
    //     tls.ext_reg0 = ((tls.ext_reg0 & mask) | bsl::to_umax(val)).get();

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_read32 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_read32_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const val{vps_pool.template read<bsl::uint32>(
    //         tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1), tls.ext_reg2)};

    //     if (bsl::unlikely(!val)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return bsl::errc_failure;
    //     }

    //     constexpr bsl::safe_uintmax mask{0xFFFFFFFF00000000U};
    //     tls.ext_reg0 = ((tls.ext_reg0 & mask) | bsl::to_umax(val)).get();

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_read64 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_read64_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const val{vps_pool.template read<bsl::uint64>(
    //         tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1), tls.ext_reg2)};

    //     if (bsl::unlikely(!val)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return bsl::errc_failure;
    //     }

    //     tls.ext_reg0 = val.get();

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_write8 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_write8_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.template write<bsl::uint8>(
    //         tls,
    //         intrinsic,
    //         bsl::to_u16_unsafe(tls.ext_reg1),
    //         tls.ext_reg2,
    //         bsl::to_u8_unsafe(tls.ext_reg3))};

    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return bsl::errc_failure;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_write16 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_write16_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.template write<bsl::uint16>(
    //         tls,
    //         intrinsic,
    //         bsl::to_u16_unsafe(tls.ext_reg1),
    //         tls.ext_reg2,
    //         bsl::to_u16_unsafe(tls.ext_reg3))};

    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_write32 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_write32_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.template write<bsl::uint32>(
    //         tls,
    //         intrinsic,
    //         bsl::to_u16_unsafe(tls.ext_reg1),
    //         tls.ext_reg2,
    //         bsl::to_u32_unsafe(tls.ext_reg3))};

    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_write64 syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_write64_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.template write<bsl::uint64>(
    //         tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1), tls.ext_reg2, tls.ext_reg3)};

    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_read_reg syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_read_reg_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const val{vps_pool.read_reg(
    //         tls,
    //         intrinsic,
    //         bsl::to_u16_unsafe(tls.ext_reg1),
    //         static_cast<syscall::bf_reg_t>(tls.ext_reg2))};

    //     if (bsl::unlikely(!val)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return bsl::errc_failure;
    //     }

    //     tls.ext_reg0 = val.get();

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_write_reg syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_write_reg_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.write_reg(
    //         tls,
    //         intrinsic,
    //         bsl::to_u16_unsafe(tls.ext_reg1),
    //         static_cast<syscall::bf_reg_t>(tls.ext_reg2),
    //         tls.ext_reg3)};

    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_run syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vm_pool the VM pool to use
    // ///   @param vp_pool the VP pool to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_run_failure(
    //     tls_t &tls,
    //     intrinsic_t &intrinsic,
    //     vm_pool_t &vm_pool,
    //     vp_pool_t &vp_pool,
    //     vps_pool_t &vps_pool) noexcept -> bsl::errc_type
    // {
    //     bsl::errc_type ret{};

    //     // ---------------------------------------------------------------------
    //     // Gather Arguments
    //     // ---------------------------------------------------------------------

    //     auto const vmid{bsl::to_u16_unsafe(tls.ext_reg1)};
    //     if (bsl::unlikely(syscall::BF_INVALID_ID == vmid)) {
    //         bsl::error() << "vmid "           // --
    //                      << bsl::hex(vmid)    // --
    //                      << " is invalid"     // --
    //                      << bsl::endl         // --
    //                      << bsl::here();      // --

    //         tls.syscall_ret_status = syscall::BF_STATUS_INVALID_PARAMS1.get();
    //         return bsl::errc_failure;
    //     }

    //     auto const vpid{bsl::to_u16_unsafe(tls.ext_reg2)};
    //     if (bsl::unlikely(syscall::BF_INVALID_ID == vpid)) {
    //         bsl::error() << "vpid "           // --
    //                      << bsl::hex(vpid)    // --
    //                      << " is invalid"     // --
    //                      << bsl::endl         // --
    //                      << bsl::here();      // --

    //         tls.syscall_ret_status = syscall::BF_STATUS_INVALID_PARAMS2.get();
    //         return bsl::errc_failure;
    //     }

    //     auto const vpsid{bsl::to_u16_unsafe(tls.ext_reg3)};
    //     if (bsl::unlikely(syscall::BF_INVALID_ID == vpsid)) {
    //         bsl::error() << "vpsid "           // --
    //                      << bsl::hex(vpsid)    // --
    //                      << " is invalid"      // --
    //                      << bsl::endl          // --
    //                      << bsl::here();       // --

    //         tls.syscall_ret_status = syscall::BF_STATUS_INVALID_PARAMS3.get();
    //         return bsl::errc_failure;
    //     }

    //     // ---------------------------------------------------------------------
    //     // Validate Assignment
    //     // ---------------------------------------------------------------------

    //     /// TODO:
    //     /// - Add assignment checks here

    //     // ---------------------------------------------------------------------
    //     // Migrate
    //     // ---------------------------------------------------------------------

    //     /// TODO:
    //     /// - Add migration here

    //     // ---------------------------------------------------------------------
    //     // Activate VM
    //     // ---------------------------------------------------------------------

    //     if (tls.active_vmid != vmid) {
    //         if (syscall::BF_INVALID_ID != tls.active_vmid) {
    //             ret = vm_pool.set_inactive(tls, tls.active_vmid);
    //             if (bsl::unlikely(!ret)) {
    //                 bsl::print<bsl::V>() << bsl::here();
    //                 return ret;
    //             }

    //             bsl::touch();
    //         }
    //         else {
    //             bsl::touch();
    //         }

    //         ret = vm_pool.set_active(tls, vmid);
    //         if (bsl::unlikely(!ret)) {
    //             bsl::print<bsl::V>() << bsl::here();
    //             return ret;
    //         }

    //         bsl::touch();
    //     }
    //     else {
    //         bsl::touch();
    //     }

    //     // ---------------------------------------------------------------------
    //     // Activate VP
    //     // ---------------------------------------------------------------------

    //     if (tls.active_vpid != vpid) {
    //         if (syscall::BF_INVALID_ID != tls.active_vpid) {
    //             ret = vp_pool.set_inactive(tls, tls.active_vpid);
    //             if (bsl::unlikely(!ret)) {
    //                 bsl::print<bsl::V>() << bsl::here();
    //                 return ret;
    //             }

    //             bsl::touch();
    //         }
    //         else {
    //             bsl::touch();
    //         }

    //         ret = vp_pool.set_active(tls, vpid);
    //         if (bsl::unlikely(!ret)) {
    //             bsl::print<bsl::V>() << bsl::here();
    //             return ret;
    //         }

    //         bsl::touch();
    //     }
    //     else {
    //         bsl::touch();
    //     }

    //     // ---------------------------------------------------------------------
    //     // Activate VPS
    //     // ---------------------------------------------------------------------

    //     if (tls.active_vpsid != vpsid) {
    //         if (syscall::BF_INVALID_ID != tls.active_vpsid) {
    //             ret = vps_pool.set_inactive(tls, intrinsic, tls.active_vpsid);
    //             if (bsl::unlikely(!ret)) {
    //                 bsl::print<bsl::V>() << bsl::here();
    //                 return ret;
    //             }

    //             bsl::touch();
    //         }
    //         else {
    //             bsl::touch();
    //         }

    //         ret = vps_pool.set_active(tls, intrinsic, vpsid);
    //         if (bsl::unlikely(!ret)) {
    //             bsl::print<bsl::V>() << bsl::here();
    //             return ret;
    //         }

    //         bsl::touch();
    //     }
    //     else {
    //         bsl::touch();
    //     }

    //     // ---------------------------------------------------------------------
    //     // Done
    //     // ---------------------------------------------------------------------

    //     return_to_mk(bsl::exit_success);

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_run_current syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] inline auto
    // syscall_vps_op_run_current_failure(tls_t &tls) noexcept -> bsl::errc_type
    // {
    //     return_to_mk(bsl::exit_success);

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_advance_ip syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_advance_ip_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.advance_ip(tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1))};
    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_advance_ip_and_run_current syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_advance_ip_and_run_current_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.advance_ip(tls, intrinsic, tls.active_vpsid)};
    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     return_to_mk(bsl::exit_success);

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_promote syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_promote_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.vps_to_state_save(
    //         tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1), *tls.root_vp_state)};

    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     promote(tls.root_vp_state);

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    // /// <!-- description -->
    // ///   @brief Implements the bf_vps_op_clear_vps syscall
    // ///
    // /// <!-- inputs/outputs -->
    // ///   @param tls the current TLS block
    // ///   @param intrinsic the intrinsics to use
    // ///   @param vps_pool the VPS pool to use
    // ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    // ///     otherwise
    // ///
    // [[nodiscard]] constexpr auto
    // syscall_vps_op_clear_vps_failure(
    //     tls_t &tls, intrinsic_t &intrinsic, vps_pool_t &vps_pool) noexcept
    //     -> bsl::errc_type
    // {
    //     auto const ret{vps_pool.clear(tls, intrinsic, bsl::to_u16_unsafe(tls.ext_reg1))};
    //     if (bsl::unlikely(!ret)) {
    //         bsl::print<bsl::V>() << bsl::here();
    //         return ret;
    //     }

    //     tls.syscall_ret_status = syscall::BF_STATUS_SUCCESS.get();
    //     return bsl::errc_success;
    // }

    /// <!-- description -->
    ///   @brief Dispatches the bf_vps_op syscalls
    ///
    /// <!-- inputs/outputs -->
    ///   @param tls the current TLS block
    ///   @param ext the extension that made the syscall
    ///   @param intrinsic the intrinsics to use
    ///   @param page_pool the page pool to use
    ///   @param vm_pool the VM pool to use
    ///   @param vp_pool the VP pool to use
    ///   @param vps_pool the VPS pool to use
    ///   @return Returns bsl::errc_success on success, bsl::errc_failure
    ///     otherwise
    ///
    [[nodiscard]] constexpr auto
    dispatch_syscall_vps_op_failure(
        tls_t &tls,
        page_pool_t &page_pool,
        intrinsic_t &intrinsic,
        vm_pool_t &vm_pool,
        vp_pool_t &vp_pool,
        vps_pool_t &vps_pool,
        ext_t &ext) noexcept -> bsl::errc_type
    {
        bsl::errc_type ret{};

        bsl::discard(tls);
        bsl::discard(ext);
        bsl::discard(intrinsic);
        bsl::discard(page_pool);
        bsl::discard(vm_pool);
        bsl::discard(vp_pool);
        bsl::discard(vps_pool);

        switch (syscall::bf_syscall_index(tls.ext_syscall).get()) {
            case syscall::BF_VPS_OP_CREATE_VPS_IDX_VAL.get(): {
                ret = syscall_vps_op_create_vps_failure(tls, page_pool, vps_pool);
                return ret;
            }

            case syscall::BF_VPS_OP_DESTROY_VPS_IDX_VAL.get(): {
                ret = syscall_vps_op_destroy_vps_failure(tls, vps_pool);
                return ret;
            }

                // case syscall::BF_VPS_OP_INIT_AS_ROOT_IDX_VAL.get(): {
                //     ret = syscall_vps_op_init_as_root_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_READ8_IDX_VAL.get(): {
                //     ret = syscall_vps_op_read8_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_READ16_IDX_VAL.get(): {
                //     ret = syscall_vps_op_read16_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_READ32_IDX_VAL.get(): {
                //     ret = syscall_vps_op_read32_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_READ64_IDX_VAL.get(): {
                //     ret = syscall_vps_op_read64_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_WRITE8_IDX_VAL.get(): {
                //     ret = syscall_vps_op_write8_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_WRITE16_IDX_VAL.get(): {
                //     ret = syscall_vps_op_write16_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_WRITE32_IDX_VAL.get(): {
                //     ret = syscall_vps_op_write32_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_WRITE64_IDX_VAL.get(): {
                //     ret = syscall_vps_op_write64_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_READ_REG_IDX_VAL.get(): {
                //     ret = syscall_vps_op_read_reg_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_WRITE_REG_IDX_VAL.get(): {
                //     ret = syscall_vps_op_write_reg_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_RUN_IDX_VAL.get(): {
                //     ret = syscall_vps_op_run_failure(tls, intrinsic, vm_pool, vp_pool, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_RUN_CURRENT_IDX_VAL.get(): {
                //     ret = syscall_vps_op_run_current_failure(tls);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_ADVANCE_IP_IDX_VAL.get(): {
                //     ret = syscall_vps_op_advance_ip_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_ADVANCE_IP_AND_RUN_CURRENT_IDX_VAL.get(): {
                //     ret = syscall_vps_op_advance_ip_and_run_current_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_PROMOTE_IDX_VAL.get(): {
                //     ret = syscall_vps_op_promote_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

                // case syscall::BF_VPS_OP_CLEAR_VPS_IDX_VAL.get(): {
                //     ret = syscall_vps_op_clear_vps_failure(tls, intrinsic, vps_pool);
                //     return ret;
                // }

            default: {
                break;
            }
        }

        return bsl::errc_success;
    }
}

#endif

repository: simhaonline/hypervisor

repo_name: simhaonline/hypervisor

extension: hpp


text:
package sets

type Element interface {
	Key() string
	Equals(interface{}) bool
}

type Set []Element

func Diff(a, b Set) (Set, Set) {
	ma := make(map[string]Element)
	for _, e := range a {
		n := string(e.Key())
		if _, ok := ma[n]; !ok {
			ma[n] = e
		}
	}

	mb := make(map[string]Element)
	for _, e := range b {
		n := string(e.Key())
		if _, ok := mb[n]; !ok {
			mb[n] = e
		}
	}

	var del Set
	for k, v := range ma {
		if _, ok := mb[k]; !ok {
			del = append(del, v)
		}
	}

	var add Set
	for k, v := range mb {
		if _, ok := ma[k]; !ok {
			add = append(add, v)
		}
	}

	return add, del
}

type stringElement string

func (e stringElement) Key() string { return string(e) }

func (e stringElement) Equals(v interface{}) bool {
	if c, ok := v.(stringElement); ok && c == e {
		return true
	} else {
		return false
	}
}

func DiffStrings(a, b []string) ([]string, []string) {
	la, lb := len(a), len(b)

	ea := make(Set, la)
	for i := 0; i < la; i++ {
		ea[i] = stringElement(a[i])
	}

	eb := make(Set, lb)
	for i := 0; i < lb; i++ {
		eb[i] = stringElement(b[i])
	}

	add, del := Diff(ea, eb)

	adds := make([]string, len(add))
	for i, e := range add {
		adds[i] = string(e.(stringElement))
	}

	dels := make([]string, len(del))
	for i, e := range del {
		dels[i] = string(e.(stringElement))
	}

	return adds, dels
}

repository: bww/go-util

repo_name: bww/go-util

gha_license_id: MIT

gha_language: Go

extension: go


text:
package sync

import (
	"testing"

	"github.com/jfrog/helm-hub-sync/artifactory"
	"github.com/jfrog/helm-hub-sync/github"
	"github.com/stretchr/testify/assert"
)

func TestRemoveFromSlice(t *testing.T) {
	slice := []string{"hello", "world", "jfrog", "artifactory"}
	newSlice := RemoveFromSlice(slice, "bla")
	assert.ElementsMatch(t, newSlice, slice)
	newSlice = RemoveFromSlice(slice, "world")
	assert.NotContains(t, newSlice, "world")
	assert.NotEmpty(t, newSlice)
}

func TestNotInArtifactory(t *testing.T) {
	artiRepos := make(map[string]bool)
	artiRepos["myAwesomeRepo"] = true

	ghRepos := []github.Repo{
		github.Repo{
			Name: "myAwesomeRepo",
			URL:  "http://example.com",
		},
		github.Repo{
			Name: "notExistingAwesomeRepo",
			URL:  "http://example.com",
		},
	}

	repos := NotInArtifactory(artiRepos, ghRepos)
	assert.NotEmpty(t, repos)
	assert.Equal(t, len(repos), 1)
}

func TestNotInGitHub(t *testing.T) {
	ghRepos := make(map[string]bool)
	ghRepos["myAwesomeRepo"] = true

	artiRepos := []artifactory.Repository{
		artifactory.Repository{
			Key: "myAwesomeRepo",
		},
		artifactory.Repository{
			Key: "notExistingAwesomeRepo",
		},
	}

	repos := NotInGitHub(ghRepos, artiRepos)
	assert.NotEmpty(t, repos)
	assert.Equal(t, len(repos), 1)
}

repository: jfrog/helm-hub-sync

repo_name: jfrog/helm-hub-sync