<?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>1566</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14902</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14736</Sole>
    <Shared>0</Shared>
    <None>166</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Abbott Laboratories</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>002824100</cusip>
  <value>3338</value>
  <shrsOrPrnAmt>
    <sshPrnamt>32964</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>32759</Sole>
    <Shared>0</Shared>
    <None>205</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Abbvie Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00287Y109</cusip>
  <value>3541</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22219</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22149</Sole>
    <Shared>0</Shared>
    <None>70</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Accenture Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G1151C101</cusip>
  <value>37418</value>
  <shrsOrPrnAmt>
    <sshPrnamt>130920</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>128842</Sole>
    <Shared>0</Shared>
    <None>2078</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Activision Blizzard Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00507V109</cusip>
  <value>25736</value>
  <shrsOrPrnAmt>
    <sshPrnamt>300687</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>294437</Sole>
    <Shared>0</Shared>
    <None>6250</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Adobe Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00724F101</cusip>
  <value>417</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1081</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1081</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Advanced Micro Devices Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>007903107</cusip>
  <value>524</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5346</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5346</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Air Products &amp; Chemicals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>009158106</cusip>
  <value>903</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3146</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3146</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Akamai Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00971T101</cusip>
  <value>17040</value>
  <shrsOrPrnAmt>
    <sshPrnamt>217627</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>214960</Sole>
    <Shared>0</Shared>
    <None>2667</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Allstate Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>020002101</cusip>
  <value>244</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2205</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2205</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Alphabet Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02079K305</cusip>
  <value>95829</value>
  <shrsOrPrnAmt>
    <sshPrnamt>923833</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>897784</Sole>
    <Shared>0</Shared>
    <None>26049</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Alphabet Inc-C</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02079K107</cusip>
  <value>17438</value>
  <shrsOrPrnAmt>
    <sshPrnamt>167669</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>165139</Sole>
    <Shared>0</Shared>
    <None>2530</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Altria Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>02209S103</cusip>
  <value>206</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4611</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4361</Sole>
    <Shared>0</Shared>
    <None>250</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amazon.com Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>023135106</cusip>
  <value>55373</value>
  <shrsOrPrnAmt>
    <sshPrnamt>536089</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>520533</Sole>
    <Shared>0</Shared>
    <None>15556</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Express Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>025816109</cusip>
  <value>319</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1934</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1934</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Tower Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03027X100</cusip>
  <value>59667</value>
  <shrsOrPrnAmt>
    <sshPrnamt>291998</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>284968</Sole>
    <Shared>0</Shared>
    <None>7030</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>American Water Works Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>030420103</cusip>
  <value>51665</value>
  <shrsOrPrnAmt>
    <sshPrnamt>352686</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>344362</Sole>
    <Shared>0</Shared>
    <None>8324</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AMETEK Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>031100100</cusip>
  <value>53085</value>
  <shrsOrPrnAmt>
    <sshPrnamt>365275</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>357819</Sole>
    <Shared>0</Shared>
    <None>7456</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amgen Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>031162100</cusip>
  <value>1293</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5350</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4913</Sole>
    <Shared>0</Shared>
    <None>437</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Amphenol Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>032095101</cusip>
  <value>68215</value>
  <shrsOrPrnAmt>
    <sshPrnamt>834738</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>816929</Sole>
    <Shared>0</Shared>
    <None>17809</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ansys Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>03662Q105</cusip>
  <value>27355</value>
  <shrsOrPrnAmt>
    <sshPrnamt>82198</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>80568</Sole>
    <Shared>0</Shared>
    <None>1630</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Aon PLC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G0403H108</cusip>
  <value>41333</value>
  <shrsOrPrnAmt>
    <sshPrnamt>131095</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>129194</Sole>
    <Shared>0</Shared>
    <None>1901</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Apple Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>037833100</cusip>
  <value>189763</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1150776</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1121482</Sole>
    <Shared>0</Shared>
    <None>29294</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Applied Materials Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>038222105</cusip>
  <value>594</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4839</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4839</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ASML Holding NV</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>N07059210</cusip>
  <value>24890</value>
  <shrsOrPrnAmt>
    <sshPrnamt>36565</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>35326</Sole>
    <Shared>0</Shared>
    <None>1239</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Assurant Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>04621X108</cusip>
  <value>229</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1911</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1911</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>AT&amp;T Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>00206R102</cusip>
  <value>668</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34726</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33015</Sole>
    <Shared>0</Shared>
    <None>1711</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Automatic Data Processing Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>053015103</cusip>
  <value>9501</value>
  <shrsOrPrnAmt>
    <sshPrnamt>42678</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>42092</Sole>
    <Shared>0</Shared>
    <None>586</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Autozone Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>053332102</cusip>
  <value>204</value>
  <shrsOrPrnAmt>
    <sshPrnamt>83</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>83</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank of America Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>060505104</cusip>
  <value>15397</value>
  <shrsOrPrnAmt>
    <sshPrnamt>538364</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>523580</Sole>
    <Shared>0</Shared>
    <None>14784</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Becton Dickinson &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>075887109</cusip>
  <value>1572</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6352</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6352</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Berkshire Hathaway Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>084670108</cusip>
  <value>466</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>83541</value>
  <shrsOrPrnAmt>
    <sshPrnamt>270562</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>264321</Sole>
    <Shared>0</Shared>
    <None>6241</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>BlackRock Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09247X101</cusip>
  <value>912</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1363</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1363</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Blackstone Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>09260D107</cusip>
  <value>513</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5838</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5838</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Boeing Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>097023105</cusip>
  <value>409</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1923</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1923</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Borgwarner Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>099724106</cusip>
  <value>23986</value>
  <shrsOrPrnAmt>
    <sshPrnamt>488404</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>479168</Sole>
    <Shared>0</Shared>
    <None>9236</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bristol-Myers Squibb Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>110122108</cusip>
  <value>734</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10594</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10050</Sole>
    <Shared>0</Shared>
    <None>544</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Broadcom Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>11135F101</cusip>
  <value>1091</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1701</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1701</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Brown Forman Corp-B</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>115637209</cusip>
  <value>1415</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22012</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22012</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Canadian National Railway Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>136375102</cusip>
  <value>414</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3509</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3509</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Caterpillar Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>149123101</cusip>
  <value>831</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3632</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3632</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Charles Schwab Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>808513105</cusip>
  <value>961</value>
  <shrsOrPrnAmt>
    <sshPrnamt>18355</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>18339</Sole>
    <Shared>0</Shared>
    <None>16</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Chevron Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>166764100</cusip>
  <value>3897</value>
  <shrsOrPrnAmt>
    <sshPrnamt>23883</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>23281</Sole>
    <Shared>0</Shared>
    <None>602</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Chubb Ltd</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>H1467J104</cusip>
  <value>52624</value>
  <shrsOrPrnAmt>
    <sshPrnamt>271005</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>265410</Sole>
    <Shared>0</Shared>
    <None>5595</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Church &amp; Dwight Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>171340102</cusip>
  <value>556</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6289</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6289</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cigna Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>125523100</cusip>
  <value>214</value>
  <shrsOrPrnAmt>
    <sshPrnamt>836</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>836</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cisco Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>17275R102</cusip>
  <value>1206</value>
  <shrsOrPrnAmt>
    <sshPrnamt>23079</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>23016</Sole>
    <Shared>0</Shared>
    <None>63</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Clorox Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>189054109</cusip>
  <value>225</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1425</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1375</Sole>
    <Shared>0</Shared>
    <None>50</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CME Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>12572Q105</cusip>
  <value>24338</value>
  <shrsOrPrnAmt>
    <sshPrnamt>127076</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>123899</Sole>
    <Shared>0</Shared>
    <None>3177</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Coca Cola Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>191216100</cusip>
  <value>1205</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19420</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14620</Sole>
    <Shared>0</Shared>
    <None>4800</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cognizant Tech Solutions Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>192446102</cusip>
  <value>11557</value>
  <shrsOrPrnAmt>
    <sshPrnamt>189679</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>187953</Sole>
    <Shared>0</Shared>
    <None>1726</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Colgate Palmolive Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>194162103</cusip>
  <value>10360</value>
  <shrsOrPrnAmt>
    <sshPrnamt>137852</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>133312</Sole>
    <Shared>0</Shared>
    <None>4540</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Comcast Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20030N101</cusip>
  <value>3569</value>
  <shrsOrPrnAmt>
    <sshPrnamt>94148</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>93395</Sole>
    <Shared>0</Shared>
    <None>753</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ConocoPhillips</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>20825C104</cusip>
  <value>37716</value>
  <shrsOrPrnAmt>
    <sshPrnamt>380166</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>372191</Sole>
    <Shared>0</Shared>
    <None>7975</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Constellation Brands Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>21036P108</cusip>
  <value>21033</value>
  <shrsOrPrnAmt>
    <sshPrnamt>93110</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>90612</Sole>
    <Shared>0</Shared>
    <None>2498</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Consumer Discretionary Select </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y407</cusip>
  <value>8378</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56023</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>54183</Sole>
    <Shared>0</Shared>
    <None>1840</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Copart Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>217204106</cusip>
  <value>256</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3400</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3400</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Corning Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>219350105</cusip>
  <value>284</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8056</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8011</Sole>
    <Shared>0</Shared>
    <None>45</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Corteva Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22052L104</cusip>
  <value>331</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5491</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5491</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Costco Wholesale Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22160K105</cusip>
  <value>56544</value>
  <shrsOrPrnAmt>
    <sshPrnamt>113800</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>111517</Sole>
    <Shared>0</Shared>
    <None>2283</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Crown Castle Intl Corp-REIT</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>22822V101</cusip>
  <value>581</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4339</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4339</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CSX Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>126408103</cusip>
  <value>479</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15987</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15987</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Cullen/Frost Bankers Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>229899109</cusip>
  <value>3635</value>
  <shrsOrPrnAmt>
    <sshPrnamt>34503</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33913</Sole>
    <Shared>0</Shared>
    <None>590</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>CVS Health Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>126650100</cusip>
  <value>407</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5480</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5180</Sole>
    <Shared>0</Shared>
    <None>300</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Danaher Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>235851102</cusip>
  <value>88725</value>
  <shrsOrPrnAmt>
    <sshPrnamt>352027</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>345550</Sole>
    <Shared>0</Shared>
    <None>6477</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Deere &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>244199105</cusip>
  <value>15947</value>
  <shrsOrPrnAmt>
    <sshPrnamt>38624</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>37586</Sole>
    <Shared>0</Shared>
    <None>1038</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dimensional US Targeted Value </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>25434V609</cusip>
  <value>222</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4990</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4990</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Dow Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>260557103</cusip>
  <value>384</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7000</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7000</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Du Pont de Nemours Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>26614N102</cusip>
  <value>480</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6682</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6682</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Duke Energy Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>26441C204</cusip>
  <value>430</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4457</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4457</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Eaton Corp PLC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G29183103</cusip>
  <value>36250</value>
  <shrsOrPrnAmt>
    <sshPrnamt>211570</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>205706</Sole>
    <Shared>0</Shared>
    <None>5864</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Ecolab Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>278865100</cusip>
  <value>26678</value>
  <shrsOrPrnAmt>
    <sshPrnamt>161165</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>158230</Sole>
    <Shared>0</Shared>
    <None>2935</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Edwards Lifesciences Cp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>28176E108</cusip>
  <value>311</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3765</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3765</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Eli Lilly &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>532457108</cusip>
  <value>2054</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5981</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4861</Sole>
    <Shared>0</Shared>
    <None>1120</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Emerson Electric Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>291011104</cusip>
  <value>1421</value>
  <shrsOrPrnAmt>
    <sshPrnamt>16307</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>16207</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Enterprise Products Partners L</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>293792107</cusip>
  <value>556</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21478</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20903</Sole>
    <Shared>0</Shared>
    <None>575</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Equinix Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>29444U700</cusip>
  <value>21008</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29136</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>28586</Sole>
    <Shared>0</Shared>
    <None>550</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Estee Lauder Companies-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>518439104</cusip>
  <value>750</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3044</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3044</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Exxon Mobil Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30231G102</cusip>
  <value>36834</value>
  <shrsOrPrnAmt>
    <sshPrnamt>335895</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>324198</Sole>
    <Shared>0</Shared>
    <None>11697</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Factset Research Systems Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>303075105</cusip>
  <value>211</value>
  <shrsOrPrnAmt>
    <sshPrnamt>508</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>508</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Fastenal Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>311900104</cusip>
  <value>367</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6795</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6795</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Financial Select Sector SPDR E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y605</cusip>
  <value>343</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10660</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10583</Sole>
    <Shared>0</Shared>
    <None>77</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>First Trust NASDAQ Cybersecuri</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>33734X846</cusip>
  <value>345</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>Fox Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>35137L105</cusip>
  <value>726</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21320</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20920</Sole>
    <Shared>0</Shared>
    <None>400</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>General Dynamics Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>369550108</cusip>
  <value>393</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1724</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1724</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>General Electric Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>369604301</cusip>
  <value>290</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3036</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3024</Sole>
    <Shared>0</Shared>
    <None>12</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Genuine Parts Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>372460105</cusip>
  <value>210</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1254</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1254</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Globe Life Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>37959E102</cusip>
  <value>10160</value>
  <shrsOrPrnAmt>
    <sshPrnamt>92348</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>90777</Sole>
    <Shared>0</Shared>
    <None>1571</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Goldman Sachs Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>38141G104</cusip>
  <value>405</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1238</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1238</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Health Care Select Sector SPDR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y209</cusip>
  <value>222</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1712</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1712</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Henry Schein Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>806407102</cusip>
  <value>1260</value>
  <shrsOrPrnAmt>
    <sshPrnamt>15453</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15383</Sole>
    <Shared>0</Shared>
    <None>70</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hershey Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>427866108</cusip>
  <value>35299</value>
  <shrsOrPrnAmt>
    <sshPrnamt>138749</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>136915</Sole>
    <Shared>0</Shared>
    <None>1834</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Hologic Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>436440101</cusip>
  <value>592</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7339</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6854</Sole>
    <Shared>0</Shared>
    <None>485</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Home Depot Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>437076102</cusip>
  <value>39806</value>
  <shrsOrPrnAmt>
    <sshPrnamt>134881</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>131966</Sole>
    <Shared>0</Shared>
    <None>2915</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Honeywell International Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>438516106</cusip>
  <value>1785</value>
  <shrsOrPrnAmt>
    <sshPrnamt>9342</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8942</Sole>
    <Shared>0</Shared>
    <None>400</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Idexx Labs Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>45168D104</cusip>
  <value>49117</value>
  <shrsOrPrnAmt>
    <sshPrnamt>98219</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>95690</Sole>
    <Shared>0</Shared>
    <None>2529</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Illinois Tool Wks Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>452308109</cusip>
  <value>1338</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5494</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5494</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intel Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>458140100</cusip>
  <value>969</value>
  <shrsOrPrnAmt>
    <sshPrnamt>29672</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>29461</Sole>
    <Shared>0</Shared>
    <None>211</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intl Business Machines Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>459200101</cusip>
  <value>1059</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8081</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7981</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intuit Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>461202103</cusip>
  <value>70525</value>
  <shrsOrPrnAmt>
    <sshPrnamt>158189</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>156127</Sole>
    <Shared>0</Shared>
    <None>2062</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Intuitive Surgical Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46120E602</cusip>
  <value>423</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1654</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1654</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco QQQ Trust Series 1 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46090E103</cusip>
  <value>1084</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3378</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3218</Sole>
    <Shared>0</Shared>
    <None>160</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco S&amp;P 500 Equal Weight E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46137V357</cusip>
  <value>1819</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12575</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2200</Sole>
    <Shared>0</Shared>
    <None>10375</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>IQ Hedge Multi Strategy Tracke</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>45409B107</cusip>
  <value>273</value>
  <shrsOrPrnAmt>
    <sshPrnamt>9360</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9360</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>2162</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5260</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4668</Sole>
    <Shared>0</Shared>
    <None>592</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P M/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287507</cusip>
  <value>117600</value>
  <shrsOrPrnAmt>
    <sshPrnamt>470098</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>355102</Sole>
    <Shared>0</Shared>
    <None>114996</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Core S&amp;P S/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287804</cusip>
  <value>2246</value>
  <shrsOrPrnAmt>
    <sshPrnamt>23223</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20628</Sole>
    <Shared>0</Shared>
    <None>2595</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares MSCI EM ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287234</cusip>
  <value>246</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6223</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5873</Sole>
    <Shared>0</Shared>
    <None>350</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287622</cusip>
  <value>17094</value>
  <shrsOrPrnAmt>
    <sshPrnamt>75897</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>57976</Sole>
    <Shared>0</Shared>
    <None>17921</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 Growth ET</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287614</cusip>
  <value>2462</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10077</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9724</Sole>
    <Shared>0</Shared>
    <None>353</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 1000 Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287598</cusip>
  <value>230</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1512</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1041</Sole>
    <Shared>0</Shared>
    <None>471</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 2000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287655</cusip>
  <value>1506</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8442</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4657</Sole>
    <Shared>0</Shared>
    <None>3785</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell 3000 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287689</cusip>
  <value>41912</value>
  <shrsOrPrnAmt>
    <sshPrnamt>178039</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>177961</Sole>
    <Shared>0</Shared>
    <None>78</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287499</cusip>
  <value>1264</value>
  <shrsOrPrnAmt>
    <sshPrnamt>18084</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13271</Sole>
    <Shared>0</Shared>
    <None>4813</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares Russell M/C Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287481</cusip>
  <value>449</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4934</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4934</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>571</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5376</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5357</Sole>
    <Shared>0</Shared>
    <None>19</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P 500 Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287309</cusip>
  <value>301</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4710</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4110</Sole>
    <Shared>0</Shared>
    <None>600</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P 500 Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>464287408</cusip>
  <value>253</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1669</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1669</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares S&amp;P GSCI Commodity ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46428R107</cusip>
  <value>387</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19210</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>19210</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Jacobs Solutions Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>46982L108</cusip>
  <value>603</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5129</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5129</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>JM Smucker Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>832696405</cusip>
  <value>392</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2491</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2491</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Johnson &amp; Johnson</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>478160104</cusip>
  <value>43532</value>
  <shrsOrPrnAmt>
    <sshPrnamt>280850</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>273535</Sole>
    <Shared>0</Shared>
    <None>7315</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Johnson Controls Intl Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G51502105</cusip>
  <value>301</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>48008</value>
  <shrsOrPrnAmt>
    <sshPrnamt>368410</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>360658</Sole>
    <Shared>0</Shared>
    <None>7752</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Kimberly Clark Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>494368103</cusip>
  <value>2863</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21334</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21334</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lam Research Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>512807108</cusip>
  <value>260</value>
  <shrsOrPrnAmt>
    <sshPrnamt>491</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>491</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Linde Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G54950103</cusip>
  <value>63714</value>
  <shrsOrPrnAmt>
    <sshPrnamt>179254</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>174767</Sole>
    <Shared>0</Shared>
    <None>4487</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lockheed Martin Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>539830109</cusip>
  <value>574</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1215</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1215</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Lowe&apos;s Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>548661107</cusip>
  <value>2741</value>
  <shrsOrPrnAmt>
    <sshPrnamt>13707</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>13707</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Magellan Midstream Partners LP</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>559080106</cusip>
  <value>300</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5536</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5536</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Marathon Petroleum Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>56585A102</cusip>
  <value>336</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2495</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2495</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Marsh &amp; Mclennan Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>571748102</cusip>
  <value>439</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2637</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2637</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mastercard Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>57636Q104</cusip>
  <value>1409</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3876</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3761</Sole>
    <Shared>0</Shared>
    <None>115</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McCormick &amp; Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>579780206</cusip>
  <value>14722</value>
  <shrsOrPrnAmt>
    <sshPrnamt>176929</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>174484</Sole>
    <Shared>0</Shared>
    <None>2445</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McDonalds Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>580135101</cusip>
  <value>4550</value>
  <shrsOrPrnAmt>
    <sshPrnamt>16271</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>15766</Sole>
    <Shared>0</Shared>
    <None>505</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>McKesson Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58155Q103</cusip>
  <value>296</value>
  <shrsOrPrnAmt>
    <sshPrnamt>832</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>832</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Medtronic Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G5960L103</cusip>
  <value>22441</value>
  <shrsOrPrnAmt>
    <sshPrnamt>278350</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>273171</Sole>
    <Shared>0</Shared>
    <None>5179</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Merck &amp; Co Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>58933Y105</cusip>
  <value>33849</value>
  <shrsOrPrnAmt>
    <sshPrnamt>318162</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>310516</Sole>
    <Shared>0</Shared>
    <None>7646</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Meta Platforms, Inc.</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>30303M102</cusip>
  <value>16954</value>
  <shrsOrPrnAmt>
    <sshPrnamt>79992</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>77871</Sole>
    <Shared>0</Shared>
    <None>2121</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mettler-Toledo Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>592688105</cusip>
  <value>62592</value>
  <shrsOrPrnAmt>
    <sshPrnamt>40904</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>40230</Sole>
    <Shared>0</Shared>
    <None>674</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Microchip Technology Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>595017104</cusip>
  <value>82523</value>
  <shrsOrPrnAmt>
    <sshPrnamt>985001</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>964942</Sole>
    <Shared>0</Shared>
    <None>20059</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Microsoft Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>594918104</cusip>
  <value>113375</value>
  <shrsOrPrnAmt>
    <sshPrnamt>393253</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>384406</Sole>
    <Shared>0</Shared>
    <None>8847</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Middleby Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>596278101</cusip>
  <value>1494</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10187</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>9919</Sole>
    <Shared>0</Shared>
    <None>268</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Mondelez Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>609207105</cusip>
  <value>567</value>
  <shrsOrPrnAmt>
    <sshPrnamt>8136</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8136</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Morgan Stanley</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>617446448</cusip>
  <value>430</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4902</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4902</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>National Grid Plc ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>636274409</cusip>
  <value>954</value>
  <shrsOrPrnAmt>
    <sshPrnamt>14032</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>14032</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Netflix Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>64110L106</cusip>
  <value>210</value>
  <shrsOrPrnAmt>
    <sshPrnamt>608</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>608</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>NextEra Energy Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>65339F101</cusip>
  <value>56265</value>
  <shrsOrPrnAmt>
    <sshPrnamt>729956</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>713674</Sole>
    <Shared>0</Shared>
    <None>16282</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nike Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>654106103</cusip>
  <value>13008</value>
  <shrsOrPrnAmt>
    <sshPrnamt>106067</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>104742</Sole>
    <Shared>0</Shared>
    <None>1325</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nordson Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>655663102</cusip>
  <value>16039</value>
  <shrsOrPrnAmt>
    <sshPrnamt>72164</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>71008</Sole>
    <Shared>0</Shared>
    <None>1156</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Norfolk Southern Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>655844108</cusip>
  <value>1583</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7467</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7072</Sole>
    <Shared>0</Shared>
    <None>395</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Northern Trust Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>665859104</cusip>
  <value>14661</value>
  <shrsOrPrnAmt>
    <sshPrnamt>166353</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>162245</Sole>
    <Shared>0</Shared>
    <None>4108</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Northrop Grumman Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>666807102</cusip>
  <value>26253</value>
  <shrsOrPrnAmt>
    <sshPrnamt>56858</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>55707</Sole>
    <Shared>0</Shared>
    <None>1151</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Novartis AG ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>66987V109</cusip>
  <value>327</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3559</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3559</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Novo Nordisk A/S ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>670100205</cusip>
  <value>726</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4562</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4562</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Nvent Electric PLC</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G6700G107</cusip>
  <value>215</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>Nvidia Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>67066G104</cusip>
  <value>36595</value>
  <shrsOrPrnAmt>
    <sshPrnamt>131747</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>127263</Sole>
    <Shared>0</Shared>
    <None>4484</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>NVR Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>62944T105</cusip>
  <value>351</value>
  <shrsOrPrnAmt>
    <sshPrnamt>63</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>63</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Omnicom Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>681919106</cusip>
  <value>283</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3005</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2855</Sole>
    <Shared>0</Shared>
    <None>150</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Oracle Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>68389X105</cusip>
  <value>2061</value>
  <shrsOrPrnAmt>
    <sshPrnamt>22179</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>22179</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Oshkosh Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>688239201</cusip>
  <value>15686</value>
  <shrsOrPrnAmt>
    <sshPrnamt>188584</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>185831</Sole>
    <Shared>0</Shared>
    <None>2753</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Palo Alto Networks Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>697435105</cusip>
  <value>88883</value>
  <shrsOrPrnAmt>
    <sshPrnamt>444991</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>434508</Sole>
    <Shared>0</Shared>
    <None>10483</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Paychex Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>704326107</cusip>
  <value>328</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2861</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1361</Sole>
    <Shared>0</Shared>
    <None>1500</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pentair Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G7S00T104</cusip>
  <value>276</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5001</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5001</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pepsico Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>713448108</cusip>
  <value>55304</value>
  <shrsOrPrnAmt>
    <sshPrnamt>303367</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>299162</Sole>
    <Shared>0</Shared>
    <None>4205</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Pfizer Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>717081103</cusip>
  <value>13772</value>
  <shrsOrPrnAmt>
    <sshPrnamt>337557</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>328172</Sole>
    <Shared>0</Shared>
    <None>9385</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Philip Morris Intl Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>718172109</cusip>
  <value>680</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6990</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6890</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Phillips 66</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>718546104</cusip>
  <value>39182</value>
  <shrsOrPrnAmt>
    <sshPrnamt>386484</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>379102</Sole>
    <Shared>0</Shared>
    <None>7382</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PNC Financial Services Group</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>693475105</cusip>
  <value>395</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3105</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3105</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Polaris Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>731068102</cusip>
  <value>11959</value>
  <shrsOrPrnAmt>
    <sshPrnamt>108101</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>104509</Sole>
    <Shared>0</Shared>
    <None>3592</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Procter &amp; Gamble Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>742718109</cusip>
  <value>28205</value>
  <shrsOrPrnAmt>
    <sshPrnamt>189688</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>179969</Sole>
    <Shared>0</Shared>
    <None>9719</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Progressive Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>743315103</cusip>
  <value>204</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1425</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1425</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ProShares UltraShort S&amp;P500 ET</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>74347G416</cusip>
  <value>272</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6800</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6800</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Prudential Financial Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>744320102</cusip>
  <value>317</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3830</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3830</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Quaker Houghton</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>747316107</cusip>
  <value>4282</value>
  <shrsOrPrnAmt>
    <sshPrnamt>21630</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>21183</Sole>
    <Shared>0</Shared>
    <None>447</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Qualcomm Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>747525103</cusip>
  <value>49161</value>
  <shrsOrPrnAmt>
    <sshPrnamt>385334</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>375764</Sole>
    <Shared>0</Shared>
    <None>9570</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Raytheon Technologies Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75513E101</cusip>
  <value>37278</value>
  <shrsOrPrnAmt>
    <sshPrnamt>380664</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>371001</Sole>
    <Shared>0</Shared>
    <None>9663</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>RBC Bearings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75524B104</cusip>
  <value>13424</value>
  <shrsOrPrnAmt>
    <sshPrnamt>57680</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56750</Sole>
    <Shared>0</Shared>
    <None>930</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Regeneron Pharmaceuticals Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>75886F107</cusip>
  <value>201</value>
  <shrsOrPrnAmt>
    <sshPrnamt>245</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>245</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Rockwell Automation Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>773903109</cusip>
  <value>23506</value>
  <shrsOrPrnAmt>
    <sshPrnamt>80102</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>78291</Sole>
    <Shared>0</Shared>
    <None>1811</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Roper Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>776696106</cusip>
  <value>48280</value>
  <shrsOrPrnAmt>
    <sshPrnamt>109556</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>107337</Sole>
    <Shared>0</Shared>
    <None>2219</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>S&amp;P Global Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78409V104</cusip>
  <value>1308</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3793</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3793</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Salesforce Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>79466L302</cusip>
  <value>638</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3195</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2895</Sole>
    <Shared>0</Shared>
    <None>300</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SAP SE ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>803054204</cusip>
  <value>231</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1823</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1823</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SEI Investments Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>784117103</cusip>
  <value>3326</value>
  <shrsOrPrnAmt>
    <sshPrnamt>57791</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56806</Sole>
    <Shared>0</Shared>
    <None>985</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>ServiceNow Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81762P102</cusip>
  <value>233</value>
  <shrsOrPrnAmt>
    <sshPrnamt>502</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>502</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Shell PLC ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>780259305</cusip>
  <value>204</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3554</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3554</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sherwin-Williams Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>824348106</cusip>
  <value>23286</value>
  <shrsOrPrnAmt>
    <sshPrnamt>103599</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>102214</Sole>
    <Shared>0</Shared>
    <None>1385</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Southern Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>842587107</cusip>
  <value>254</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3652</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3552</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78462F103</cusip>
  <value>124920</value>
  <shrsOrPrnAmt>
    <sshPrnamt>305137</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>230125</Sole>
    <Shared>0</Shared>
    <None>75012</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P Biotech ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78464A870</cusip>
  <value>4236</value>
  <shrsOrPrnAmt>
    <sshPrnamt>55585</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>54056</Sole>
    <Shared>0</Shared>
    <None>1529</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>SPDR S&amp;P M/C 400 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>78467Y107</cusip>
  <value>3653</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7968</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4126</Sole>
    <Shared>0</Shared>
    <None>3842</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Starbucks Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>855244109</cusip>
  <value>5005</value>
  <shrsOrPrnAmt>
    <sshPrnamt>48062</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>47472</Sole>
    <Shared>0</Shared>
    <None>590</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>State Street Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>857477103</cusip>
  <value>394</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5211</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5211</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>STERIS Plc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G8473T100</cusip>
  <value>11143</value>
  <shrsOrPrnAmt>
    <sshPrnamt>58254</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>56605</Sole>
    <Shared>0</Shared>
    <None>1649</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Stryker Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>863667101</cusip>
  <value>30014</value>
  <shrsOrPrnAmt>
    <sshPrnamt>105139</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>102963</Sole>
    <Shared>0</Shared>
    <None>2176</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Sysco Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>871829107</cusip>
  <value>302</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3915</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3915</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>T Rowe Price Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>74144T108</cusip>
  <value>16363</value>
  <shrsOrPrnAmt>
    <sshPrnamt>144933</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>141466</Sole>
    <Shared>0</Shared>
    <None>3467</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Target Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>87612E106</cusip>
  <value>389</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2350</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2350</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>TE Connectivity Ltd</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>H84989104</cusip>
  <value>897</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6842</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6842</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Technology Select Sector SPDR </nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>81369Y803</cusip>
  <value>318</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2106</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2087</Sole>
    <Shared>0</Shared>
    <None>19</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Teleflex Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>879369106</cusip>
  <value>7621</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30085</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>29274</Sole>
    <Shared>0</Shared>
    <None>811</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tesla Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>88160R101</cusip>
  <value>1421</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6850</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6071</Sole>
    <Shared>0</Shared>
    <None>779</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Texas Instruments Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>882508104</cusip>
  <value>1277</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6864</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6864</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Thermo Fisher Scientific Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>883556102</cusip>
  <value>82855</value>
  <shrsOrPrnAmt>
    <sshPrnamt>143753</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>141119</Sole>
    <Shared>0</Shared>
    <None>2634</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>TJX Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>872540109</cusip>
  <value>59948</value>
  <shrsOrPrnAmt>
    <sshPrnamt>765036</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>750612</Sole>
    <Shared>0</Shared>
    <None>14424</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Toll Brothers Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>889478103</cusip>
  <value>15560</value>
  <shrsOrPrnAmt>
    <sshPrnamt>259197</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>254608</Sole>
    <Shared>0</Shared>
    <None>4589</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Toronto-Dominion Bank</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>891160509</cusip>
  <value>602</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10049</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8549</Sole>
    <Shared>0</Shared>
    <None>1500</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tractor Supply Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>892356106</cusip>
  <value>34319</value>
  <shrsOrPrnAmt>
    <sshPrnamt>146014</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>141855</Sole>
    <Shared>0</Shared>
    <None>4159</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Trane Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>G8994E103</cusip>
  <value>249</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1355</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>175</Sole>
    <Shared>0</Shared>
    <None>1180</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Travelers Companies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>89417E109</cusip>
  <value>566</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3303</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3303</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Truist Financial Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>89832Q109</cusip>
  <value>252</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7390</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7390</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Tyler Technologies Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>902252105</cusip>
  <value>244</value>
  <shrsOrPrnAmt>
    <sshPrnamt>689</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>689</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Unilever Plc ADR</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>904767704</cusip>
  <value>200</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3855</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3665</Sole>
    <Shared>0</Shared>
    <None>190</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Union Pacific Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>907818108</cusip>
  <value>28219</value>
  <shrsOrPrnAmt>
    <sshPrnamt>140210</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>136125</Sole>
    <Shared>0</Shared>
    <None>4085</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>United Parcel Service Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>911312106</cusip>
  <value>376</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1936</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1876</Sole>
    <Shared>0</Shared>
    <None>60</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Unitedhealth Group Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>91324P102</cusip>
  <value>41402</value>
  <shrsOrPrnAmt>
    <sshPrnamt>87606</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>85739</Sole>
    <Shared>0</Shared>
    <None>1867</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>US Bancorp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>902973304</cusip>
  <value>21772</value>
  <shrsOrPrnAmt>
    <sshPrnamt>603943</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>591105</Sole>
    <Shared>0</Shared>
    <None>12838</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Dividend Appreciation</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921908844</cusip>
  <value>11178</value>
  <shrsOrPrnAmt>
    <sshPrnamt>72580</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>31012</Sole>
    <Shared>0</Shared>
    <None>41568</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard ESG US Stock ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921910733</cusip>
  <value>883</value>
  <shrsOrPrnAmt>
    <sshPrnamt>12319</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11244</Sole>
    <Shared>0</Shared>
    <None>1075</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Financials ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92204A405</cusip>
  <value>231</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2965</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2965</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908736</cusip>
  <value>369</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1481</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1396</Sole>
    <Shared>0</Shared>
    <None>85</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard High Dividend Yield E</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921946406</cusip>
  <value>248</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2350</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2275</Sole>
    <Shared>0</Shared>
    <None>75</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard M/C Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908538</cusip>
  <value>242</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1243</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1235</Sole>
    <Shared>0</Shared>
    <None>8</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard M/C Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908512</cusip>
  <value>393</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2931</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2811</Sole>
    <Shared>0</Shared>
    <None>120</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Real Estate ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908553</cusip>
  <value>518</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6240</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5840</Sole>
    <Shared>0</Shared>
    <None>400</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S&amp;P 500 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908363</cusip>
  <value>1364</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3626</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3497</Sole>
    <Shared>0</Shared>
    <None>129</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S&amp;P M/C 400 ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921932885</cusip>
  <value>273</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3228</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3228</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/C ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908751</cusip>
  <value>68646</value>
  <shrsOrPrnAmt>
    <sshPrnamt>362134</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>315543</Sole>
    <Shared>0</Shared>
    <None>46591</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/C Growth ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908595</cusip>
  <value>279</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1291</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1287</Sole>
    <Shared>0</Shared>
    <None>4</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard S/C Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908611</cusip>
  <value>206</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1299</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1278</Sole>
    <Shared>0</Shared>
    <None>21</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Intl Stock ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>921909768</cusip>
  <value>412</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7454</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7454</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Stock Market ET</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908769</cusip>
  <value>11089</value>
  <shrsOrPrnAmt>
    <sshPrnamt>54331</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>33980</Sole>
    <Shared>0</Shared>
    <None>20350</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total World Stock Ind</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922042742</cusip>
  <value>309</value>
  <shrsOrPrnAmt>
    <sshPrnamt>3352</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>3352</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Value ETF</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>922908744</cusip>
  <value>378</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2734</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2718</Sole>
    <Shared>0</Shared>
    <None>16</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Verizon Communications Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92343V104</cusip>
  <value>1623</value>
  <shrsOrPrnAmt>
    <sshPrnamt>41730</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>39152</Sole>
    <Shared>0</Shared>
    <None>2578</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Visa Inc-A</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>92826C839</cusip>
  <value>64235</value>
  <shrsOrPrnAmt>
    <sshPrnamt>284906</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>279128</Sole>
    <Shared>0</Shared>
    <None>5778</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Walmart Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>931142103</cusip>
  <value>826</value>
  <shrsOrPrnAmt>
    <sshPrnamt>5604</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>5486</Sole>
    <Shared>0</Shared>
    <None>118</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Walt Disney Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>254687106</cusip>
  <value>31383</value>
  <shrsOrPrnAmt>
    <sshPrnamt>313423</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>306754</Sole>
    <Shared>0</Shared>
    <None>6669</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Waste Connections Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>94106B101</cusip>
  <value>60680</value>
  <shrsOrPrnAmt>
    <sshPrnamt>436326</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>427962</Sole>
    <Shared>0</Shared>
    <None>8364</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Waste Management Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>94106L109</cusip>
  <value>386</value>
  <shrsOrPrnAmt>
    <sshPrnamt>2366</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>2366</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Wells Fargo &amp; Co</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>949746101</cusip>
  <value>396</value>
  <shrsOrPrnAmt>
    <sshPrnamt>10584</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>10584</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>West Pharmaceutical Services</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>955306105</cusip>
  <value>498</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1436</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1436</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Xylem Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98419M100</cusip>
  <value>204</value>
  <shrsOrPrnAmt>
    <sshPrnamt>1950</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>1850</Sole>
    <Shared>0</Shared>
    <None>100</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Yum Brands Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>988498101</cusip>
  <value>599</value>
  <shrsOrPrnAmt>
    <sshPrnamt>4533</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>4533</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Yum China Holdings Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98850P109</cusip>
  <value>424</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6696</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6696</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Zoetis Inc</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>98978V103</cusip>
  <value>12515</value>
  <shrsOrPrnAmt>
    <sshPrnamt>75190</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>73018</Sole>
    <Shared>0</Shared>
    <None>2172</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares MSCI EAFE ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>464287465</cusip>
  <value>1481</value>
  <shrsOrPrnAmt>
    <sshPrnamt>20701</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20546</Sole>
    <Shared>0</Shared>
    <None>155</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard ESG Intl Stock ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>921910725</cusip>
  <value>1751</value>
  <shrsOrPrnAmt>
    <sshPrnamt>33434</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>32965</Sole>
    <Shared>0</Shared>
    <None>469</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE All-World Ex-US </nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>922042775</cusip>
  <value>33545</value>
  <shrsOrPrnAmt>
    <sshPrnamt>627367</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>591064</Sole>
    <Shared>0</Shared>
    <None>36303</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE DM ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>921943858</cusip>
  <value>44128</value>
  <shrsOrPrnAmt>
    <sshPrnamt>976929</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>919830</Sole>
    <Shared>0</Shared>
    <None>57099</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard FTSE EM ETF</nameOfIssuer>
  <titleOfClass>INTL</titleOfClass>
  <cusip>922042858</cusip>
  <value>17192</value>
  <shrsOrPrnAmt>
    <sshPrnamt>425550</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>393542</Sole>
    <Shared>0</Shared>
    <None>32008</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Bank of America Corp</nameOfIssuer>
  <titleOfClass>COM</titleOfClass>
  <cusip>060505682</cusip>
  <value>362</value>
  <shrsOrPrnAmt>
    <sshPrnamt>310</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>310</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2023 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J866</cusip>
  <value>14715</value>
  <shrsOrPrnAmt>
    <sshPrnamt>698052</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>602307</Sole>
    <Shared>0</Shared>
    <None>95745</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2024 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J841</cusip>
  <value>19448</value>
  <shrsOrPrnAmt>
    <sshPrnamt>944539</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>692507</Sole>
    <Shared>0</Shared>
    <None>252032</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2025 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J825</cusip>
  <value>15963</value>
  <shrsOrPrnAmt>
    <sshPrnamt>787109</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>559517</Sole>
    <Shared>0</Shared>
    <None>227592</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2026 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J791</cusip>
  <value>12258</value>
  <shrsOrPrnAmt>
    <sshPrnamt>639788</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>414000</Sole>
    <Shared>0</Shared>
    <None>225788</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2027 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J783</cusip>
  <value>3836</value>
  <shrsOrPrnAmt>
    <sshPrnamt>198704</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>167746</Sole>
    <Shared>0</Shared>
    <None>30958</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2028 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J643</cusip>
  <value>1230</value>
  <shrsOrPrnAmt>
    <sshPrnamt>61293</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>45944</Sole>
    <Shared>0</Shared>
    <None>15349</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Invesco BulletShares 2029 Corp</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>46138J577</cusip>
  <value>348</value>
  <shrsOrPrnAmt>
    <sshPrnamt>19017</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>11054</Sole>
    <Shared>0</Shared>
    <None>7963</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares 1-5 Year IG Corporate </nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464288646</cusip>
  <value>20474</value>
  <shrsOrPrnAmt>
    <sshPrnamt>405110</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>340355</Sole>
    <Shared>0</Shared>
    <None>64755</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares 5-10 Year IG Corporate</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464288638</cusip>
  <value>4715</value>
  <shrsOrPrnAmt>
    <sshPrnamt>91948</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>68030</Sole>
    <Shared>0</Shared>
    <None>23918</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>iShares TIPS Bond ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>464287176</cusip>
  <value>8349</value>
  <shrsOrPrnAmt>
    <sshPrnamt>75725</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>74132</Sole>
    <Shared>0</Shared>
    <None>1593</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PIMCO Intermediate Muni Bond A</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>72201R866</cusip>
  <value>2622</value>
  <shrsOrPrnAmt>
    <sshPrnamt>50180</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>49630</Sole>
    <Shared>0</Shared>
    <None>550</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>PIMCO S/T Muni Bond Active ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>72201R874</cusip>
  <value>6154</value>
  <shrsOrPrnAmt>
    <sshPrnamt>123621</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>123121</Sole>
    <Shared>0</Shared>
    <None>500</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Intermediate Term Cor</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>92206C870</cusip>
  <value>497</value>
  <shrsOrPrnAmt>
    <sshPrnamt>6200</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>6200</Sole>
    <Shared>0</Shared>
    <None>0</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard MBS ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>92206C771</cusip>
  <value>355</value>
  <shrsOrPrnAmt>
    <sshPrnamt>7625</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>7625</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>1794</value>
  <shrsOrPrnAmt>
    <sshPrnamt>30647</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>20375</Sole>
    <Shared>0</Shared>
    <None>10272</None>
  </votingAuthority>
</infoTable>
<infoTable>
  <nameOfIssuer>Vanguard Total Bond Mkt ETF</nameOfIssuer>
  <titleOfClass>BOND FUND</titleOfClass>
  <cusip>921937835</cusip>
  <value>721</value>
  <shrsOrPrnAmt>
    <sshPrnamt>9767</sshPrnamt>
    <sshPrnamtType>SH</sshPrnamtType>
  </shrsOrPrnAmt>
  <investmentDiscretion>SOLE</investmentDiscretion>
  <votingAuthority>
    <Sole>8395</Sole>
    <Shared>0</Shared>
    <None>1372</None>
  </votingAuthority>
</infoTable>
</informationTable>
