<?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>3M Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>88579Y101</cusip>
  <value>643100</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4379</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4351</Sole>
    <Shared>0</Shared>
    <None>28</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Abbott Laboratories</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>002824100</cusip>
  <value>3305271</value>
  <shrsOrPrnAmt>
    <sshPrnamt>24917</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24752</Sole>
    <Shared>0</Shared>
    <None>165</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Abbvie Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00287Y109</cusip>
  <value>4324045</value>
  <shrsOrPrnAmt>
    <sshPrnamt>20638</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20536</Sole>
    <Shared>0</Shared>
    <None>102</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Accenture Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G1151C101</cusip>
  <value>46620079</value>
  <shrsOrPrnAmt>
    <sshPrnamt>149404</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>146185</Sole>
    <Shared>0</Shared>
    <None>3219</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Adobe Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00724F101</cusip>
  <value>286497</value>
  <shrsOrPrnAmt>
    <sshPrnamt>747</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>747</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Advanced Micro Devices Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>007903107</cusip>
  <value>441474</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4297</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4297</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Aecom Technology Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00766T100</cusip>
  <value>231825</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2500</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2500</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Aflac Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>001055102</cusip>
  <value>220267</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1981</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1981</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Air Products &amp; Chemicals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>009158106</cusip>
  <value>655902</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2224</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2224</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Allstate Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>020002101</cusip>
  <value>648336</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3131</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3131</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Alphabet Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02079K305</cusip>
  <value>142030186</value>
  <shrsOrPrnAmt>
    <sshPrnamt>918457</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>888121</Sole>
    <Shared>0</Shared>
    <None>30336</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Alphabet Inc-C</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02079K107</cusip>
  <value>22893787</value>
  <shrsOrPrnAmt>
    <sshPrnamt>146539</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>144349</Sole>
    <Shared>0</Shared>
    <None>2190</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Altria Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02209S103</cusip>
  <value>582194</value>
  <shrsOrPrnAmt>
    <sshPrnamt>9700</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9350</Sole>
    <Shared>0</Shared>
    <None>350</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amazon.com Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>023135106</cusip>
  <value>117467399</value>
  <shrsOrPrnAmt>
    <sshPrnamt>617405</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>597133</Sole>
    <Shared>0</Shared>
    <None>20272</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Express Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>025816109</cusip>
  <value>412185</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1532</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1532</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Tower Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03027X100</cusip>
  <value>63793233</value>
  <shrsOrPrnAmt>
    <sshPrnamt>293167</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>283586</Sole>
    <Shared>0</Shared>
    <None>9581</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Water Works Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>030420103</cusip>
  <value>47469394</value>
  <shrsOrPrnAmt>
    <sshPrnamt>321783</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>312624</Sole>
    <Shared>0</Shared>
    <None>9159</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AMETEK Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>031100100</cusip>
  <value>56224735</value>
  <shrsOrPrnAmt>
    <sshPrnamt>326622</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>318851</Sole>
    <Shared>0</Shared>
    <None>7771</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amgen Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>031162100</cusip>
  <value>968804</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3110</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2850</Sole>
    <Shared>0</Shared>
    <None>260</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amphenol Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>032095101</cusip>
  <value>96698778</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1474291</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1447250</Sole>
    <Shared>0</Shared>
    <None>27041</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ansys Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03662Q105</cusip>
  <value>10916572</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34485</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>34385</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Aon PLC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G0403H108</cusip>
  <value>50001195</value>
  <shrsOrPrnAmt>
    <sshPrnamt>125288</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>122301</Sole>
    <Shared>0</Shared>
    <None>2987</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AppFolio Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03783C100</cusip>
  <value>219900</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1000</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1000</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Apple Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>037833100</cusip>
  <value>249170869</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1121734</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1087517</Sole>
    <Shared>0</Shared>
    <None>34217</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Applied Materials Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>038222105</cusip>
  <value>544635</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3753</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3753</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Arch Capital Group Ltd</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G0450A105</cusip>
  <value>202074</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2101</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2101</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ASML Holding NV</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>N07059210</cusip>
  <value>35471848</value>
  <shrsOrPrnAmt>
    <sshPrnamt>53532</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>51819</Sole>
    <Shared>0</Shared>
    <None>1713</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AstraZeneca PLC ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>046353108</cusip>
  <value>286650</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3900</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3900</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AT&amp;T Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00206R102</cusip>
  <value>1068249</value>
  <shrsOrPrnAmt>
    <sshPrnamt>37774</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>36663</Sole>
    <Shared>0</Shared>
    <None>1111</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Automatic Data Processing Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>053015103</cusip>
  <value>8522148</value>
  <shrsOrPrnAmt>
    <sshPrnamt>27893</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>27668</Sole>
    <Shared>0</Shared>
    <None>225</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank of America Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>060505104</cusip>
  <value>27259356</value>
  <shrsOrPrnAmt>
    <sshPrnamt>653232</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>627745</Sole>
    <Shared>0</Shared>
    <None>25487</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank of New York Mellon</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>064058100</cusip>
  <value>212359</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2532</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2532</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Becton Dickinson &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>075887109</cusip>
  <value>1097656</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4792</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4792</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Berkshire Hathaway Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>084670108</cusip>
  <value>798442</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Berkshire Hathaway Inc-B</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>084670702</cusip>
  <value>135028203</value>
  <shrsOrPrnAmt>
    <sshPrnamt>253536</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>246163</Sole>
    <Shared>0</Shared>
    <None>7373</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>BlackRock Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09290D101</cusip>
  <value>986232</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1042</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1042</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Blackstone Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09260D107</cusip>
  <value>981815</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7024</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7024</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Boeing Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>097023105</cusip>
  <value>699767</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4103</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4103</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>BorgWarner Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>099724106</cusip>
  <value>613311</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21407</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21407</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Boston Scientific Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>101137107</cusip>
  <value>201356</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1996</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1996</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bristol-Myers Squibb Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>110122108</cusip>
  <value>457669</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7504</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6954</Sole>
    <Shared>0</Shared>
    <None>550</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Broadcom Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>11135F101</cusip>
  <value>2583096</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15428</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15168</Sole>
    <Shared>0</Shared>
    <None>260</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Camden National Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>133034108</cusip>
  <value>1412403</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34900</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>34900</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Canadian National Railway Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>136375102</cusip>
  <value>246086</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2525</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2525</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Carrier Global Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>14448C104</cusip>
  <value>226148</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3567</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3567</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Caterpillar Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>149123101</cusip>
  <value>1272467</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3858</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3858</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Charles Schwab Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>808513105</cusip>
  <value>1157918</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14792</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14792</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Chevron Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>166764100</cusip>
  <value>4052273</value>
  <shrsOrPrnAmt>
    <sshPrnamt>24223</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>23631</Sole>
    <Shared>0</Shared>
    <None>592</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Chipotle Mexican Grill</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>169656105</cusip>
  <value>318984</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6353</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6353</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Chubb Ltd</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>H1467J104</cusip>
  <value>74882045</value>
  <shrsOrPrnAmt>
    <sshPrnamt>247962</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>242254</Sole>
    <Shared>0</Shared>
    <None>5708</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cigna Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>125523100</cusip>
  <value>258923</value>
  <shrsOrPrnAmt>
    <sshPrnamt>787</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>787</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cisco Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>17275R102</cusip>
  <value>1375084</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22283</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22283</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Citigroup Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>172967424</cusip>
  <value>202463</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2852</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2852</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Clorox Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>189054109</cusip>
  <value>220875</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1500</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1500</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CME Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>12572Q105</cusip>
  <value>23493086</value>
  <shrsOrPrnAmt>
    <sshPrnamt>88556</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>86176</Sole>
    <Shared>0</Shared>
    <None>2380</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Coca Cola Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>191216100</cusip>
  <value>1351183</value>
  <shrsOrPrnAmt>
    <sshPrnamt>18866</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>18366</Sole>
    <Shared>0</Shared>
    <None>500</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cognizant Tech Solutions Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>192446102</cusip>
  <value>597312</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7808</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7808</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Colgate Palmolive Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>194162103</cusip>
  <value>20089696</value>
  <shrsOrPrnAmt>
    <sshPrnamt>214404</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>206474</Sole>
    <Shared>0</Shared>
    <None>7930</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Comcast Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20030N101</cusip>
  <value>2166178</value>
  <shrsOrPrnAmt>
    <sshPrnamt>58704</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>58446</Sole>
    <Shared>0</Shared>
    <None>258</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ConocoPhillips</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20825C104</cusip>
  <value>40157008</value>
  <shrsOrPrnAmt>
    <sshPrnamt>382375</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>370626</Sole>
    <Shared>0</Shared>
    <None>11749</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Constellation Brands Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>21036P108</cusip>
  <value>3565794</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19430</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19025</Sole>
    <Shared>0</Shared>
    <None>405</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Consumer Discretionary Select </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y407</cusip>
  <value>6200667</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31402</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30784</Sole>
    <Shared>0</Shared>
    <None>618</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cooper Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>216648501</cusip>
  <value>372070</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4411</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4351</Sole>
    <Shared>0</Shared>
    <None>60</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Corning Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>219350105</cusip>
  <value>814655</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17795</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>17795</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Corteva Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22052L104</cusip>
  <value>443090</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7041</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7041</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Costco Wholesale Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22160K105</cusip>
  <value>99985713</value>
  <shrsOrPrnAmt>
    <sshPrnamt>105718</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>103073</Sole>
    <Shared>0</Shared>
    <None>2645</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CrowdStrike Holdings Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22788C105</cusip>
  <value>363157</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1030</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1030</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Crown Castle Intl Corp-REIT</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22822V101</cusip>
  <value>224094</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2150</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2150</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CSX Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>126408103</cusip>
  <value>1010538</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34337</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>34337</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cullen/Frost Bankers Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>229899109</cusip>
  <value>426181</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3404</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3404</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cummins Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>231021106</cusip>
  <value>487086</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1554</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1554</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Danaher Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>235851102</cusip>
  <value>66468898</value>
  <shrsOrPrnAmt>
    <sshPrnamt>324239</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>315919</Sole>
    <Shared>0</Shared>
    <None>8320</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Deere &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>244199105</cusip>
  <value>22876963</value>
  <shrsOrPrnAmt>
    <sshPrnamt>48742</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>47151</Sole>
    <Shared>0</Shared>
    <None>1591</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dimensional EM Core Equity 2 E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>25434V732</cusip>
  <value>206203</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7793</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7793</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dimensional US Core Equity 2 E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>25434V708</cusip>
  <value>2163946</value>
  <shrsOrPrnAmt>
    <sshPrnamt>65594</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>65594</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dow Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>260557103</cusip>
  <value>291826</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8357</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8357</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Du Pont de Nemours Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>26614N102</cusip>
  <value>615438</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8241</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8241</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Duke Energy Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>26441C204</cusip>
  <value>562274</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4610</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4610</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Eaton Corp PLC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G29183103</cusip>
  <value>53830460</value>
  <shrsOrPrnAmt>
    <sshPrnamt>198030</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>192515</Sole>
    <Shared>0</Shared>
    <None>5515</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ecolab Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>278865100</cusip>
  <value>27979922</value>
  <shrsOrPrnAmt>
    <sshPrnamt>110366</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>108744</Sole>
    <Shared>0</Shared>
    <None>1622</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Eli Lilly &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>532457108</cusip>
  <value>41268049</value>
  <shrsOrPrnAmt>
    <sshPrnamt>49967</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>48500</Sole>
    <Shared>0</Shared>
    <None>1467</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Emerson Electric Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>291011104</cusip>
  <value>1484416</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13539</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13489</Sole>
    <Shared>0</Shared>
    <None>50</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Enbridge Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29250N105</cusip>
  <value>248070</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5598</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5598</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Energy Select Sector SPDR ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y506</cusip>
  <value>217552</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2328</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2328</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Enterprise Products Partners L</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>293792107</cusip>
  <value>494040</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14471</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14339</Sole>
    <Shared>0</Shared>
    <None>132</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Equinix Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29444U700</cusip>
  <value>27798942</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34094</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33305</Sole>
    <Shared>0</Shared>
    <None>789</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Equity Residential</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29476L107</cusip>
  <value>204286</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2854</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2854</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Exxon Mobil Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30231G102</cusip>
  <value>52965931</value>
  <shrsOrPrnAmt>
    <sshPrnamt>445354</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>433323</Sole>
    <Shared>0</Shared>
    <None>12031</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Fastenal Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>311900104</cusip>
  <value>297482</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3836</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3836</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Financial Select Sector SPDR E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y605</cusip>
  <value>1240746</value>
  <shrsOrPrnAmt>
    <sshPrnamt>24910</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>24910</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>First Trust NASDAQ Cybersecuri</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>33734X846</cusip>
  <value>507780</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8060</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8060</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Fiserv Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>337738108</cusip>
  <value>518730</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2349</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2349</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Fox Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>35137L105</cusip>
  <value>879847</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15545</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15395</Sole>
    <Shared>0</Shared>
    <None>150</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>GE Vernova Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>36828A101</cusip>
  <value>351988</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1153</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1153</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>General Dynamics Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>369550108</cusip>
  <value>605945</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2223</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2223</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>General Electric Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>369604301</cusip>
  <value>19549871</value>
  <shrsOrPrnAmt>
    <sshPrnamt>97676</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>93597</Sole>
    <Shared>0</Shared>
    <None>4079</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>General Motors Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>37045V100</cusip>
  <value>317662</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6754</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6754</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Goldman Sachs Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>38141G104</cusip>
  <value>21818966</value>
  <shrsOrPrnAmt>
    <sshPrnamt>39940</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38481</Sole>
    <Shared>0</Shared>
    <None>1459</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Health Care Select Sector SPDR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y209</cusip>
  <value>733681</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5025</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5025</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Henry Schein Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>806407102</cusip>
  <value>210744</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3077</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3077</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hershey Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>427866108</cusip>
  <value>5793129</value>
  <shrsOrPrnAmt>
    <sshPrnamt>33872</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33772</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hologic Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>436440101</cusip>
  <value>351780</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5695</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5550</Sole>
    <Shared>0</Shared>
    <None>145</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Home Depot Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>437076102</cusip>
  <value>56101449</value>
  <shrsOrPrnAmt>
    <sshPrnamt>153078</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>149166</Sole>
    <Shared>0</Shared>
    <None>3912</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Honeywell International Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>438516106</cusip>
  <value>1402208</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6622</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6622</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hubbell Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>443510607</cusip>
  <value>398747</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1205</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1205</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Idexx Labs Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>45168D104</cusip>
  <value>43217474</value>
  <shrsOrPrnAmt>
    <sshPrnamt>102911</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>99950</Sole>
    <Shared>0</Shared>
    <None>2961</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Illinois Tool Wks Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>452308109</cusip>
  <value>1381168</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5569</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5569</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intel Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>458140100</cusip>
  <value>341263</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15027</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15027</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intl Business Machines Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>459200101</cusip>
  <value>2870655</value>
  <shrsOrPrnAmt>
    <sshPrnamt>11544</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11464</Sole>
    <Shared>0</Shared>
    <None>80</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intuit Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>461202103</cusip>
  <value>85204256</value>
  <shrsOrPrnAmt>
    <sshPrnamt>138771</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>136139</Sole>
    <Shared>0</Shared>
    <None>2632</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intuitive Surgical Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46120E602</cusip>
  <value>2911692</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5879</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5618</Sole>
    <Shared>0</Shared>
    <None>261</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco QQQ Trust Series 1 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46090E103</cusip>
  <value>1699910</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3625</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3500</Sole>
    <Shared>0</Shared>
    <None>125</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco S&amp;P 500 Equal Weight E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46137V357</cusip>
  <value>2537926</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14651</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14650</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>IQ Hedge Multi Strategy Tracke</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>45409B107</cusip>
  <value>204924</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6545</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6545</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Iron Mountain Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46284V101</cusip>
  <value>466165</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5418</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5418</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core Dividend Growth E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46434V621</cusip>
  <value>201526</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3262</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3262</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core MSCI EAFE ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46432F842</cusip>
  <value>761115</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10061</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10061</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287200</cusip>
  <value>2885012</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5134</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4701</Sole>
    <Shared>0</Shared>
    <None>433</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P M/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287507</cusip>
  <value>184384463</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3159974</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2587800</Sole>
    <Shared>0</Shared>
    <None>572174</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P S/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287804</cusip>
  <value>2355962</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22530</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20735</Sole>
    <Shared>0</Shared>
    <None>1795</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P Total U.S. St</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287150</cusip>
  <value>720103</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5902</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5902</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Gold Trust ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464285204</cusip>
  <value>272690</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4625</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4625</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287622</cusip>
  <value>18622748</value>
  <shrsOrPrnAmt>
    <sshPrnamt>60712</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>52745</Sole>
    <Shared>0</Shared>
    <None>7967</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 Growth ET</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287614</cusip>
  <value>3709839</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10274</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9553</Sole>
    <Shared>0</Shared>
    <None>721</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287598</cusip>
  <value>339064</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1802</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1302</Sole>
    <Shared>0</Shared>
    <None>500</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 2000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287655</cusip>
  <value>1638429</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8213</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6349</Sole>
    <Shared>0</Shared>
    <None>1864</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 3000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287689</cusip>
  <value>50656172</value>
  <shrsOrPrnAmt>
    <sshPrnamt>159477</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>159476</Sole>
    <Shared>0</Shared>
    <None>1</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287499</cusip>
  <value>1593786</value>
  <shrsOrPrnAmt>
    <sshPrnamt>18735</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15993</Sole>
    <Shared>0</Shared>
    <None>2742</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287481</cusip>
  <value>555140</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4725</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4725</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287473</cusip>
  <value>639424</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5076</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5076</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P 500 Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287309</cusip>
  <value>511308</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5508</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5208</Sole>
    <Shared>0</Shared>
    <None>300</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P GSCI Commodity ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46428R107</cusip>
  <value>208345</value>
  <shrsOrPrnAmt>
    <sshPrnamt>9150</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9150</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Select Dividend ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287168</cusip>
  <value>361240</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2690</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2650</Sole>
    <Shared>0</Shared>
    <None>40</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Jack Henry &amp; Associates Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>426281101</cusip>
  <value>14726507</value>
  <shrsOrPrnAmt>
    <sshPrnamt>80649</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>77729</Sole>
    <Shared>0</Shared>
    <None>2920</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Jacobs Solutions Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46982L108</cusip>
  <value>488033</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4037</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4037</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Johnson &amp; Johnson</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>478160104</cusip>
  <value>37240537</value>
  <shrsOrPrnAmt>
    <sshPrnamt>224557</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>220450</Sole>
    <Shared>0</Shared>
    <None>4107</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Johnson Controls Intl Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G51502105</cusip>
  <value>400550</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5000</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5000</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>JP Morgan Chase &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46625H100</cusip>
  <value>85072391</value>
  <shrsOrPrnAmt>
    <sshPrnamt>346810</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>338841</Sole>
    <Shared>0</Shared>
    <None>7969</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Kimberly Clark Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>494368103</cusip>
  <value>2761912</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19420</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19320</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>KKR &amp; Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>48251W104</cusip>
  <value>350876</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3035</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3035</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>L3 Harris Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>502431109</cusip>
  <value>268545</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1283</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1283</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Linde Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G54950103</cusip>
  <value>69859079</value>
  <shrsOrPrnAmt>
    <sshPrnamt>150028</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>145279</Sole>
    <Shared>0</Shared>
    <None>4749</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lockheed Martin Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>539830109</cusip>
  <value>524438</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1174</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1174</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lowe's Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>548661107</cusip>
  <value>2515619</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10786</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10786</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Marathon Petroleum Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>56585A102</cusip>
  <value>306532</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2104</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2104</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Marsh &amp; Mclennan Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>571748102</cusip>
  <value>438766</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1798</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1798</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Marvell Technology Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>573874104</cusip>
  <value>39675510</value>
  <shrsOrPrnAmt>
    <sshPrnamt>644397</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>621078</Sole>
    <Shared>0</Shared>
    <None>23319</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mastercard Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>57636Q104</cusip>
  <value>1692595</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3088</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3063</Sole>
    <Shared>0</Shared>
    <None>25</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McCormick &amp; Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>579780206</cusip>
  <value>9109670</value>
  <shrsOrPrnAmt>
    <sshPrnamt>110675</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>109655</Sole>
    <Shared>0</Shared>
    <None>1020</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McDonalds Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>580135101</cusip>
  <value>3893067</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12463</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12211</Sole>
    <Shared>0</Shared>
    <None>252</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McKesson Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58155Q103</cusip>
  <value>346277</value>
  <shrsOrPrnAmt>
    <sshPrnamt>515</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>515</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Medtronic Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G5960L103</cusip>
  <value>23746165</value>
  <shrsOrPrnAmt>
    <sshPrnamt>264257</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>255128</Sole>
    <Shared>0</Shared>
    <None>9129</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Merck &amp; Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58933Y105</cusip>
  <value>6488609</value>
  <shrsOrPrnAmt>
    <sshPrnamt>72288</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>71025</Sole>
    <Shared>0</Shared>
    <None>1263</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Meta Platforms, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30303M102</cusip>
  <value>70553296</value>
  <shrsOrPrnAmt>
    <sshPrnamt>122412</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>118732</Sole>
    <Shared>0</Shared>
    <None>3680</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Metlife Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>59156R108</cusip>
  <value>266161</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3315</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3090</Sole>
    <Shared>0</Shared>
    <None>225</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mettler-Toledo Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>592688105</cusip>
  <value>46168857</value>
  <shrsOrPrnAmt>
    <sshPrnamt>39096</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38337</Sole>
    <Shared>0</Shared>
    <None>759</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Microchip Technology Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>595017104</cusip>
  <value>26817378</value>
  <shrsOrPrnAmt>
    <sshPrnamt>553964</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>542462</Sole>
    <Shared>0</Shared>
    <None>11502</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Microsoft Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>594918104</cusip>
  <value>165670250</value>
  <shrsOrPrnAmt>
    <sshPrnamt>441328</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>428867</Sole>
    <Shared>0</Shared>
    <None>12461</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mondelez Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>609207105</cusip>
  <value>475123</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7003</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7003</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Morgan Stanley</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>617446448</cusip>
  <value>738346</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6328</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6328</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Netflix Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>64110L106</cusip>
  <value>927401</value>
  <shrsOrPrnAmt>
    <sshPrnamt>994</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>994</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>NextEra Energy Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>65339F101</cusip>
  <value>51011958</value>
  <shrsOrPrnAmt>
    <sshPrnamt>719593</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>698465</Sole>
    <Shared>0</Shared>
    <None>21128</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nike Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>654106103</cusip>
  <value>3596015</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56648</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56144</Sole>
    <Shared>0</Shared>
    <None>504</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nordson Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>655663102</cusip>
  <value>9649541</value>
  <shrsOrPrnAmt>
    <sshPrnamt>47836</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>47026</Sole>
    <Shared>0</Shared>
    <None>810</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Norfolk Southern Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>655844108</cusip>
  <value>1614133</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6815</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6295</Sole>
    <Shared>0</Shared>
    <None>520</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Northern Trust Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>665859104</cusip>
  <value>557964</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5656</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5656</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Northrop Grumman Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>666807102</cusip>
  <value>33321250</value>
  <shrsOrPrnAmt>
    <sshPrnamt>65079</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>63117</Sole>
    <Shared>0</Shared>
    <None>1962</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Novartis AG ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>66987V109</cusip>
  <value>237341</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2129</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2129</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nvent Electric PLC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G6700G107</cusip>
  <value>272584</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5200</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5200</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nvidia Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>67066G104</cusip>
  <value>157207994</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1450526</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1392144</Sole>
    <Shared>0</Shared>
    <None>58382</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Oneok Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>682680103</cusip>
  <value>583215</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5878</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5878</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Oracle Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>68389X105</cusip>
  <value>2708548</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19373</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19241</Sole>
    <Shared>0</Shared>
    <None>132</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Oshkosh Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>688239201</cusip>
  <value>4977302</value>
  <shrsOrPrnAmt>
    <sshPrnamt>52905</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>52030</Sole>
    <Shared>0</Shared>
    <None>875</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Palo Alto Networks Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>697435105</cusip>
  <value>120933590</value>
  <shrsOrPrnAmt>
    <sshPrnamt>708706</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>686889</Sole>
    <Shared>0</Shared>
    <None>21817</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Parker Hannifin Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>701094104</cusip>
  <value>209858</value>
  <shrsOrPrnAmt>
    <sshPrnamt>345</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>345</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pentair Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G7S00T104</cusip>
  <value>437804</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5005</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5005</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pepsico Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>713448108</cusip>
  <value>48658142</value>
  <shrsOrPrnAmt>
    <sshPrnamt>324517</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>316361</Sole>
    <Shared>0</Shared>
    <None>8156</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pfizer Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>717081103</cusip>
  <value>590143</value>
  <shrsOrPrnAmt>
    <sshPrnamt>23289</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22191</Sole>
    <Shared>0</Shared>
    <None>1098</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Philip Morris Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>718172109</cusip>
  <value>1270554</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8004</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7842</Sole>
    <Shared>0</Shared>
    <None>162</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Phillips 66</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>718546104</cusip>
  <value>43235538</value>
  <shrsOrPrnAmt>
    <sshPrnamt>350142</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>342114</Sole>
    <Shared>0</Shared>
    <None>8028</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PNC Financial Services Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>693475105</cusip>
  <value>405653</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2308</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2308</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Procter &amp; Gamble Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>742718109</cusip>
  <value>47588919</value>
  <shrsOrPrnAmt>
    <sshPrnamt>279245</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>266682</Sole>
    <Shared>0</Shared>
    <None>12563</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Prudential Financial Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>744320102</cusip>
  <value>204821</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1834</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1834</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Qualcomm Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>747525103</cusip>
  <value>41152080</value>
  <shrsOrPrnAmt>
    <sshPrnamt>267900</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>259840</Sole>
    <Shared>0</Shared>
    <None>8060</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RBC Bearings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75524B104</cusip>
  <value>13904647</value>
  <shrsOrPrnAmt>
    <sshPrnamt>43213</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>42193</Sole>
    <Shared>0</Shared>
    <None>1020</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Rockwell Automation Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>773903109</cusip>
  <value>22891239</value>
  <shrsOrPrnAmt>
    <sshPrnamt>88595</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>85107</Sole>
    <Shared>0</Shared>
    <None>3488</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Roper Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>776696106</cusip>
  <value>55040574</value>
  <shrsOrPrnAmt>
    <sshPrnamt>93356</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>91559</Sole>
    <Shared>0</Shared>
    <None>1797</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RTX Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75513E101</cusip>
  <value>47055897</value>
  <shrsOrPrnAmt>
    <sshPrnamt>355246</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>345114</Sole>
    <Shared>0</Shared>
    <None>10132</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>S&amp;P Global Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78409V104</cusip>
  <value>1736686</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3418</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3418</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Salesforce Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>79466L302</cusip>
  <value>818766</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3051</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2751</Sole>
    <Shared>0</Shared>
    <None>300</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SAP SE ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>803054204</cusip>
  <value>497568</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1854</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1854</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Schwab Intl Equity ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>808524805</cusip>
  <value>4588453</value>
  <shrsOrPrnAmt>
    <sshPrnamt>231974</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>231974</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Schwab US Dividend Equity ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>808524797</cusip>
  <value>466171</value>
  <shrsOrPrnAmt>
    <sshPrnamt>16673</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16673</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ServiceNow Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81762P102</cusip>
  <value>16679531</value>
  <shrsOrPrnAmt>
    <sshPrnamt>20950</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19835</Sole>
    <Shared>0</Shared>
    <None>1115</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Shell PLC ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>780259305</cusip>
  <value>733899</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10015</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9915</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sherwin-Williams Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>824348106</cusip>
  <value>23508810</value>
  <shrsOrPrnAmt>
    <sshPrnamt>67324</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>66042</Sole>
    <Shared>0</Shared>
    <None>1282</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Southern Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>842587107</cusip>
  <value>278018</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3024</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3024</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR Gold Trust</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78463V107</cusip>
  <value>518076</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1798</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1784</Sole>
    <Shared>0</Shared>
    <None>14</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78462F103</cusip>
  <value>305639422</value>
  <shrsOrPrnAmt>
    <sshPrnamt>546380</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>419885</Sole>
    <Shared>0</Shared>
    <None>126495</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P Biotech ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78464A870</cusip>
  <value>1432809</value>
  <shrsOrPrnAmt>
    <sshPrnamt>17667</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>17480</Sole>
    <Shared>0</Shared>
    <None>187</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P M/C 400 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78467Y107</cusip>
  <value>3769036</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7065</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6051</Sole>
    <Shared>0</Shared>
    <None>1014</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sprouts Farmers Mkt Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>85208M102</cusip>
  <value>250482</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1641</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1641</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Starbucks Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>855244109</cusip>
  <value>2956433</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30140</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>30090</Sole>
    <Shared>0</Shared>
    <None>50</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>STERIS Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G8473T100</cusip>
  <value>4945458</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21820</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21756</Sole>
    <Shared>0</Shared>
    <None>64</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Stryker Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>863667101</cusip>
  <value>49689184</value>
  <shrsOrPrnAmt>
    <sshPrnamt>133483</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>130198</Sole>
    <Shared>0</Shared>
    <None>3285</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>T Rowe Price Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>74144T108</cusip>
  <value>2964907</value>
  <shrsOrPrnAmt>
    <sshPrnamt>32273</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31665</Sole>
    <Shared>0</Shared>
    <None>608</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Take Two Interactive Software </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>874054109</cusip>
  <value>49423944</value>
  <shrsOrPrnAmt>
    <sshPrnamt>238475</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>229301</Sole>
    <Shared>0</Shared>
    <None>9174</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>TE Connectivity Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G87052109</cusip>
  <value>970326</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6866</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6804</Sole>
    <Shared>0</Shared>
    <None>62</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Technology Select Sector SPDR </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y803</cusip>
  <value>1302063</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6306</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6226</Sole>
    <Shared>0</Shared>
    <None>80</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tesla Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>88160R101</cusip>
  <value>1431600</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5524</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5285</Sole>
    <Shared>0</Shared>
    <None>239</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Texas Instruments Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>882508104</cusip>
  <value>942531</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5245</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5245</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Thermo Fisher Scientific Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>883556102</cusip>
  <value>64536440</value>
  <shrsOrPrnAmt>
    <sshPrnamt>129695</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>126323</Sole>
    <Shared>0</Shared>
    <None>3372</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>TJX Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>872540109</cusip>
  <value>82710510</value>
  <shrsOrPrnAmt>
    <sshPrnamt>679068</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>659967</Sole>
    <Shared>0</Shared>
    <None>19101</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Toll Brothers Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>889478103</cusip>
  <value>15313008</value>
  <shrsOrPrnAmt>
    <sshPrnamt>145023</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>142849</Sole>
    <Shared>0</Shared>
    <None>2174</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Toronto-Dominion Bank</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>891160509</cusip>
  <value>367552</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6132</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6132</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tractor Supply Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>892356106</cusip>
  <value>43933843</value>
  <shrsOrPrnAmt>
    <sshPrnamt>797347</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>772047</Sole>
    <Shared>0</Shared>
    <None>25300</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Travelers Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>89417E109</cusip>
  <value>862404</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3261</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3261</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Truist Financial Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>89832Q109</cusip>
  <value>342985</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8335</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8335</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tyler Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>902252105</cusip>
  <value>866271</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1490</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1490</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Union Pacific Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>907818108</cusip>
  <value>37825070</value>
  <shrsOrPrnAmt>
    <sshPrnamt>160113</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>154259</Sole>
    <Shared>0</Shared>
    <None>5854</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>United Parcel Service Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>911312106</cusip>
  <value>1321325</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12013</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>12013</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Unitedhealth Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>91324P102</cusip>
  <value>41383570</value>
  <shrsOrPrnAmt>
    <sshPrnamt>79014</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>76780</Sole>
    <Shared>0</Shared>
    <None>2234</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>US Bancorp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>902973304</cusip>
  <value>8896683</value>
  <shrsOrPrnAmt>
    <sshPrnamt>210722</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>208065</Sole>
    <Shared>0</Shared>
    <None>2657</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Valero Energy Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>91913Y100</cusip>
  <value>273913</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2074</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2074</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>VanEck Morningstar Wide Moat E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92189F643</cusip>
  <value>230560</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2620</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2620</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Dividend Appreciation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921908844</cusip>
  <value>6476805</value>
  <shrsOrPrnAmt>
    <sshPrnamt>33387</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>26788</Sole>
    <Shared>0</Shared>
    <None>6599</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard ESG US Stock ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921910733</cusip>
  <value>2207499</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22537</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19288</Sole>
    <Shared>0</Shared>
    <None>3249</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Financials ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92204A405</cusip>
  <value>209325</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1752</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1752</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908736</cusip>
  <value>2413667</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6509</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6424</Sole>
    <Shared>0</Shared>
    <None>85</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard High Dividend Yield E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921946406</cusip>
  <value>285002</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2210</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2135</Sole>
    <Shared>0</Shared>
    <None>75</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Information Technolog</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92204A702</cusip>
  <value>1202999</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2218</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2218</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard M/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908629</cusip>
  <value>558619</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2160</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2160</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard M/C Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908538</cusip>
  <value>485366</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1984</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1984</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Real Estate ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908553</cusip>
  <value>292082</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3226</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2976</Sole>
    <Shared>0</Shared>
    <None>250</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908363</cusip>
  <value>3471904</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6756</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6609</Sole>
    <Shared>0</Shared>
    <None>147</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908751</cusip>
  <value>114239229</value>
  <shrsOrPrnAmt>
    <sshPrnamt>515171</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>461407</Sole>
    <Shared>0</Shared>
    <None>53765</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/C Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908595</cusip>
  <value>770164</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3059</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3059</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/C Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908611</cusip>
  <value>338116</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1815</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1815</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Intl Stock ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921909768</cusip>
  <value>1317873</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21222</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21222</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Stock Market ET</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908769</cusip>
  <value>15609123</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56793</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>43824</Sole>
    <Shared>0</Shared>
    <None>12969</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908744</cusip>
  <value>1535313</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8888</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8888</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Veralto Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92338C103</cusip>
  <value>1432223</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14697</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14476</Sole>
    <Shared>0</Shared>
    <None>221</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Verizon Communications Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92343V104</cusip>
  <value>1550129</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34174</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33577</Sole>
    <Shared>0</Shared>
    <None>597</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vertex Pharmaceuticals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92532F100</cusip>
  <value>548331</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1131</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1131</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Visa Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92826C839</cusip>
  <value>100965192</value>
  <shrsOrPrnAmt>
    <sshPrnamt>288093</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>279753</Sole>
    <Shared>0</Shared>
    <None>8340</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vulcan Materials Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>929160109</cusip>
  <value>227467</value>
  <shrsOrPrnAmt>
    <sshPrnamt>975</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>975</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Walmart Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>931142103</cusip>
  <value>1371415</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15622</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15541</Sole>
    <Shared>0</Shared>
    <None>81</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Walt Disney Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>254687106</cusip>
  <value>21404337</value>
  <shrsOrPrnAmt>
    <sshPrnamt>216863</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>208712</Sole>
    <Shared>0</Shared>
    <None>8151</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Waste Connections Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>94106B101</cusip>
  <value>78313070</value>
  <shrsOrPrnAmt>
    <sshPrnamt>401215</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>392314</Sole>
    <Shared>0</Shared>
    <None>8901</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Waste Management Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>94106L109</cusip>
  <value>760799</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3286</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3286</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Wells Fargo &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>949746101</cusip>
  <value>707290</value>
  <shrsOrPrnAmt>
    <sshPrnamt>9852</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9720</Sole>
    <Shared>0</Shared>
    <None>132</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>WW Grainger Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>384802104</cusip>
  <value>217323</value>
  <shrsOrPrnAmt>
    <sshPrnamt>220</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>220</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Xylem Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98419M100</cusip>
  <value>547963</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4587</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4537</Sole>
    <Shared>0</Shared>
    <None>50</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Yum Brands Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>988498101</cusip>
  <value>671927</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4270</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4270</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Yum China Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98850P109</cusip>
  <value>309028</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5936</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5936</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Zoetis Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98978V103</cusip>
  <value>20919341</value>
  <shrsOrPrnAmt>
    <sshPrnamt>127053</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>122732</Sole>
    <Shared>0</Shared>
    <None>4321</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares MSCI EAFE ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>464287465</cusip>
  <value>1387285</value>
  <shrsOrPrnAmt>
    <sshPrnamt>16974</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16974</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard ESG Intl Stock ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>921910725</cusip>
  <value>2100219</value>
  <shrsOrPrnAmt>
    <sshPrnamt>35609</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>34662</Sole>
    <Shared>0</Shared>
    <None>947</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE All-World Ex-US </nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>922042775</cusip>
  <value>32375876</value>
  <shrsOrPrnAmt>
    <sshPrnamt>533727</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>510579</Sole>
    <Shared>0</Shared>
    <None>23148</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE DM ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>921943858</cusip>
  <value>96956344</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1907463</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1714131</Sole>
    <Shared>0</Shared>
    <None>193332</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE EM ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>922042858</cusip>
  <value>5572484</value>
  <shrsOrPrnAmt>
    <sshPrnamt>123122</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>120418</Sole>
    <Shared>0</Shared>
    <None>2704</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2025 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J825</cusip>
  <value>21883254</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1058184</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>762236</Sole>
    <Shared>0</Shared>
    <None>295948</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2026 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J791</cusip>
  <value>24762112</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1271156</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>922019</Sole>
    <Shared>0</Shared>
    <None>349137</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2027 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J783</cusip>
  <value>30687649</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1566496</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1180030</Sole>
    <Shared>0</Shared>
    <None>386466</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2028 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J643</cusip>
  <value>12032874</value>
  <shrsOrPrnAmt>
    <sshPrnamt>591296</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>476358</Sole>
    <Shared>0</Shared>
    <None>114938</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2029 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J577</cusip>
  <value>9402919</value>
  <shrsOrPrnAmt>
    <sshPrnamt>507443</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>404249</Sole>
    <Shared>0</Shared>
    <None>103194</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2030 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J460</cusip>
  <value>3942414</value>
  <shrsOrPrnAmt>
    <sshPrnamt>237638</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>199979</Sole>
    <Shared>0</Shared>
    <None>37659</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2031 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J429</cusip>
  <value>1187662</value>
  <shrsOrPrnAmt>
    <sshPrnamt>72818</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>60490</Sole>
    <Shared>0</Shared>
    <None>12328</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2032 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46139W858</cusip>
  <value>677364</value>
  <shrsOrPrnAmt>
    <sshPrnamt>33253</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>28019</Sole>
    <Shared>0</Shared>
    <None>5234</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2033 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46139W825</cusip>
  <value>258744</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12386</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11901</Sole>
    <Shared>0</Shared>
    <None>485</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares 1-5 Year IG Corporate </nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464288646</cusip>
  <value>7282946</value>
  <shrsOrPrnAmt>
    <sshPrnamt>139067</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>120662</Sole>
    <Shared>0</Shared>
    <None>18405</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares 5-10 Year IG Corporate</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464288638</cusip>
  <value>2688604</value>
  <shrsOrPrnAmt>
    <sshPrnamt>51192</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>38369</Sole>
    <Shared>0</Shared>
    <None>12823</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares National Muni Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464288414</cusip>
  <value>213516</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2025</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2025</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>MFS High Income Municipal Trus</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>59318D104</cusip>
  <value>114774</value>
  <shrsOrPrnAmt>
    <sshPrnamt>31104</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31104</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PIMCO Intermediate Muni Bond A</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>72201R866</cusip>
  <value>15616712</value>
  <shrsOrPrnAmt>
    <sshPrnamt>302943</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>298873</Sole>
    <Shared>0</Shared>
    <None>4070</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PIMCO S/T Muni Bond Active ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>72201R874</cusip>
  <value>3292767</value>
  <shrsOrPrnAmt>
    <sshPrnamt>65829</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>61074</Sole>
    <Shared>0</Shared>
    <None>4755</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Intermediate Term Cor</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>92206C870</cusip>
  <value>489824</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5991</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>619</Sole>
    <Shared>0</Shared>
    <None>5372</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/T Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>921937827</cusip>
  <value>356174</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4550</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4550</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/T Treasury ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>92206C102</cusip>
  <value>1344652</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22911</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16138</Sole>
    <Shared>0</Shared>
    <None>6773</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Bond Mkt ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>921937835</cusip>
  <value>498138</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6782</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6585</Sole>
    <Shared>0</Shared>
    <None>197</None>
  </votingAuthority>
</infoTable>
</informationTable>
