<?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>5922883</value>
  <shrsOrPrnAmt>
    <sshPrnamt>427645</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>178913</Sole>
    <Shared>0</Shared>
    <None>248732</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Accuray Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>004397105</cusip>
  <value>256136</value>
  <shrsOrPrnAmt>
    <sshPrnamt>140734</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>140734</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ACI Worldwide Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>004498101</cusip>
  <value>1544643</value>
  <shrsOrPrnAmt>
    <sshPrnamt>39016</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>17005</Sole>
    <Shared>0</Shared>
    <None>22011</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Addus HomeCare Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>006739106</cusip>
  <value>3655259</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31481</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15627</Sole>
    <Shared>0</Shared>
    <None>15854</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Albany International Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>012348108</cusip>
  <value>4248426</value>
  <shrsOrPrnAmt>
    <sshPrnamt>50307</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>17849</Sole>
    <Shared>0</Shared>
    <None>32458</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amedisys Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>023436108</cusip>
  <value>2746748</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29921</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13204</Sole>
    <Shared>0</Shared>
    <None>16717</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ameresco, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02361E108</cusip>
  <value>1894488</value>
  <shrsOrPrnAmt>
    <sshPrnamt>65758</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>28959</Sole>
    <Shared>0</Shared>
    <None>36799</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Eagle Outfitters</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02553E106</cusip>
  <value>2354701</value>
  <shrsOrPrnAmt>
    <sshPrnamt>117971</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>51953</Sole>
    <Shared>0</Shared>
    <None>66018</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AMN Healthcare Services Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>001744101</cusip>
  <value>1514154</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29556</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13072</Sole>
    <Shared>0</Shared>
    <None>16484</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amphastar Pharma Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03209R103</cusip>
  <value>1957840</value>
  <shrsOrPrnAmt>
    <sshPrnamt>48946</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21597</Sole>
    <Shared>0</Shared>
    <None>27349</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Aris Water Solutions</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>04041L106</cusip>
  <value>2768231</value>
  <shrsOrPrnAmt>
    <sshPrnamt>176658</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>97066</Sole>
    <Shared>0</Shared>
    <None>79592</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Axcelis Technologies Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>054540208</cusip>
  <value>5673950</value>
  <shrsOrPrnAmt>
    <sshPrnamt>39904</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13752</Sole>
    <Shared>0</Shared>
    <None>26152</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Badger Meter Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>056525108</cusip>
  <value>2866436</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15382</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6779</Sole>
    <Shared>0</Shared>
    <None>8603</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank of Marin Bancorp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>063425102</cusip>
  <value>215149</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13289</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13289</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bankwell Financial Group, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>06654A103</cusip>
  <value>343764</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13550</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13550</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Barrett Business Services Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>068463108</cusip>
  <value>2032395</value>
  <shrsOrPrnAmt>
    <sshPrnamt>62020</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33332</Sole>
    <Shared>0</Shared>
    <None>28688</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>BGSF, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>05601C105</cusip>
  <value>401004</value>
  <shrsOrPrnAmt>
    <sshPrnamt>46901</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>46901</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Boise Cascade Company</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09739D100</cusip>
  <value>2182561</value>
  <shrsOrPrnAmt>
    <sshPrnamt>18307</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8086</Sole>
    <Shared>0</Shared>
    <None>10221</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cactus, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>127203107</cusip>
  <value>3677402</value>
  <shrsOrPrnAmt>
    <sshPrnamt>69727</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30525</Sole>
    <Shared>0</Shared>
    <None>39202</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>California Water Service Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>130788102</cusip>
  <value>1420805</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29301</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12806</Sole>
    <Shared>0</Shared>
    <None>16495</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cambium Network Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G17766109</cusip>
  <value>766290</value>
  <shrsOrPrnAmt>
    <sshPrnamt>274656</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>145613</Sole>
    <Shared>0</Shared>
    <None>129043</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CBIZ Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>124805102</cusip>
  <value>4220588</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56958</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20208</Sole>
    <Shared>0</Shared>
    <None>36750</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Century Communities, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>156504300</cusip>
  <value>3494721</value>
  <shrsOrPrnAmt>
    <sshPrnamt>42796</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15140</Sole>
    <Shared>0</Shared>
    <None>27656</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Coherent Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>19247G107</cusip>
  <value>7845244</value>
  <shrsOrPrnAmt>
    <sshPrnamt>108270</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38779</Sole>
    <Shared>0</Shared>
    <None>69491</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Coherus Biosciences</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>19249H103</cusip>
  <value>546696</value>
  <shrsOrPrnAmt>
    <sshPrnamt>316009</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>141397</Sole>
    <Shared>0</Shared>
    <None>174612</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Columbus McKinnon Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>199333105</cusip>
  <value>424911</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12302</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12302</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Comfort Systems USA Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>199908104</cusip>
  <value>8177179</value>
  <shrsOrPrnAmt>
    <sshPrnamt>26888</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9593</Sole>
    <Shared>0</Shared>
    <None>17295</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Consensus Cloud Solutions Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20848V105</cusip>
  <value>1105825</value>
  <shrsOrPrnAmt>
    <sshPrnamt>64367</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>35253</Sole>
    <Shared>0</Shared>
    <None>29114</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Corcept Therapeutics Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>218352102</cusip>
  <value>1599710</value>
  <shrsOrPrnAmt>
    <sshPrnamt>49237</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21771</Sole>
    <Shared>0</Shared>
    <None>27466</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CRA International, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>12618T105</cusip>
  <value>746229</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4333</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4333</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Diodes Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>254543101</cusip>
  <value>4210494</value>
  <shrsOrPrnAmt>
    <sshPrnamt>58536</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20913</Sole>
    <Shared>0</Shared>
    <None>37623</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>DMC Global Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>23291C103</cusip>
  <value>1453190</value>
  <shrsOrPrnAmt>
    <sshPrnamt>100776</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>52856</Sole>
    <Shared>0</Shared>
    <None>47920</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Donnely Financial</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>25787G100</cusip>
  <value>413763</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6940</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6940</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dorman Products Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>258278100</cusip>
  <value>3321181</value>
  <shrsOrPrnAmt>
    <sshPrnamt>36305</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16001</Sole>
    <Shared>0</Shared>
    <None>20304</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dril-Quip, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>262037104</cusip>
  <value>2435075</value>
  <shrsOrPrnAmt>
    <sshPrnamt>130918</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>67571</Sole>
    <Shared>0</Shared>
    <None>63347</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ensign Group Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29358P101</cusip>
  <value>8883416</value>
  <shrsOrPrnAmt>
    <sshPrnamt>71820</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>25409</Sole>
    <Shared>0</Shared>
    <None>46411</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ePlus Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>294268107</cusip>
  <value>2273175</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30852</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13613</Sole>
    <Shared>0</Shared>
    <None>17239</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Evercore Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29977A105</cusip>
  <value>2303985</value>
  <shrsOrPrnAmt>
    <sshPrnamt>11054</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4840</Sole>
    <Shared>0</Shared>
    <None>6214</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>EVERTEC, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30040P103</cusip>
  <value>1941833</value>
  <shrsOrPrnAmt>
    <sshPrnamt>58401</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>25535</Sole>
    <Shared>0</Shared>
    <None>32866</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Exlservice Holdings Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>302081104</cusip>
  <value>4195905</value>
  <shrsOrPrnAmt>
    <sshPrnamt>133798</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>47330</Sole>
    <Shared>0</Shared>
    <None>86468</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Exponent Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30214U102</cusip>
  <value>3364299</value>
  <shrsOrPrnAmt>
    <sshPrnamt>35369</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15469</Sole>
    <Shared>0</Shared>
    <None>19900</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Fabrinet</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G3323L100</cusip>
  <value>2643487</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10799</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4768</Sole>
    <Shared>0</Shared>
    <None>6031</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>First Financial Bankshares, In</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>32020R109</cusip>
  <value>2589190</value>
  <shrsOrPrnAmt>
    <sshPrnamt>87680</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38612</Sole>
    <Shared>0</Shared>
    <None>49068</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Franklin Electric Co.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>353514102</cusip>
  <value>2065293</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21442</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9425</Sole>
    <Shared>0</Shared>
    <None>12017</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Gentherm Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>37253A103</cusip>
  <value>4863790</value>
  <shrsOrPrnAmt>
    <sshPrnamt>98617</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>34921</Sole>
    <Shared>0</Shared>
    <None>63696</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Getty Realty Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>374297109</cusip>
  <value>1926452</value>
  <shrsOrPrnAmt>
    <sshPrnamt>72260</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31840</Sole>
    <Shared>0</Shared>
    <None>40420</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Glacier Bancorp Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>37637Q105</cusip>
  <value>4858131</value>
  <shrsOrPrnAmt>
    <sshPrnamt>130175</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>46132</Sole>
    <Shared>0</Shared>
    <None>84043</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Globus Medical, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>379577208</cusip>
  <value>6462716</value>
  <shrsOrPrnAmt>
    <sshPrnamt>94360</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33494</Sole>
    <Shared>0</Shared>
    <None>60866</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Healthcare Services Group, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>421906108</cusip>
  <value>1547579</value>
  <shrsOrPrnAmt>
    <sshPrnamt>146274</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>64045</Sole>
    <Shared>0</Shared>
    <None>82229</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hope Bancorp, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>43940T109</cusip>
  <value>1801485</value>
  <shrsOrPrnAmt>
    <sshPrnamt>167736</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>73406</Sole>
    <Shared>0</Shared>
    <None>94330</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Insteel Industries, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>45774W108</cusip>
  <value>3381978</value>
  <shrsOrPrnAmt>
    <sshPrnamt>109237</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56024</Sole>
    <Shared>0</Shared>
    <None>53213</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Investors Title Co.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>461804106</cusip>
  <value>391062</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2171</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2171</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iRadimed Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46266A109</cusip>
  <value>2387304</value>
  <shrsOrPrnAmt>
    <sshPrnamt>54331</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30313</Sole>
    <Shared>0</Shared>
    <None>24018</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>J&amp;J Snack Foods Corp.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>466032109</cusip>
  <value>2286981</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14085</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6211</Sole>
    <Shared>0</Shared>
    <None>7874</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Jack in the Box Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>466367109</cusip>
  <value>1673939</value>
  <shrsOrPrnAmt>
    <sshPrnamt>32861</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>18074</Sole>
    <Shared>0</Shared>
    <None>14787</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Kulicke Soffa</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>501242101</cusip>
  <value>2739539</value>
  <shrsOrPrnAmt>
    <sshPrnamt>55693</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24636</Sole>
    <Shared>0</Shared>
    <None>31057</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>La-Z-Boy Incorporated</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>505336107</cusip>
  <value>3087082</value>
  <shrsOrPrnAmt>
    <sshPrnamt>82808</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>36488</Sole>
    <Shared>0</Shared>
    <None>46320</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lakeland Financial Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>511656100</cusip>
  <value>1935665</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31464</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13849</Sole>
    <Shared>0</Shared>
    <None>17615</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Landstar System, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>515098101</cusip>
  <value>3130626</value>
  <shrsOrPrnAmt>
    <sshPrnamt>16970</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7493</Sole>
    <Shared>0</Shared>
    <None>9477</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lemaitre Vascular Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>525558201</cusip>
  <value>7422150</value>
  <shrsOrPrnAmt>
    <sshPrnamt>90206</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38856</Sole>
    <Shared>0</Shared>
    <None>51350</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lithia Motors, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>536797103</cusip>
  <value>4312351</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17082</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6047</Sole>
    <Shared>0</Shared>
    <None>11035</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>LTC Properties, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>502175102</cusip>
  <value>1302686</value>
  <shrsOrPrnAmt>
    <sshPrnamt>37759</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16549</Sole>
    <Shared>0</Shared>
    <None>21210</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>MACOM Tech  Solutions</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>55405Y100</cusip>
  <value>5416216</value>
  <shrsOrPrnAmt>
    <sshPrnamt>48589</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>17431</Sole>
    <Shared>0</Shared>
    <None>31158</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>MasTec, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>576323109</cusip>
  <value>3538694</value>
  <shrsOrPrnAmt>
    <sshPrnamt>33075</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14459</Sole>
    <Shared>0</Shared>
    <None>18616</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Maxiums Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>577933104</cusip>
  <value>2076511</value>
  <shrsOrPrnAmt>
    <sshPrnamt>24230</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10688</Sole>
    <Shared>0</Shared>
    <None>13542</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>MEDNAX, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58502B106</cusip>
  <value>973784</value>
  <shrsOrPrnAmt>
    <sshPrnamt>128978</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56748</Sole>
    <Shared>0</Shared>
    <None>72230</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Medpace Holdings Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58506Q109</cusip>
  <value>5658819</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13740</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5391</Sole>
    <Shared>0</Shared>
    <None>8349</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Methode Electronics, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>591520200</cusip>
  <value>2594321</value>
  <shrsOrPrnAmt>
    <sshPrnamt>250659</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>129556</Sole>
    <Shared>0</Shared>
    <None>121103</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>MillerKnoll, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>600544100</cusip>
  <value>3066721</value>
  <shrsOrPrnAmt>
    <sshPrnamt>115769</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>40222</Sole>
    <Shared>0</Shared>
    <None>75547</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>MYR Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>55405W104</cusip>
  <value>674072</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4967</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4967</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Neogen Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>640491106</cusip>
  <value>4186167</value>
  <shrsOrPrnAmt>
    <sshPrnamt>267829</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>94420</Sole>
    <Shared>0</Shared>
    <None>173409</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>NVE Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>629445206</cusip>
  <value>2428097</value>
  <shrsOrPrnAmt>
    <sshPrnamt>32509</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>18405</Sole>
    <Shared>0</Shared>
    <None>14104</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ollie&apos;s Bargain Outlet Holding</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>681116109</cusip>
  <value>3078906</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31363</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13782</Sole>
    <Shared>0</Shared>
    <None>17581</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Omnicell, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>68213N109</cusip>
  <value>929151</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34324</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15100</Sole>
    <Shared>0</Shared>
    <None>19224</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Onespan Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>68287N100</cusip>
  <value>236452</value>
  <shrsOrPrnAmt>
    <sshPrnamt>18444</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>18444</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Onto Innovation Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>683344105</cusip>
  <value>1521331</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6929</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3048</Sole>
    <Shared>0</Shared>
    <None>3881</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>OSI Systems, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>671044105</cusip>
  <value>3392206</value>
  <shrsOrPrnAmt>
    <sshPrnamt>24667</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10886</Sole>
    <Shared>0</Shared>
    <None>13781</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pacira Biosciences</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>695127100</cusip>
  <value>2427730</value>
  <shrsOrPrnAmt>
    <sshPrnamt>84856</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>37437</Sole>
    <Shared>0</Shared>
    <None>47419</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Park Aerospace Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>70014A104</cusip>
  <value>487569</value>
  <shrsOrPrnAmt>
    <sshPrnamt>35641</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>35641</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Paysign</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>70451A104</cusip>
  <value>479483</value>
  <shrsOrPrnAmt>
    <sshPrnamt>111249</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>111249</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Perficient, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>71375U101</cusip>
  <value>2613387</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34943</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15402</Sole>
    <Shared>0</Shared>
    <None>19541</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Performance Food Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>71377A103</cusip>
  <value>5035665</value>
  <shrsOrPrnAmt>
    <sshPrnamt>76171</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>27020</Sole>
    <Shared>0</Shared>
    <None>49151</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Photronics</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>719405102</cusip>
  <value>1942096</value>
  <shrsOrPrnAmt>
    <sshPrnamt>78723</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>42211</Sole>
    <Shared>0</Shared>
    <None>36512</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Plexus Corp.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>729132100</cusip>
  <value>2343321</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22711</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10018</Sole>
    <Shared>0</Shared>
    <None>12693</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Quaker Chemical Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>747316107</cusip>
  <value>2333205</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13749</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6098</Sole>
    <Shared>0</Shared>
    <None>7651</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Qualys Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>74758T303</cusip>
  <value>1804603</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12655</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5561</Sole>
    <Shared>0</Shared>
    <None>7094</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Quipt Home Medical Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>74880P104</cusip>
  <value>177606</value>
  <shrsOrPrnAmt>
    <sshPrnamt>55157</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>55157</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RBC Bearings Incorporated</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75524B104</cusip>
  <value>5180316</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19202</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6796</Sole>
    <Shared>0</Shared>
    <None>12406</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Rogers Corporation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>775133101</cusip>
  <value>2087277</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17306</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7634</Sole>
    <Shared>0</Shared>
    <None>9672</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RPC Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>749660106</cusip>
  <value>1504156</value>
  <shrsOrPrnAmt>
    <sshPrnamt>240665</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>105814</Sole>
    <Shared>0</Shared>
    <None>134851</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Select Energy Services, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81617J301</cusip>
  <value>3065250</value>
  <shrsOrPrnAmt>
    <sshPrnamt>286472</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>155406</Sole>
    <Shared>0</Shared>
    <None>131066</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Shake Shack Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>819047101</cusip>
  <value>2104380</value>
  <shrsOrPrnAmt>
    <sshPrnamt>23382</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10312</Sole>
    <Shared>0</Shared>
    <None>13070</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Shutterstock Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>825690100</cusip>
  <value>1004420</value>
  <shrsOrPrnAmt>
    <sshPrnamt>25954</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11441</Sole>
    <Shared>0</Shared>
    <None>14513</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SiteOne Landscape Supply, Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>82982L103</cusip>
  <value>3438210</value>
  <shrsOrPrnAmt>
    <sshPrnamt>28319</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10075</Sole>
    <Shared>0</Shared>
    <None>18244</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sterling Construction Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>859241101</cusip>
  <value>5869072</value>
  <shrsOrPrnAmt>
    <sshPrnamt>49595</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>25653</Sole>
    <Shared>0</Shared>
    <None>23942</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Supernus Pharmaceuticals Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>868459108</cusip>
  <value>2201124</value>
  <shrsOrPrnAmt>
    <sshPrnamt>82285</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>42242</Sole>
    <Shared>0</Shared>
    <None>40043</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Synaptics Incorporated</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>87157D109</cusip>
  <value>1687354</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19131</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8464</Sole>
    <Shared>0</Shared>
    <None>10667</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tetra Tech Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>88162G103</cusip>
  <value>8136055</value>
  <shrsOrPrnAmt>
    <sshPrnamt>39789</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14111</Sole>
    <Shared>0</Shared>
    <None>25678</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Texas Roadhouse Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>882681109</cusip>
  <value>3311084</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19283</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8504</Sole>
    <Shared>0</Shared>
    <None>10779</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>The Joint Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>47973J102</cusip>
  <value>386270</value>
  <shrsOrPrnAmt>
    <sshPrnamt>27473</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>27473</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>UFP Industries Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>90278Q108</cusip>
  <value>5059152</value>
  <shrsOrPrnAmt>
    <sshPrnamt>45171</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16018</Sole>
    <Shared>0</Shared>
    <None>29153</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>UFP Technologies Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>902673102</cusip>
  <value>1354709</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5134</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2256</Sole>
    <Shared>0</Shared>
    <None>2878</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>US Physical Therapy Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>90337L108</cusip>
  <value>4477749</value>
  <shrsOrPrnAmt>
    <sshPrnamt>48450</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19473</Sole>
    <Shared>0</Shared>
    <None>28977</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Utah Medical Products Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>917488108</cusip>
  <value>351688</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5264</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5264</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vishay Precision Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92835K103</cusip>
  <value>2385431</value>
  <shrsOrPrnAmt>
    <sshPrnamt>78365</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>44588</Sole>
    <Shared>0</Shared>
    <None>33777</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>WD-40 CO COM</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>929236107</cusip>
  <value>1812689</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8253</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3653</Sole>
    <Shared>0</Shared>
    <None>4600</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Wesbanco Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>950810101</cusip>
  <value>2366126</value>
  <shrsOrPrnAmt>
    <sshPrnamt>84777</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>37397</Sole>
    <Shared>0</Shared>
    <None>47380</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>YETI Holdings</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98585X104</cusip>
  <value>1921883</value>
  <shrsOrPrnAmt>
    <sshPrnamt>50377</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22138</Sole>
    <Shared>0</Shared>
    <None>28239</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ziff Davis, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>48123V102</cusip>
  <value>2420714</value>
  <shrsOrPrnAmt>
    <sshPrnamt>43973</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19463</Sole>
    <Shared>0</Shared>
    <None>24510</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Zynex</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98986M103</cusip>
  <value>1801453</value>
  <shrsOrPrnAmt>
    <sshPrnamt>193289</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>110866</Sole>
    <Shared>0</Shared>
    <None>82423</None>
  </votingAuthority>
</infoTable>
</informationTable>
