<?xml version="1.0" encoding="windows-1252"?>
<informationTable xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<infoTable>
  <nameOfIssuer>A10 Networks Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>002121101</cusip>
  <value>9263791</value>
  <shrsOrPrnAmt>
    <sshPrnamt>400683</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>164251</Sole>
    <Shared>0</Shared>
    <None>236432</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ACI Worldwide Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>004498101</cusip>
  <value>5676563</value>
  <shrsOrPrnAmt>
    <sshPrnamt>138419</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>50715</Sole>
    <Shared>0</Shared>
    <None>87704</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Addus Homecare Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>006739106</cusip>
  <value>7202996</value>
  <shrsOrPrnAmt>
    <sshPrnamt>76914</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>32374</Sole>
    <Shared>0</Shared>
    <None>44540</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Albany Intl Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>012348108</cusip>
  <value>3462828</value>
  <shrsOrPrnAmt>
    <sshPrnamt>66325</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>36654</Sole>
    <Shared>0</Shared>
    <None>29671</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amphastar Pharmaceuticals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03209R103</cusip>
  <value>6564707</value>
  <shrsOrPrnAmt>
    <sshPrnamt>335105</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>131699</Sole>
    <Shared>0</Shared>
    <None>203406</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Armstrong World Industries Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>04247X102</cusip>
  <value>1744408</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10585</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5847</Sole>
    <Shared>0</Shared>
    <None>4738</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Badger Meter Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>056525108</cusip>
  <value>6026052</value>
  <shrsOrPrnAmt>
    <sshPrnamt>39554</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14478</Sole>
    <Shared>0</Shared>
    <None>25076</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank of Marin Bancorp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>063425102</cusip>
  <value>398034</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15530</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15530</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bankwell Financial Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>06654A103</cusip>
  <value>485491</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10006</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10006</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Barrett Business Services Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>068463108</cusip>
  <value>2420510</value>
  <shrsOrPrnAmt>
    <sshPrnamt>82951</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>50902</Sole>
    <Shared>0</Shared>
    <None>32049</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Blackline Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09239B109</cusip>
  <value>1139563</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30799</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16982</Sole>
    <Shared>0</Shared>
    <None>13817</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Boise Cascade Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09739D100</cusip>
  <value>1341104</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17681</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9750</Sole>
    <Shared>0</Shared>
    <None>7931</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cactus Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>127203107</cusip>
  <value>3217797</value>
  <shrsOrPrnAmt>
    <sshPrnamt>67929</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>37405</Sole>
    <Shared>0</Shared>
    <None>30524</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>California Wtr Svc Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>130788102</cusip>
  <value>1736159</value>
  <shrsOrPrnAmt>
    <sshPrnamt>38292</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21122</Sole>
    <Shared>0</Shared>
    <None>17170</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Catalyst Pharmaceuticals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>14888U101</cusip>
  <value>3854860</value>
  <shrsOrPrnAmt>
    <sshPrnamt>155689</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>85745</Sole>
    <Shared>0</Shared>
    <None>69944</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CBIZ Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>124805102</cusip>
  <value>1746378</value>
  <shrsOrPrnAmt>
    <sshPrnamt>65042</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>35919</Sole>
    <Shared>0</Shared>
    <None>29123</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Century Communities Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>156504300</cusip>
  <value>5760837</value>
  <shrsOrPrnAmt>
    <sshPrnamt>100398</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>36225</Sole>
    <Shared>0</Shared>
    <None>64173</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cognex Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>192422103</cusip>
  <value>2496677</value>
  <shrsOrPrnAmt>
    <sshPrnamt>50963</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>28135</Sole>
    <Shared>0</Shared>
    <None>22828</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Conmed Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>207410101</cusip>
  <value>1825177</value>
  <shrsOrPrnAmt>
    <sshPrnamt>51617</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>28515</Sole>
    <Shared>0</Shared>
    <None>23102</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Consensus Cloud Solutions Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20848V105</cusip>
  <value>1847209</value>
  <shrsOrPrnAmt>
    <sshPrnamt>77810</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>48451</Sole>
    <Shared>0</Shared>
    <None>29359</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Corcept Therapeutics Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>218352102</cusip>
  <value>2211971</value>
  <shrsOrPrnAmt>
    <sshPrnamt>54874</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30352</Sole>
    <Shared>0</Shared>
    <None>24522</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CRA Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>12618T105</cusip>
  <value>5473325</value>
  <shrsOrPrnAmt>
    <sshPrnamt>33811</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14825</Sole>
    <Shared>0</Shared>
    <None>18986</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Credo Technology Group Holding</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G25457105</cusip>
  <value>2723920</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29018</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16090</Sole>
    <Shared>0</Shared>
    <None>12928</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Diodes Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>254543101</cusip>
  <value>8036523</value>
  <shrsOrPrnAmt>
    <sshPrnamt>117734</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>45244</Sole>
    <Shared>0</Shared>
    <None>72490</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Donnelley Financial Solutions </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>25787G100</cusip>
  <value>3227252</value>
  <shrsOrPrnAmt>
    <sshPrnamt>68461</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>42469</Sole>
    <Shared>0</Shared>
    <None>25992</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dorman Prods Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>258278100</cusip>
  <value>4888953</value>
  <shrsOrPrnAmt>
    <sshPrnamt>46847</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>17014</Sole>
    <Shared>0</Shared>
    <None>29833</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Electromed Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>285409108</cusip>
  <value>305220</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13038</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13038</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ensign Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29358P101</cusip>
  <value>11916509</value>
  <shrsOrPrnAmt>
    <sshPrnamt>59139</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21709</Sole>
    <Shared>0</Shared>
    <None>37430</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>EPAM Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29414B104</cusip>
  <value>2923828</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21594</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11920</Sole>
    <Shared>0</Shared>
    <None>9674</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ePlus Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>294268107</cusip>
  <value>5141306</value>
  <shrsOrPrnAmt>
    <sshPrnamt>68323</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24756</Sole>
    <Shared>0</Shared>
    <None>43567</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Eton Pharmaceuticals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29772L108</cusip>
  <value>521982</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21150</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21150</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Evercore Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29977A105</cusip>
  <value>3212863</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10763</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5925</Sole>
    <Shared>0</Shared>
    <None>4838</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Evertec Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30040P103</cusip>
  <value>2023402</value>
  <shrsOrPrnAmt>
    <sshPrnamt>71701</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>39632</Sole>
    <Shared>0</Shared>
    <None>32069</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ExlService Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>302081104</cusip>
  <value>3152641</value>
  <shrsOrPrnAmt>
    <sshPrnamt>103535</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>57165</Sole>
    <Shared>0</Shared>
    <None>46370</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Exponent Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30214U102</cusip>
  <value>2694303</value>
  <shrsOrPrnAmt>
    <sshPrnamt>41292</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22790</Sole>
    <Shared>0</Shared>
    <None>18502</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Fabrinet</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G3323L100</cusip>
  <value>3519217</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6748</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3724</Sole>
    <Shared>0</Shared>
    <None>3024</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>First Financial Bankshares Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>32020R109</cusip>
  <value>2897762</value>
  <shrsOrPrnAmt>
    <sshPrnamt>98396</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>54306</Sole>
    <Shared>0</Shared>
    <None>44090</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Franklin Covey Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>353469109</cusip>
  <value>301842</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19116</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19116</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Franklin Electric Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>353514102</cusip>
  <value>2444441</value>
  <shrsOrPrnAmt>
    <sshPrnamt>26521</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14634</Sole>
    <Shared>0</Shared>
    <None>11887</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Gentherm Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>37253A103</cusip>
  <value>1805728</value>
  <shrsOrPrnAmt>
    <sshPrnamt>65001</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38724</Sole>
    <Shared>0</Shared>
    <None>26277</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Getty Realty Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>374297109</cusip>
  <value>2229403</value>
  <shrsOrPrnAmt>
    <sshPrnamt>70107</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38634</Sole>
    <Shared>0</Shared>
    <None>31473</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Glacier Bancorp Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>37637Q105</cusip>
  <value>7377831</value>
  <shrsOrPrnAmt>
    <sshPrnamt>165163</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>60328</Sole>
    <Shared>0</Shared>
    <None>104835</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Globus Med Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>379577208</cusip>
  <value>5708272</value>
  <shrsOrPrnAmt>
    <sshPrnamt>66252</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24316</Sole>
    <Shared>0</Shared>
    <None>41936</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Graham Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>384556106</cusip>
  <value>201956</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2559</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2559</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Grand Canyon Ed Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>38526M106</cusip>
  <value>2990998</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17591</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9716</Sole>
    <Shared>0</Shared>
    <None>7875</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hawkins Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>420261109</cusip>
  <value>2691072</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17520</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9693</Sole>
    <Shared>0</Shared>
    <None>7827</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Healthcare Services Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>421906108</cusip>
  <value>2645323</value>
  <shrsOrPrnAmt>
    <sshPrnamt>142605</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>78577</Sole>
    <Shared>0</Shared>
    <None>64028</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>HealthStream Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>42222N103</cusip>
  <value>1106929</value>
  <shrsOrPrnAmt>
    <sshPrnamt>53449</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33834</Sole>
    <Shared>0</Shared>
    <None>19615</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hope Bancorp Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>43940T109</cusip>
  <value>1827334</value>
  <shrsOrPrnAmt>
    <sshPrnamt>163593</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>90142</Sole>
    <Shared>0</Shared>
    <None>73451</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Innovex International Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>457651107</cusip>
  <value>4077593</value>
  <shrsOrPrnAmt>
    <sshPrnamt>167183</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>102161</Sole>
    <Shared>0</Shared>
    <None>65022</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Insteel Industries Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>45774W108</cusip>
  <value>3179943</value>
  <shrsOrPrnAmt>
    <sshPrnamt>94613</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>58629</Sole>
    <Shared>0</Shared>
    <None>35984</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>inTEST Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>461147100</cusip>
  <value>765328</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56068</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56068</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Investors Title Co NC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>461804106</cusip>
  <value>318186</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1464</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1464</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Iradimed Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46266A109</cusip>
  <value>6985877</value>
  <shrsOrPrnAmt>
    <sshPrnamt>72573</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31222</Sole>
    <Shared>0</Shared>
    <None>41351</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>J &amp; J Snack Foods Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>466032109</cusip>
  <value>2420747</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30538</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16900</Sole>
    <Shared>0</Shared>
    <None>13638</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Joint Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>47973J102</cusip>
  <value>217436</value>
  <shrsOrPrnAmt>
    <sshPrnamt>24569</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24569</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Krystal Biotech Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>501147102</cusip>
  <value>3111464</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12045</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6678</Sole>
    <Shared>0</Shared>
    <None>5367</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Kulicke &amp; Soffa Industries Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>501242101</cusip>
  <value>6196344</value>
  <shrsOrPrnAmt>
    <sshPrnamt>94284</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>35926</Sole>
    <Shared>0</Shared>
    <None>58358</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>La-Z-Boy Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>505336107</cusip>
  <value>2080069</value>
  <shrsOrPrnAmt>
    <sshPrnamt>64719</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>35800</Sole>
    <Shared>0</Shared>
    <None>28919</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lakeland Financial Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>511656100</cusip>
  <value>1751238</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30520</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16828</Sole>
    <Shared>0</Shared>
    <None>13692</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Landstar Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>515098101</cusip>
  <value>3770171</value>
  <shrsOrPrnAmt>
    <sshPrnamt>23518</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12995</Sole>
    <Shared>0</Shared>
    <None>10523</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lemaitre Vascular Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>525558201</cusip>
  <value>7684476</value>
  <shrsOrPrnAmt>
    <sshPrnamt>70390</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>28393</Sole>
    <Shared>0</Shared>
    <None>41997</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Liquidity Services Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>53635B107</cusip>
  <value>266570</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8720</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8720</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lithia Motors Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>536797103</cusip>
  <value>5036603</value>
  <shrsOrPrnAmt>
    <sshPrnamt>20169</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7322</Sole>
    <Shared>0</Shared>
    <None>12847</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Liveramp Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>53815P108</cusip>
  <value>2646272</value>
  <shrsOrPrnAmt>
    <sshPrnamt>99784</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>55135</Sole>
    <Shared>0</Shared>
    <None>44649</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>LTC Properties Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>502175102</cusip>
  <value>1366931</value>
  <shrsOrPrnAmt>
    <sshPrnamt>36785</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20270</Sole>
    <Shared>0</Shared>
    <None>16515</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Macom Tech Solutions Holdings </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>55405Y100</cusip>
  <value>6307676</value>
  <shrsOrPrnAmt>
    <sshPrnamt>28404</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10644</Sole>
    <Shared>0</Shared>
    <None>17760</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Matrix Service Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>576853105</cusip>
  <value>355880</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31000</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31000</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Maximus Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>577933104</cusip>
  <value>1949089</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30407</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16841</Sole>
    <Shared>0</Shared>
    <None>13566</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Modine Manufacturing Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>607828100</cusip>
  <value>7506401</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34638</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12558</Sole>
    <Shared>0</Shared>
    <None>22080</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>MYR Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>55405W104</cusip>
  <value>2033833</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7204</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3997</Sole>
    <Shared>0</Shared>
    <None>3207</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Napco Security Technologies In</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>630402105</cusip>
  <value>2308648</value>
  <shrsOrPrnAmt>
    <sshPrnamt>58610</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>35836</Sole>
    <Shared>0</Shared>
    <None>22774</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>National Healthcare Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>635906100</cusip>
  <value>2586182</value>
  <shrsOrPrnAmt>
    <sshPrnamt>16194</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8966</Sole>
    <Shared>0</Shared>
    <None>7228</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>NVE Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>629445206</cusip>
  <value>2701548</value>
  <shrsOrPrnAmt>
    <sshPrnamt>41245</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>26111</Sole>
    <Shared>0</Shared>
    <None>15134</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ollies Bargain Outlet Holdings</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>681116109</cusip>
  <value>2806668</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30494</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16805</Sole>
    <Shared>0</Shared>
    <None>13689</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Omnicell </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>68213N109</cusip>
  <value>1891411</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56663</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31267</Sole>
    <Shared>0</Shared>
    <None>25396</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Onespan Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>68287N100</cusip>
  <value>284605</value>
  <shrsOrPrnAmt>
    <sshPrnamt>27028</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>27028</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Onto Innovation Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>683344105</cusip>
  <value>9256860</value>
  <shrsOrPrnAmt>
    <sshPrnamt>45140</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16545</Sole>
    <Shared>0</Shared>
    <None>28595</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>OSI Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>671044105</cusip>
  <value>5995747</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22582</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8292</Sole>
    <Shared>0</Shared>
    <None>14290</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pacira Biosciences Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>695127100</cusip>
  <value>9102489</value>
  <shrsOrPrnAmt>
    <sshPrnamt>402765</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>169543</Sole>
    <Shared>0</Shared>
    <None>233222</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Park Aerospace Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>70014A104</cusip>
  <value>829860</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30309</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30309</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PDF Solutions Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>693282105</cusip>
  <value>3296219</value>
  <shrsOrPrnAmt>
    <sshPrnamt>100771</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>61320</Sole>
    <Shared>0</Shared>
    <None>39451</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pediatrix Medical Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58502B106</cusip>
  <value>3184287</value>
  <shrsOrPrnAmt>
    <sshPrnamt>148868</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>82185</Sole>
    <Shared>0</Shared>
    <None>66683</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pennant Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>70805E109</cusip>
  <value>1856476</value>
  <shrsOrPrnAmt>
    <sshPrnamt>60908</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>37898</Sole>
    <Shared>0</Shared>
    <None>23010</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pjt Partners Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>69343T107</cusip>
  <value>1208299</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8648</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4774</Sole>
    <Shared>0</Shared>
    <None>3874</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Plexus Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>729132100</cusip>
  <value>2099732</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10367</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5723</Sole>
    <Shared>0</Shared>
    <None>4644</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Power Solutions Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>73933G202</cusip>
  <value>1996438</value>
  <shrsOrPrnAmt>
    <sshPrnamt>32793</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>18175</Sole>
    <Shared>0</Shared>
    <None>14618</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Quaker Houghton</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>747316107</cusip>
  <value>2177876</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17531</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9675</Sole>
    <Shared>0</Shared>
    <None>7856</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Qualys Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>74758T303</cusip>
  <value>1540625</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17537</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9678</Sole>
    <Shared>0</Shared>
    <None>7859</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RBC Bearings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75524B104</cusip>
  <value>9890215</value>
  <shrsOrPrnAmt>
    <sshPrnamt>18210</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6722</Sole>
    <Shared>0</Shared>
    <None>11488</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RPC Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>749660106</cusip>
  <value>1656062</value>
  <shrsOrPrnAmt>
    <sshPrnamt>233907</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>128926</Sole>
    <Shared>0</Shared>
    <None>104981</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Select Water Solutions Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81617J301</cusip>
  <value>4948357</value>
  <shrsOrPrnAmt>
    <sshPrnamt>323422</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>200021</Sole>
    <Shared>0</Shared>
    <None>123401</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Shake Shack Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>819047101</cusip>
  <value>1285292</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14528</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8020</Sole>
    <Shared>0</Shared>
    <None>6508</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Siteone Landscape Supply Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>82982L103</cusip>
  <value>5546427</value>
  <shrsOrPrnAmt>
    <sshPrnamt>41668</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14704</Sole>
    <Shared>0</Shared>
    <None>26964</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sterling Infrastructure Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>859241101</cusip>
  <value>11355095</value>
  <shrsOrPrnAmt>
    <sshPrnamt>27881</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10179</Sole>
    <Shared>0</Shared>
    <None>17702</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Supernus Pharmaceuticals</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>868459108</cusip>
  <value>3252490</value>
  <shrsOrPrnAmt>
    <sshPrnamt>62923</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38404</Sole>
    <Shared>0</Shared>
    <None>24519</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Texas Roadhouse Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>882681109</cusip>
  <value>2491137</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15085</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8345</Sole>
    <Shared>0</Shared>
    <None>6740</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>TG Therapeutics Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>88322Q108</cusip>
  <value>3010861</value>
  <shrsOrPrnAmt>
    <sshPrnamt>90634</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>50105</Sole>
    <Shared>0</Shared>
    <None>40529</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ufp Industries Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>90278Q108</cusip>
  <value>3234886</value>
  <shrsOrPrnAmt>
    <sshPrnamt>35116</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19363</Sole>
    <Shared>0</Shared>
    <None>15753</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>UFP Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>902673102</cusip>
  <value>3825149</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19758</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10913</Sole>
    <Shared>0</Shared>
    <None>8845</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ultra Clean Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>90385V107</cusip>
  <value>5050633</value>
  <shrsOrPrnAmt>
    <sshPrnamt>81226</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>50537</Sole>
    <Shared>0</Shared>
    <None>30689</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>US Physical Therapy</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>90337L108</cusip>
  <value>3984949</value>
  <shrsOrPrnAmt>
    <sshPrnamt>53161</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>32233</Sole>
    <Shared>0</Shared>
    <None>20928</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Utah Med Prods Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>917488108</cusip>
  <value>451969</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7291</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7291</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vericel Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92346J108</cusip>
  <value>1755678</value>
  <shrsOrPrnAmt>
    <sshPrnamt>54575</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30192</Sole>
    <Shared>0</Shared>
    <None>24383</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vishay Precision Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92835K103</cusip>
  <value>2507071</value>
  <shrsOrPrnAmt>
    <sshPrnamt>57740</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>37251</Sole>
    <Shared>0</Shared>
    <None>20489</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Wd 40 Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>929236107</cusip>
  <value>1619284</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7940</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4384</Sole>
    <Shared>0</Shared>
    <None>3556</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>WesBanco Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>950810101</cusip>
  <value>2829215</value>
  <shrsOrPrnAmt>
    <sshPrnamt>82030</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>45215</Sole>
    <Shared>0</Shared>
    <None>36815</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Yeti Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98585X104</cusip>
  <value>2553397</value>
  <shrsOrPrnAmt>
    <sshPrnamt>69784</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38600</Sole>
    <Shared>0</Shared>
    <None>31184</None>
  </votingAuthority>
</infoTable>
</informationTable>
