<SEC-DOCUMENT>0001628280-26-051846.txt : 20260803
<SEC-HEADER>0001628280-26-051846.hdr.sgml : 20260803
<ACCEPTANCE-DATETIME>20260803161222
ACCESSION NUMBER:		0001628280-26-051846
CONFORMED SUBMISSION TYPE:	8-K
PUBLIC DOCUMENT COUNT:		12
CONFORMED PERIOD OF REPORT:	20260803
ITEM INFORMATION:		Results of Operations and Financial Condition
ITEM INFORMATION:		Financial Statements and Exhibits
FILED AS OF DATE:		20260803
DATE AS OF CHANGE:		20260803

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			UFP TECHNOLOGIES INC
		CENTRAL INDEX KEY:			0000914156
		STANDARD INDUSTRIAL CLASSIFICATION:	SURGICAL & MEDICAL INSTRUMENTS & APPARATUS [3841]
		ORGANIZATION NAME:           	08 Industrial Applications and Services
		EIN:				042314970
		STATE OF INCORPORATION:			DE
		FISCAL YEAR END:			1231

	FILING VALUES:
		FORM TYPE:		8-K
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-12648
		FILM NUMBER:		261232977

	BUSINESS ADDRESS:	
		STREET 1:		100 HALE STREET
		CITY:			NEWBURYPORT
		STATE:			MA
		ZIP:			01950
		BUSINESS PHONE:		978-352-2200

	MAIL ADDRESS:	
		STREET 1:		100 HALE STREET
		CITY:			NEWBURYPORT
		STATE:			MA
		ZIP:			01950
</SEC-HEADER>
<DOCUMENT>
<TYPE>8-K
<SEQUENCE>1
<FILENAME>ufpt-20260803.htm
<DESCRIPTION>8-K
<TEXT>
<XBRL>
<?xml version='1.0' encoding='ASCII'?>
<!--XBRL Document Created with the Workiva Platform-->
<!--Copyright 2026 Workiva-->
<!--r:019f8047-3c68-743b-8432-7b281e85077d,g:93f164ab-0547-4178-be22-aa37a7ca0345,d:bcebc23bafb04fbfb7ae124310373bcb-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2020-02-12" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dei="http://xbrl.sec.gov/dei/2025" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en-US"><head><meta http-equiv="Content-Type" content="text/html"/>


<title>ufpt-20260803</title></head><body><div style="display:none"><ix:header><ix:hidden><ix:nonNumeric contextRef="c-1" name="dei:AmendmentFlag" format="ixt:fixed-false" id="f-22">FALSE</ix:nonNumeric><ix:nonNumeric contextRef="c-1" name="dei:EntityCentralIndexKey" id="f-23">0000914156</ix:nonNumeric></ix:hidden><ix:references xml:lang="en-US"><link:schemaRef xlink:type="simple" xlink:href="ufpt-20260803.xsd"/></ix:references><ix:resources><xbrli:context id="c-1"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914156</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2026-08-03</xbrli:startDate><xbrli:endDate>2026-08-03</xbrli:endDate></xbrli:period></xbrli:context></ix:resources></ix:header></div><div id="ibcebc23bafb04fbfb7ae124310373bcb_1"></div><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt"><span><br/></span></div></div><div style="margin-bottom:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:98.900%"/><td style="width:0.1%"/></tr><tr style="height:3pt"><td colspan="3" style="border-bottom:3pt double #000;padding:0 1pt"/></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:14pt;font-weight:700;line-height:120%">UNITED STATES</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:14pt;font-weight:700;line-height:120%">SECURITIES AND EXCHANGE COMMISSION</span></div><div style="margin-bottom:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:14pt;font-weight:700;line-height:120%">Washington, D.C. 20549</span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">_________________</span></div><div style="margin-bottom:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:14pt;font-weight:700;line-height:120%">FORM <ix:nonNumeric contextRef="c-1" name="dei:DocumentType" id="f-1">8-K</ix:nonNumeric></span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">_________________</span></div><div style="margin-bottom:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">CURRENT REPORT</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Pursuant to Section 13 or 15(d)</span></div><div style="margin-bottom:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">of the Securities Exchange Act of 1934</span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Date of Report (Date of earliest event reported): <ix:nonNumeric contextRef="c-1" name="dei:DocumentPeriodEndDate" format="ixt:date-monthname-day-year-en" id="f-2">August 3, 2026</ix:nonNumeric></span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">_______________________________</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:EntityRegistrantName" id="f-3">UFP TECHNOLOGIES, INC.</ix:nonNumeric></span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(Exact name of registrant as specified in its charter)</span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">_______________________________</span></div><div style="margin-bottom:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:32.233%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:32.233%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:32.234%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" id="f-4">Delaware</ix:nonNumeric></span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:EntityFileNumber" id="f-5">001-12648</ix:nonNumeric></span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:EntityTaxIdentificationNumber" id="f-6">04-2314970</ix:nonNumeric></span></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(State or Other Jurisdiction of Incorporation)</span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(Commission File Number)</span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(I.R.S. Employer Identification No.)</span></td></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:EntityAddressAddressLine1" id="f-7">100 Hale Street</ix:nonNumeric></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:EntityAddressCityOrTown" id="f-8">Newburyport</ix:nonNumeric>, <ix:nonNumeric contextRef="c-1" name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" id="f-9">Massachusetts</ix:nonNumeric> - <ix:nonNumeric contextRef="c-1" name="dei:EntityAddressCountry" format="ixt-sec:countrynameen" id="f-10">USA</ix:nonNumeric> <ix:nonNumeric contextRef="c-1" name="dei:EntityAddressPostalZipCode" id="f-11">01950-3504</ix:nonNumeric></span></div><div style="margin-bottom:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(Address of Principal Executive Offices) (Zip Code)</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">(<ix:nonNumeric contextRef="c-1" name="dei:CityAreaCode" id="f-12">978</ix:nonNumeric>) <ix:nonNumeric contextRef="c-1" name="dei:LocalPhoneNumber" id="f-13">352-2200</ix:nonNumeric></span></div><div style="margin-bottom:6pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(Registrant's telephone number, including area code)</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">N/A</span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(Former name or former address, if changed since last report)</span></div><div style="margin-bottom:10pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">_______________________________</span></div><div style="margin-bottom:6pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Check the appropriate box below if the Form 8-K filing is intended to simultaneously satisfy the filing obligation of the registrant under any of the following provisions:</span></div><div style="margin-bottom:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:2.081%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:95.719%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:WrittenCommunications" format="ixt:fixed-false" id="f-14">o</ix:nonNumeric></span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Written communications pursuant to Rule 425 under the Securities Act (17 CFR 230.425)</span></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:SolicitingMaterial" format="ixt:fixed-false" id="f-15">o</ix:nonNumeric></span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Soliciting material pursuant to Rule 14a-12 under the Exchange Act (17 CFR 240.14a-12)</span></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:PreCommencementTenderOffer" format="ixt:fixed-false" id="f-16">o</ix:nonNumeric></span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act (17 CFR 240.14d-2(b))</span></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:PreCommencementIssuerTenderOffer" format="ixt:fixed-false" id="f-17">o</ix:nonNumeric></span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act (17 CFR 240.13e-4(c))</span></td></tr></table></div><div style="margin-bottom:6pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Securities registered pursuant to Section 12(b) of the Act:</span></div><div style="margin-bottom:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:32.233%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:32.233%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:32.234%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Title of each class</span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Trading Symbol(s)</span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Name of each exchange on which registered</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:Security12bTitle" id="f-18">Common Stock</ix:nonNumeric></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:TradingSymbol" id="f-19">UFPT</ix:nonNumeric></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">The <ix:nonNumeric contextRef="c-1" name="dei:SecurityExchangeName" id="f-20">NASDAQ</ix:nonNumeric> Stock Market L.L.C.</span></div></td></tr></table></div><div style="margin-bottom:6pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant is an emerging growth company as defined in Rule 405 of the Securities Act of 1933 (&#167;230.405 of this chapter) or Rule 12b-2 of the Securities Exchange Act of 1934 (&#167;240.12b-2 of this chapter).</span></div><div style="margin-bottom:6pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Emerging growth company </span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="c-1" name="dei:EntityEmergingGrowthCompany" format="ixt:fixed-false" id="f-21">o</ix:nonNumeric></span></div><div style="margin-bottom:12pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act. </span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:10pt;font-weight:400;line-height:120%">o</span></div><div style="margin-bottom:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:98.900%"/><td style="width:0.1%"/></tr><tr style="height:3pt"><td colspan="3" style="border-bottom:3pt double #000;padding:0 1pt"/></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><span><br/></span></div></div></div><div id="ibcebc23bafb04fbfb7ae124310373bcb_10"></div><hr style="page-break-after:always"/><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt"><span><br/></span></div></div><div style="margin-bottom:12pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Item 2.02. Results of Operations and Financial Condition.</span></div><div style="margin-bottom:12pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">On August 3, 2026, UFP Technologies, Inc. issued a press release announcing its financial results for the second quarter ended June 30, 2026. A copy of the press release is furnished herewith as Exhibit 99.1.</span></div><div style="margin-bottom:12pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Limitation on Incorporation by Reference.</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%"> The information furnished in this Item 2.02, including the press release attached hereto as Exhibit 99.1, shall not be deemed &#8220;filed&#8221; for purposes of Section 18 of the Securities Exchange Act of 1934, as amended (the &#8220;Exchange Act&#8221;), or otherwise subject to the liabilities of that section, nor shall such information be deemed incorporated by reference in any filing under the Securities Act of 1933, as amended, or the Exchange Act, except as shall be expressly set forth by specific reference in such a filing.</span></div><div style="margin-bottom:12pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Cautionary Note Regarding Forward-Looking Statements.</span><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%"> Except for historical information contained in the press release attached as an exhibit hereto, the press release contains forward-looking statements that involve certain risks and uncertainties that could cause actual results to differ materially from those expressed or implied by these statements. Please refer to the cautionary note in the press release regarding these forward-looking statements.</span></div><div id="ibcebc23bafb04fbfb7ae124310373bcb_13"></div><div style="-sec-extract:summary;margin-bottom:12pt;margin-top:12pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Item 9.01. Financial Statements and Exhibits.</span></div><div style="margin-bottom:12pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">(d) Exhibits</span></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:14.051%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.406%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:83.143%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%;text-decoration:underline">Exhibit Number</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%;text-decoration:underline">Description</span></td></tr><tr style="height:12pt"><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="ufpt-20260803x8kxexx991.htm">99.1</a></span></div></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#0000ff;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#0000ff;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline" href="ufpt-20260803x8kxexx991.htm">Press Release dated August 3, 2026</a></span></div></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">104</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Cover Page Interactive Data File (embedded within the Inline XBRL document)</span></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><span><br/></span></div></div></div><div id="ibcebc23bafb04fbfb7ae124310373bcb_16"></div><hr style="page-break-after:always"/><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt"><span><br/></span></div></div><div style="margin-bottom:12pt;text-align:center"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">SIGNATURE</span></div><div style="margin-bottom:10pt"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Pursuant to the requirements of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned hereunto duly authorized.</span></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:48.445%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:3.596%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:44.659%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="6" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">UFP Technologies, Inc.</span></td></tr><tr style="height:14pt"><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr style="height:14pt"><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Date: August 3, 2026</span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">By: </span></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">/s/ Ronald J. Lataille&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Ronald J. Lataille</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:120%">Sr. Vice President, Treasurer and Chief Financial Officer</span></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><span><br/></span></div></div></div></body></html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-99.1
<SEQUENCE>2
<FILENAME>ufpt-20260803x8kxexx991.htm
<DESCRIPTION>EX-99.1
<TEXT>
<html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2026 Workiva -->
<title>Document</title></head><body><div id="id3077afd23dd49799cf0cb4cb7c97f08_1"></div><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:120%">Exhibit 99.1</font></div></div><div style="margin-bottom:12pt;text-align:right"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">                                                               </font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:162%">UFP Technologies Announces Record Q2 Results</font></div><div style="text-align:center"><font><br></font></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">Newburyport, Mass., August 3, 2026. UFP Technologies, Inc. (Nasdaq&#58; UFPT), a trusted contract development and manufacturing organization specializing in comprehensive solutions for medical devices, sterile packaging and other highly engineered custom products, today reported net income of $20.9 million for its second quarter ended June&#160;30, 2026, 21.4% higher than net income of $17.2 million for the second quarter of 2025. Net sales for the quarter ended June&#160;30, 2026 were $174.0 million, 15.1% higher than 2025 second quarter sales of $151.2 million. Generally accepted accounting principles (&#34;GAAP&#34;) and adjusted earnings per diluted common share outstanding (&#34;EPS&#34;) for the quarter ended June&#160;30, 2026 were $2.68 and $2.92, respectively. Net sales, net income, and EPS for the second quarter of 2026 reflect record quarterly results for the Company. Net income for the six-month period ended June&#160;30, 2026 was $38.3 million, 11.6% higher than net income of $34.4 million for the same period in 2025. Net sales for the six-month period ended June&#160;30, 2026 were $328.2 million, compared to sales of $299.3 million in the same period of 2025. GAAP and adjusted EPS for the six-month period ended June&#160;30, 2026 were $4.92 and $5.39, respectively.</font></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">Throughout this news release, reference is made to non-GAAP measures including organic sales growth&#59; adjusted selling, general and administrative expenses (&#34;SG&#38;A&#34;)&#59; adjusted operating income&#59; adjusted net income and EPS&#59; and EBITDA and adjusted EBITDA. Please see &#8220;Non-GAAP Financial Information&#8221; at the end of this news release.</font></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#34;Our second quarter and first-half results reflect solid execution across the platform and continued progress toward our long-term growth strategy,&#34; said Mitch Rock, President and Chief Executive Officer. &#34;In the second quarter, the team delivered 15.1% sales growth, increased gross margins to 29.3%, and grew operating income by 15.5%. These results were driven by contributions across the UFP platform, demonstrating the strength and diversity of our MedTech business.&#34;</font></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#34;During the quarter, our top five customers grew 14.7%, the balance of our MedTech business grew 19.7%, and our non-medical business was flat,&#34; continued Rock. &#34;We continue to invest in our Dominican Republic operations to support customer-driven growth initiatives, expand capacity, and enhance our cost structure over time. These investments are generating early operational benefits and strengthening our ability to support future growth. While the full realization of these benefits is taking longer than anticipated, the investments are creating near-term mix and margin pressure within our U.S. operations. We also continue to strengthen our leadership team, adding experienced executives in business development, operations, and legal to increase organizational capacity and support the continued growth of the UFP platform.&#34;</font></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#34;Looking ahead, we continue to see meaningful opportunities to grow with existing customers, support new program launches, pursue disciplined acquisitions, and invest in our people and capabilities,&#8221; said Rock. &#8220;The fundamentals of the markets we serve remain attractive, and we remain focused on disciplined execution and long-term value creation for our customers and shareholders.&#34;</font></div><div><font><br></font></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="margin-bottom:12pt"><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%;text-decoration:underline">Financial Highlights&#58;</font></div><div style="padding-left:22.5pt;text-indent:-13.5pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#8226;</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%;padding-left:9.3pt">Sales for the second quarter increased 15.1% to $174.0 million, from $151.2 million in the same period of 2025. Year-to-date sales through June increased 9.6% to $328.2 million, from $299.3 million in the same period of 2025. Organic sales growth for the three- and six-month periods ended June&#160;30, 2026, was 12.4% and 6.8%, respectively.</font></div><div style="text-indent:4.5pt"><font><br></font></div><div style="padding-left:22.5pt;text-indent:-13.5pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%">&#8226;</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%;padding-left:9.3pt">Gross profit as a percentage of sales (&#8220;gross margin&#8221;) increased to 29.3% for the second quarter of 2026, from 28.8% in the same quarter of 2025. Gross margin for the six-month period ended June&#160;30, 2026, increased to 29.0% from 28.6% in the same period of 2025.</font></div><div style="text-indent:4.5pt"><font><br></font></div><div style="margin-bottom:12pt;padding-left:22.5pt;text-indent:-13.5pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#8226;</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%;padding-left:9.3pt">SG&#38;A increased 21.8% to $22.8 million for the second quarter of 2026 compared to $18.7 million in the same quarter of 2025. As a percentage of sales, SG&#38;A increased to 13.1% in the second quarter of 2026, from 12.4% in the same period of 2025. For the six-month period ended June&#160;30, 2026, SG&#38;A increased 17.0% to $43.8 million from $37.4 million in the same period of 2025. As a percentage of sales, SG&#38;A in the six-month period ended June&#160;30, 2026, increased to 13.3% from 12.5% in the same period of 2025. As a percentage of sales, adjusted SG&#38;A increased to 11.7% and 11.8% for the three- and six-month periods ended June&#160;30, 2026, respectively, from 10.8% and 10.9%, respectively in the same periods of 2025.</font></div><div style="margin-bottom:12pt;padding-left:22.5pt;text-indent:-13.5pt"><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#8226;</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%;padding-left:9.3pt">Operating income increased 15.5% to $28.1 million for the </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">second</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%"> quarter of </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">2026</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">, from $24.3 million in the same quarter of </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">2025</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">. Adjusted operating income for the </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">second</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%"> quarter of </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">2026</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%"> </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">increased 12.3% to $30.6 million from $27.3 million in the same period of 2025. For the six-month period ended June&#160;30, 2026, operating income increased </font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">8.5%</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%"> to $51.5 million from $47.5 million in the same period of 2025. Adjusted operating income for the six-month period ended June&#160;30, 2026, increased 6.4% to $56.5 million from $53.1 million in the same period of 2025.</font></div><div style="margin-bottom:12pt;padding-left:22.5pt;text-indent:-13.5pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#8226;</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%;padding-left:9.3pt">Net income was $20.9 million in the second quarter of 2026, compared to $17.2 million in the same period of 2025. Adjusted net income increased 17.2% to $22.7 million in the second quarter of 2026, from $19.4 million in the same period of 2025. GAAP and adjusted diluted EPS for the second quarter of 2026 were $2.68 and $2.92, respectively, as compared to $2.21 and $2.50, respectively, for the same period in 2025. For the six-month period ended June&#160;30, 2026, net income increased to $38.3 million, from $34.4 million in the same period of 2025. Adjusted net income increased 8.9% to $42.1 million for the six-month period ended June&#160;30, 2026, from $38.6 in the same period of 2025.</font></div><div style="margin-bottom:12pt;padding-left:22.5pt;text-indent:-13.5pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">&#8226;</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%;padding-left:9.3pt">Adjusted EBITDA for the second quarter of 2026 increased 14.3% to $36.4 million from $31.8 million in </font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">the </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">second</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%"> quarter of </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">2025</font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">. </font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">Adjusted EBITDA for the six-month period ended June&#160;30, 2026, increased 8.5% to </font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">$67.3</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%"> million, from </font><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">$62.1</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%"> million in the same period of 2025.</font></div><div><font><br></font></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="text-align:justify"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">About UFP Technologies, Inc. </font></div><div style="text-align:justify"><font><br></font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">UFP Technologies is a trusted contract development and manufacturing organization specializing in comprehensive solutions for medical devices, sterile packaging and other highly engineered custom products. The company&#8217;s single-use and single-patient devices and components are used across a wide range of medical products in segments including robotic assisted surgery, patient beds, infection control, cardiovascular, orthopedics and spine and wound care. For more information, visit ufpt.com.</font></div><div style="text-align:justify"><font><br></font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%">Contact&#58; Ron Lataille</font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%"> 978-234-0926</font></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_4"></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Consolidated Condensed Statements of Income</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(in thousands, except per share data)</font></div><div style="margin-bottom:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(Unaudited)</font></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:48.596%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.021%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.021%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.021%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.023%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Three Months Ended</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Six Months Ended</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:0.75pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net sales</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">173,964&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">151,176&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">328,166&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">299,324&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Cost of sales</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">123,046&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">107,633&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">232,886&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">213,629&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Gross profit</font></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">50,918&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">43,543&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">95,280&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">85,695&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Selling, general &#38; administrative expenses</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">22,753&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">18,679&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">43,774&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">37,405&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Acquisition costs</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">283&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">320&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Change in fair value of contingent consideration</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">263&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">526&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Gain on disposal of property, plant &#38; equipment</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(6)</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(32)</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Operating income</font></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">28,099&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">24,329&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">51,466&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">47,455&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Interest expense, net</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">1,711&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,671&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">3,448&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">5,480&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Other (income) expense</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(40)</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">32&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(18)</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">68&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Income before income tax expense</font></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">26,428&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">21,626&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">48,036&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">41,907&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense</font></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">5,577&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,446&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">9,690&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,543&#160;</font></td><td style="background-color:#ffffff;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net income</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">20,851&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">17,180&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">38,346&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">34,364&#160;</font></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net income per share</font></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2.69&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2.23&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4.96&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4.46&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net income per diluted share</font></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2.68&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2.21&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4.92&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4.42&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Weighted average common shares outstanding</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,740&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,709&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,731&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,698&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Weighted average diluted common shares outstanding</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,788&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,773&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,796&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,783&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_7"></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Consolidated Condensed Balance Sheets</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(in thousands)</font></div><div style="margin-bottom:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(Unaudited)</font></div><div style="margin-bottom:20pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:48.596%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:23.748%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:23.750%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30, 2026</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2025</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Assets&#58;</font></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Cash and cash equivalents</font></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">9,045&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">20,301&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Receivables, net</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">113,247&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">82,914&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Inventories</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">100,090&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">86,856&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Other current assets</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">12,510&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">10,930&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net property, plant, and equipment</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">76,916&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">79,109&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Goodwill</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">196,444&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">197,403&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Intangible assets, net</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">135,246&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">140,849&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Other assets</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">38,411&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">36,715&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Total assets</font></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">681,909&#160;</font></td><td style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">655,077&#160;</font></td><td style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Liabilities and equity&#58;</font></td><td colspan="3" style="border-top:3pt double #000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Accounts payable</font></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">32,959&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">24,289&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Current installments, net of long-term debt</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">12,500&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">12,500&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Other current liabilities</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">32,845&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">38,073&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Long-term debt, excluding current installments</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">104,805&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">122,955&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Other liabilities</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">36,375&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">33,383&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Total liabilities</font></td><td colspan="2" style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">219,484&#160;</font></td><td style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">231,200&#160;</font></td><td style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Total equity</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">462,425&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">423,877&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Total liabilities and stockholders' equity</font></td><td style="border-bottom:3pt double #000;border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000;border-top:1pt solid #000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">681,909&#160;</font></td><td style="border-bottom:3pt double #000;border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-bottom:3pt double #000;border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000;border-top:1pt solid #000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">655,077&#160;</font></td><td style="border-bottom:3pt double #000;border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_10"></div><div style="margin-bottom:12pt;margin-top:20pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Conference Call</font></div><div style="margin-bottom:12pt;text-align:justify"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">The Company has scheduled a conference call on Tuesday, August 4, 2026, at 8&#58;30 AM Eastern time. Participants may join the call using the following dial-in numbers&#58;</font></div><div style="padding-left:31.5pt;text-indent:-13.5pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%">&#8226;</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%;padding-left:9.3pt">Toll-Free&#58; 1-412-206-6478</font></div><div style="padding-left:31.5pt;text-indent:-13.5pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%">&#8226;</font><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:112%;padding-left:9.3pt">International&#58; 1-833-890-4010</font></div><div><font><br></font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">A live webcast of the conference call and accompanying materials will be available at www.ufpt.com. </font></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">A replay of the webcast will be accessible following the event on the Company&#8217;s Investor Relations website at https&#58;&#47;&#47;ufpt.com&#47;investors&#47;.</font></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_13"></div><div style="margin-bottom:12pt;margin-top:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Forward-Looking Statements</font></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">Certain statements in this press release may be considered &#8220;forward-looking statements&#8221; within the meaning of Section 27A of the Securities Act of 1933, as amended, and Section 21E of the Securities Exchange Act of 1934, as amended. These statements are subject to known and unknown risks, uncertainties, and other factors, which may cause our or our industry&#8217;s actual results, performance, or achievements to be materially different from any future results, performance or achievements expressed or implied by the forward-looking statements. Forward-looking statements generally relate to future events or the Company&#8217;s future financial or operating performance and may be identified by words such as &#8220;may,&#8221; &#8220;should,&#8221; &#8220;expect,&#8221; &#8220;intend,&#8221; &#8220;will,&#8221; &#8220;estimate,&#8221; &#8220;anticipate,&#8221; &#8220;believe,&#8221; &#8220;predict,&#8221; or similar words. Such statements include, but are not limited to, statements about the </font></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">Company&#8217;s future financial or operating performance&#59; statements of the Company about the marketplace and the Company&#8217;s position in the marketplace&#59; statements about the Company&#8217;s acquisition strategies and opportunities and the Company&#8217;s growth potential and strategies for growth&#59; statements about the integration and performance of recent acquisitions, including that such acquisitions will be accretive to the Company's revenue, income and EBITDA&#59; statements about the Company&#8217;s ability to realize the benefits expected from our pipeline of acquisition opportunities and recently completed acquisitions, including any related synergies&#59; expectations regarding an increase in revenue as a result of the Company&#8217;s new robotic programs and facility expansions in the Dominican Republic and the completion of program transfers to the Dominican Republic in the safe patient handling space&#59; statements about the Company&#8217;s ability to realize the benefits expected from our four large programs&#59; expectations regarding an increase in product demand as a result of negotiating favorable terms with the Company&#8217;s largest customer&#59; expectations regarding customer demand&#59; and any indication that the Company may be able to sustain or increase its sales, earnings or earnings per share, or its sales, earnings or earnings per share growth rates. Factors that may cause actual results to differ materially from current expectations include, but are not limited to&#58; the Company's general ability to execute its business plans&#59; industry conditions, including fluctuations in supply, demand and prices for the Company's products and services due to inflation or otherwise&#59; risks associated with governmental regulations and&#47;or sanctions affecting the import and export of products, including tariffs, global trade barriers, additional taxes, tariff increases or uncertainties, cash repatriation restrictions, retaliations and boycotts between the U.S. and other countries&#59; risks associated with domestic, regional and global political risks and uncertainties, including the ongoing conflict between the U.S. and Iran&#59; risks relating to cyber security, such as cyber-attacks on the Company&#8217;s information technology infrastructure, products, suppliers, customers and partners, including the potential consequences of the Cyber Incident (as defined in Item 1C, Cybersecurity in our Annual Report on Form 10-K for the fiscal year ended December 31, 2025) could result in data or financial loss, reputational harm, business disruption, damage to our relationships with customers, consumers, employees and third parties on which we rely, litigation, regulatory investigations, enforcement actions or other negative impacts under cybersecurity related regulations or otherwise&#59; risks associated with our or third-party use of artificial intelligence technologies&#59; risks related to our indebtedness and compliance with covenants contained in our financing arrangements, and whether any available financing may be sufficient to address our needs&#59; risks relating to delayed payments by our customers and the potential for reduced or canceled orders&#59; risks related to customer concentration&#59; risks associated with new product and program launches&#59; risks relating to our performance and the performance of our counterparties under the agreements we have entered into&#59; the risk that our two largest customers, on whom we depend for a substantial portion of our annual revenues, will not purchase the expected volume of goods under the supply agreements we have entered into with them because, among other things, they no longer require the products at all or to the degree they anticipated or because, among other things, our largest customer decides to manufacture the products itself or through one of its affiliates or it obtains the products from other listed suppliers specified in our agreement&#59; risks associated with our inability to extend or otherwise renegotiate favorable terms with the Company's largest customer, if at all&#59; the risk that we will not achieve expected rebates under the applicable supply agreement&#59; risks relating to our ability to maintain increased levels of production at profitable levels, if at all&#59; or to continue to increase production rates and&#47;or timely and successfully transfer programs to the Dominican Republic and risks relating to disruptions and delays in our supply chain or labor force&#59; risks relating to our new robotic programs and facility expansions in the Dominican Republic&#59; risks associated with the identification of suitable acquisition candidates and the successful, efficient execution of acquisition transactions, the integration of any such acquisition candidates, the value of those acquisitions to our customers and shareholders, and the financing of </font></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="margin-bottom:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">such acquisitions&#59; and other risks and uncertainties set forth in the sections entitled &#34;Risk Factors&#34; and &#34;Cautionary Note Regarding Forward-Looking Statements&#34; in the Company's filings with the Securities and Exchange Commission (&#34;SEC&#34;), which are available on the SEC's website at www.sec.gov. The Company expressly disclaims any obligation or undertaking to release publicly any updates or revisions to any such statement to reflect any change in the Company&#8217;s expectations or any change in events, conditions, or circumstances on which any such statement is based. Forward-looking statements are also subject to the risks and other issues described below under &#8220;Non-GAAP Financial Information,&#8221; which could cause actual results to differ materially from current expectations included in the Company&#8217;s forward-looking statements included in this press release.</font></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_16"></div><div style="margin-bottom:12pt;margin-top:12pt"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Non-GAAP Financial Information</font></div><div style="margin-bottom:12pt;text-align:justify"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">This news release includes non-GAAP performance measures. Management considers organic sales growth, adjusted SG&#38;A, adjusted operating income, adjusted net income and EPS, EBITDA and adjusted EBITDA, non-GAAP measures. The Company uses these non-GAAP financial measures to facilitate management's financial and operational decision-making, including evaluation of the Company&#8217;s historical operating results. The Company&#8217;s management believes these non-GAAP measures are useful in evaluating the Company&#8217;s operating performance and are similar to measures reported by publicly listed U.S. competitors, and regularly used by securities analysts, institutional investors, and other interested parties in analyzing operating performance and prospects. These non-GAAP financial measures reflect an additional way of viewing aspects of the Company's operations that, when viewed with GAAP results and the reconciliations to corresponding GAAP financial measures, may provide a more complete understanding of factors and trends affecting the Company&#8217;s business. By providing these non-GAAP measures, the Company&#8217;s management intends to provide investors with a meaningful, consistent comparison of the Company&#8217;s performance for the periods presented. These non-GAAP financial measures should be considered supplemental to, and not a substitute for, financial information prepared in accordance with GAAP. The Company's definition of these non-GAAP measures may differ from similarly titled measures of performance used by other companies in other industries or within the same industry.</font></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_19"></div><div style="margin-top:28pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Organic Sales Growth Rate Reconciliation</font></div><div style="margin-bottom:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(in thousands)</font></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Three Months Ended</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Six Months Ended</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Overall net sales</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">173,964&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">151,176&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">328,166&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$299,324</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net sales from acquired operations</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(4,065)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(8,459)</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Organic sales</font></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">169,899&#160;</font></td><td style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">151,176&#160;</font></td><td style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$319,707</font></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$299,324</font></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Organic growth sales rate</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">12.4&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">%</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">6.8&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">%</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_25"></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="margin-top:32pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Adjusted Selling, General and Administrative Expenses (SG&#38;A)</font></div><div style="margin-bottom:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(in thousands)</font></div><div style="margin-bottom:12pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Three Months Ended</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Six Months Ended</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">SG&#38;A (GAAP)</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">22,753&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">18,679&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">43,774&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">37,405&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Amortization of intangible assets</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(2,477)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(2,411)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(4,958)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(4,798)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjusted SG&#38;A (Non-GAAP)</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">20,276&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">16,268&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">38,816&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">32,607&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjusted SG&#38;A as a % of sales</font></td><td colspan="2" style="border-top:3pt double #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">11.7&#160;</font></td><td style="border-top:3pt double #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">%</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="border-top:3pt double #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">10.8&#160;</font></td><td style="border-top:3pt double #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">%</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="border-top:3pt double #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">11.8&#160;</font></td><td style="border-top:3pt double #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">%</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="border-top:3pt double #000000;padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">10.9&#160;</font></td><td style="border-top:3pt double #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">%</font></td></tr></table></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_28"></div><div style="margin-top:32pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Adjusted Operating Income Reconciliation</font></div><div style="margin-bottom:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(in thousands)</font></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Three Months Ended</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Six Months Ended</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Operating income (GAAP)</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">28,099&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">24,329&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">51,466&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">47,455&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjustments&#58;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Acquisition costs</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">283&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">320&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Change in fair value of contingent consideration</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">263&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">526&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Amortization of intangible assets</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,477&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,411&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,958&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,798&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Gain on disposal of fixed assets</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(6)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(32)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjusted operating income (Non-GAAP)</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">30,642&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">27,275&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">56,464&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">53,088&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_31"></div><div style="margin-top:45pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">Adjusted Net Income per Diluted Common Share Outstanding Reconciliation</font></div><div style="margin-bottom:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(in thousands, except per share data)</font></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Three Months Ended</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Six Months Ended</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net income (GAAP)</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">20,851&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">17,180&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">38,346&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">34,364&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjustments (net of taxes)&#58;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Acquisition costs</font></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">283&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">320&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Change in fair value of contingent consideration</font></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">263&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">526&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Amortization of intangible assets</font></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,477</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,411&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,958&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,798&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Gain on disposal of fixed assets</font></td><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(6)</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(32)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Taxes on adjustments</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(655)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(729)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(1,287)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(1,394)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjusted net income (Non-GAAP)</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">22,739&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:middle"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">19,397&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:middle"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">42,057&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:middle"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:middle"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">38,603&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:middle"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjusted net income per diluted share<br>outstanding (Non-GAAP)</font></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2.92&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2.50&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">5.39&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4.96&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Weighted average diluted common shares outstanding</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,788&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,773&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,796&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,783&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div><div id="id3077afd23dd49799cf0cb4cb7c97f08_34"></div><hr style="page-break-after:always"><div style="min-height:45pt;width:100%"><div style="margin-bottom:12pt;text-align:right"><font><br></font></div></div><div style="margin-top:45pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:700;line-height:120%">EBITDA Reconciliation</font></div><div style="margin-bottom:12pt;text-align:center"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:12pt;font-weight:400;line-height:120%">(in thousands)</font></div><div style="text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Three Months Ended</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">Six Months Ended</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">June 30,</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2026</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 1pt;text-align:center;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:700;line-height:100%">2025</font></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Net income (GAAP)</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">20,851&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">17,180&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">38,346&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">34,364&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">5,577&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,446&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">9,690&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">7,543&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Interest expense, net</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">1,711&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,671&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">3,448&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">5,480&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Depreciation</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,488&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,308&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,906&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,555&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Amortization of intangible assets</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,477&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,411&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,958&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,798&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;EBITDA (Non-GAAP)</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">33,104&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">29,016&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">61,348&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">56,740&#160;</font></td><td style="border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjustments&#58;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Share based compensation</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">3,224&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">2,285&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">5,957&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">4,497&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Acquisition costs</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">283&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">72&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">320&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Change in fair value of contingent consideration</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">263&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">526&#160;</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Gain on disposal of fixed assets</font></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(6)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(32)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="padding:2.62pt 0 1.5pt 1pt;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">(11)</font></td><td style="padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="padding:2.62pt 1pt 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">Adjusted EBITDA (Non-GAAP)</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">36,394&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">31,836&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">67,345&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">$</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 0 1.5pt 0;text-align:right;vertical-align:bottom"><font style="color:#000000;font-family:'Times New Roman',serif;font-size:10pt;font-weight:400;line-height:100%">62,072&#160;</font></td><td style="border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2.62pt 1pt 1.5pt 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="margin-bottom:12pt"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>3
<FILENAME>ufpt-20260803.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with the Workiva Platform-->
<!--Copyright 2026 Workiva-->
<!--r:019f8047-3c68-743b-8432-7b281e85077d,g:93f164ab-0547-4178-be22-aa37a7ca0345-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:ufpt="http://www.ufpt.com/20260803" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.ufpt.com/20260803">
  <xs:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
  <xs:import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/dei/2025" schemaLocation="https://xbrl.sec.gov/dei/2025/dei-2025.xsd"/>
  <xs:annotation>
    <xs:appinfo>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ufpt-20260803_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ufpt-20260803_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/>
      <link:roleType id="Cover" roleURI="http://www.ufpt.com/role/Cover">
        <link:definition>0000001 - Document - Cover</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
    </xs:appinfo>
  </xs:annotation>
</xs:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>4
<FILENAME>ufpt-20260803_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with the Workiva Platform-->
<!--Copyright 2026 Workiva-->
<!--r:019f8047-3c68-743b-8432-7b281e85077d,g:93f164ab-0547-4178-be22-aa37a7ca0345-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/netLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel"/>
  <link:labelLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:label id="lab_dei_SolicitingMaterial_019f8047-3c68-7291-b5d6-2e8cb6ded35c_terseLabel_en-US" xlink:label="lab_dei_SolicitingMaterial" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Soliciting Material</link:label>
    <link:label id="lab_dei_SolicitingMaterial_label_en-US" xlink:label="lab_dei_SolicitingMaterial" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Soliciting Material</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SolicitingMaterial" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_SolicitingMaterial"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_SolicitingMaterial" xlink:to="lab_dei_SolicitingMaterial" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_WrittenCommunications_019f8047-3c68-7b15-9479-77c4e569e022_terseLabel_en-US" xlink:label="lab_dei_WrittenCommunications" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Written Communications</link:label>
    <link:label id="lab_dei_WrittenCommunications_label_en-US" xlink:label="lab_dei_WrittenCommunications" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Written Communications</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_WrittenCommunications" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_WrittenCommunications"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_WrittenCommunications" xlink:to="lab_dei_WrittenCommunications" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_LocalPhoneNumber_019f8047-3c68-7704-9e62-d10c22e0d9bb_terseLabel_en-US" xlink:label="lab_dei_LocalPhoneNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Local Phone Number</link:label>
    <link:label id="lab_dei_LocalPhoneNumber_label_en-US" xlink:label="lab_dei_LocalPhoneNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Local Phone Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_LocalPhoneNumber" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_LocalPhoneNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_LocalPhoneNumber" xlink:to="lab_dei_LocalPhoneNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CoverAbstract_label_en-US" xlink:label="lab_dei_CoverAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cover [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CoverAbstract" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_CoverAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CoverAbstract" xlink:to="lab_dei_CoverAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentPeriodEndDate_019f8047-3c68-77ee-8c50-aba06ed6dd48_terseLabel_en-US" xlink:label="lab_dei_DocumentPeriodEndDate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Document Period End Date</link:label>
    <link:label id="lab_dei_DocumentPeriodEndDate_label_en-US" xlink:label="lab_dei_DocumentPeriodEndDate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Period End Date</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentPeriodEndDate" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_DocumentPeriodEndDate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentPeriodEndDate" xlink:to="lab_dei_DocumentPeriodEndDate" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_PreCommencementTenderOffer_019f8047-3c68-7b7d-9d74-ac2abb78a11b_terseLabel_en-US" xlink:label="lab_dei_PreCommencementTenderOffer" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Pre-commencement Tender Offer</link:label>
    <link:label id="lab_dei_PreCommencementTenderOffer_label_en-US" xlink:label="lab_dei_PreCommencementTenderOffer" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Pre-commencement Tender Offer</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_PreCommencementTenderOffer" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_PreCommencementTenderOffer"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_PreCommencementTenderOffer" xlink:to="lab_dei_PreCommencementTenderOffer" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityCentralIndexKey_019f8047-3c68-716a-8b92-13a85ea504f3_terseLabel_en-US" xlink:label="lab_dei_EntityCentralIndexKey" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Central Index Key</link:label>
    <link:label id="lab_dei_EntityCentralIndexKey_label_en-US" xlink:label="lab_dei_EntityCentralIndexKey" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCentralIndexKey" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityCentralIndexKey"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityCentralIndexKey" xlink:to="lab_dei_EntityCentralIndexKey" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AmendmentFlag_019f8047-3c68-74bf-a97d-d3f181f81862_terseLabel_en-US" xlink:label="lab_dei_AmendmentFlag" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Amendment Flag</link:label>
    <link:label id="lab_dei_AmendmentFlag_label_en-US" xlink:label="lab_dei_AmendmentFlag" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amendment Flag</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AmendmentFlag" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_AmendmentFlag"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AmendmentFlag" xlink:to="lab_dei_AmendmentFlag" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_PreCommencementIssuerTenderOffer_019f8047-3c68-7dc4-971b-eb0671dfe314_terseLabel_en-US" xlink:label="lab_dei_PreCommencementIssuerTenderOffer" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Pre-commencement Issuer Tender Offer</link:label>
    <link:label id="lab_dei_PreCommencementIssuerTenderOffer_label_en-US" xlink:label="lab_dei_PreCommencementIssuerTenderOffer" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Pre-commencement Issuer Tender Offer</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_PreCommencementIssuerTenderOffer" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_PreCommencementIssuerTenderOffer"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_PreCommencementIssuerTenderOffer" xlink:to="lab_dei_PreCommencementIssuerTenderOffer" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityTaxIdentificationNumber_019f8047-3c68-70ae-81af-db5bae40a991_terseLabel_en-US" xlink:label="lab_dei_EntityTaxIdentificationNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:label id="lab_dei_EntityTaxIdentificationNumber_label_en-US" xlink:label="lab_dei_EntityTaxIdentificationNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityTaxIdentificationNumber" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityTaxIdentificationNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityTaxIdentificationNumber" xlink:to="lab_dei_EntityTaxIdentificationNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityEmergingGrowthCompany_019f8047-3c68-7ec2-9840-997384b7c058_terseLabel_en-US" xlink:label="lab_dei_EntityEmergingGrowthCompany" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:label id="lab_dei_EntityEmergingGrowthCompany_label_en-US" xlink:label="lab_dei_EntityEmergingGrowthCompany" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityEmergingGrowthCompany" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityEmergingGrowthCompany"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityEmergingGrowthCompany" xlink:to="lab_dei_EntityEmergingGrowthCompany" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityFileNumber_019f8047-3c68-7e0c-8902-4b5af11e544d_terseLabel_en-US" xlink:label="lab_dei_EntityFileNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity File Number</link:label>
    <link:label id="lab_dei_EntityFileNumber_label_en-US" xlink:label="lab_dei_EntityFileNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity File Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFileNumber" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityFileNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityFileNumber" xlink:to="lab_dei_EntityFileNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityRegistrantName_019f8047-3c68-7fb6-9cd3-3fb2b4a592f7_terseLabel_en-US" xlink:label="lab_dei_EntityRegistrantName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Registrant Name</link:label>
    <link:label id="lab_dei_EntityRegistrantName_label_en-US" xlink:label="lab_dei_EntityRegistrantName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityRegistrantName" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityRegistrantName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityRegistrantName" xlink:to="lab_dei_EntityRegistrantName" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_SecurityExchangeName_019f8047-3c68-777f-8447-70674db1eede_terseLabel_en-US" xlink:label="lab_dei_SecurityExchangeName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Security Exchange Name</link:label>
    <link:label id="lab_dei_SecurityExchangeName_label_en-US" xlink:label="lab_dei_SecurityExchangeName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Security Exchange Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SecurityExchangeName" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_SecurityExchangeName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_SecurityExchangeName" xlink:to="lab_dei_SecurityExchangeName" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_TradingSymbol_019f8047-3c68-7a61-9074-198cff850fbe_terseLabel_en-US" xlink:label="lab_dei_TradingSymbol" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Trading Symbol</link:label>
    <link:label id="lab_dei_TradingSymbol_label_en-US" xlink:label="lab_dei_TradingSymbol" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trading Symbol</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_TradingSymbol" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_TradingSymbol"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_TradingSymbol" xlink:to="lab_dei_TradingSymbol" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityIncorporationStateCountryCode_019f8047-3c68-7701-91f2-619e3a1a585c_terseLabel_en-US" xlink:label="lab_dei_EntityIncorporationStateCountryCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:label id="lab_dei_EntityIncorporationStateCountryCode_label_en-US" xlink:label="lab_dei_EntityIncorporationStateCountryCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityIncorporationStateCountryCode" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityIncorporationStateCountryCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityIncorporationStateCountryCode" xlink:to="lab_dei_EntityIncorporationStateCountryCode" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_Security12bTitle_019f8047-3c68-7150-abac-557cc9e9b7e8_terseLabel_en-US" xlink:label="lab_dei_Security12bTitle" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:label id="lab_dei_Security12bTitle_label_en-US" xlink:label="lab_dei_Security12bTitle" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_Security12bTitle" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_Security12bTitle"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_Security12bTitle" xlink:to="lab_dei_Security12bTitle" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressCountry_019f8047-3c68-769a-9a99-19b0a5ada422_terseLabel_en-US" xlink:label="lab_dei_EntityAddressCountry" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Address, Country</link:label>
    <link:label id="lab_dei_EntityAddressCountry_label_en-US" xlink:label="lab_dei_EntityAddressCountry" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Country</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCountry" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressCountry"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressCountry" xlink:to="lab_dei_EntityAddressCountry" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressStateOrProvince_019f8047-3c68-7da5-b0fb-e606f359633d_terseLabel_en-US" xlink:label="lab_dei_EntityAddressStateOrProvince" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:label id="lab_dei_EntityAddressStateOrProvince_label_en-US" xlink:label="lab_dei_EntityAddressStateOrProvince" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressStateOrProvince" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressStateOrProvince"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressStateOrProvince" xlink:to="lab_dei_EntityAddressStateOrProvince" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressPostalZipCode_019f8047-3c68-7a3d-b8fb-8b1119b1a5d1_terseLabel_en-US" xlink:label="lab_dei_EntityAddressPostalZipCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:label id="lab_dei_EntityAddressPostalZipCode_label_en-US" xlink:label="lab_dei_EntityAddressPostalZipCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressPostalZipCode" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressPostalZipCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressPostalZipCode" xlink:to="lab_dei_EntityAddressPostalZipCode" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressCityOrTown_019f8047-3c68-78fa-8833-8fd48a22f346_terseLabel_en-US" xlink:label="lab_dei_EntityAddressCityOrTown" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:label id="lab_dei_EntityAddressCityOrTown_label_en-US" xlink:label="lab_dei_EntityAddressCityOrTown" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCityOrTown" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressCityOrTown"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressCityOrTown" xlink:to="lab_dei_EntityAddressCityOrTown" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressAddressLine1_019f8047-3c68-7a73-a385-1d5b48584ae6_terseLabel_en-US" xlink:label="lab_dei_EntityAddressAddressLine1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:label id="lab_dei_EntityAddressAddressLine1_label_en-US" xlink:label="lab_dei_EntityAddressAddressLine1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressAddressLine1" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressAddressLine1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressAddressLine1" xlink:to="lab_dei_EntityAddressAddressLine1" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentType_019f8047-3c68-7825-9cf6-960a55391879_terseLabel_en-US" xlink:label="lab_dei_DocumentType" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Document Type</link:label>
    <link:label id="lab_dei_DocumentType_label_en-US" xlink:label="lab_dei_DocumentType" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Type</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentType" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_DocumentType"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentType" xlink:to="lab_dei_DocumentType" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CityAreaCode_019f8047-3c68-7c40-aef9-06ce1716b2f9_terseLabel_en-US" xlink:label="lab_dei_CityAreaCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">City Area Code</link:label>
    <link:label id="lab_dei_CityAreaCode_label_en-US" xlink:label="lab_dei_CityAreaCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">City Area Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CityAreaCode" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_CityAreaCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CityAreaCode" xlink:to="lab_dei_CityAreaCode" xlink:type="arc" order="1"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>5
<FILENAME>ufpt-20260803_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with the Workiva Platform-->
<!--Copyright 2026 Workiva-->
<!--r:019f8047-3c68-743b-8432-7b281e85077d,g:93f164ab-0547-4178-be22-aa37a7ca0345-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.ufpt.com/role/Cover" xlink:type="simple" xlink:href="ufpt-20260803.xsd#Cover"/>
  <link:presentationLink xlink:role="http://www.ufpt.com/role/Cover" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_CoverAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentType_019f8047-3c68-755f-98fd-ce6cd98914a9" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_DocumentType"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_DocumentType_019f8047-3c68-755f-98fd-ce6cd98914a9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentPeriodEndDate_019f8047-3c68-7671-9d42-af325e33b339" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_DocumentPeriodEndDate"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_DocumentPeriodEndDate_019f8047-3c68-7671-9d42-af325e33b339" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityRegistrantName_019f8047-3c68-7c23-a192-6ce0f7c4eab6" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityRegistrantName"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityRegistrantName_019f8047-3c68-7c23-a192-6ce0f7c4eab6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityIncorporationStateCountryCode_019f8047-3c68-7aba-97b5-f7887b97fed9" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityIncorporationStateCountryCode"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityIncorporationStateCountryCode_019f8047-3c68-7aba-97b5-f7887b97fed9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFileNumber_019f8047-3c68-7490-bf8c-f883185c0ab5" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityFileNumber"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityFileNumber_019f8047-3c68-7490-bf8c-f883185c0ab5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityTaxIdentificationNumber_019f8047-3c68-72e7-a2eb-f879ce238a10" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityTaxIdentificationNumber"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityTaxIdentificationNumber_019f8047-3c68-72e7-a2eb-f879ce238a10" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressAddressLine1_019f8047-3c68-7b33-8a33-bf80fda14f5e" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressAddressLine1"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityAddressAddressLine1_019f8047-3c68-7b33-8a33-bf80fda14f5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCityOrTown_019f8047-3c68-7d24-a75d-40813ad8f718" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressCityOrTown"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityAddressCityOrTown_019f8047-3c68-7d24-a75d-40813ad8f718" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressStateOrProvince_019f8047-3c68-7127-a4f6-47f7f3d18ceb" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressStateOrProvince"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityAddressStateOrProvince_019f8047-3c68-7127-a4f6-47f7f3d18ceb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCountry_019f8047-3c68-7c24-a121-ff2cacd573c4" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressCountry"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityAddressCountry_019f8047-3c68-7c24-a121-ff2cacd573c4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressPostalZipCode_019f8047-3c68-7ba7-bcc8-791a0787ac30" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityAddressPostalZipCode"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityAddressPostalZipCode_019f8047-3c68-7ba7-bcc8-791a0787ac30" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CityAreaCode_019f8047-3c68-73c0-9674-ae56bfc5818f" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_CityAreaCode"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_CityAreaCode_019f8047-3c68-73c0-9674-ae56bfc5818f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_LocalPhoneNumber_019f8047-3c68-77d8-8ec5-4a75fba40da7" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_LocalPhoneNumber"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_LocalPhoneNumber_019f8047-3c68-77d8-8ec5-4a75fba40da7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_WrittenCommunications_019f8047-3c68-7b04-93c9-8e39a1c5a5da" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_WrittenCommunications"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_WrittenCommunications_019f8047-3c68-7b04-93c9-8e39a1c5a5da" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SolicitingMaterial_019f8047-3c68-7850-a2d5-5814b5ec433b" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_SolicitingMaterial"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_SolicitingMaterial_019f8047-3c68-7850-a2d5-5814b5ec433b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_PreCommencementTenderOffer_019f8047-3c68-7031-bdee-8b0a3b1e54a2" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_PreCommencementTenderOffer"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_PreCommencementTenderOffer_019f8047-3c68-7031-bdee-8b0a3b1e54a2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_PreCommencementIssuerTenderOffer_019f8047-3c68-736b-9cb5-6372d09076ab" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_PreCommencementIssuerTenderOffer"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_PreCommencementIssuerTenderOffer_019f8047-3c68-736b-9cb5-6372d09076ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_Security12bTitle_019f8047-3c68-7b7f-af74-5ef9229634dd" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_Security12bTitle"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_Security12bTitle_019f8047-3c68-7b7f-af74-5ef9229634dd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_TradingSymbol_019f8047-3c68-7094-bfdc-7d749d884b3b" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_TradingSymbol"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_TradingSymbol_019f8047-3c68-7094-bfdc-7d749d884b3b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SecurityExchangeName_019f8047-3c68-7972-9a9c-79521b392b46" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_SecurityExchangeName"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_SecurityExchangeName_019f8047-3c68-7972-9a9c-79521b392b46" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityEmergingGrowthCompany_019f8047-3c68-75fc-bd80-9c5f5144bef4" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityEmergingGrowthCompany"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityEmergingGrowthCompany_019f8047-3c68-75fc-bd80-9c5f5144bef4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AmendmentFlag_019f8047-3c68-7bed-a7ed-929303c21117" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_AmendmentFlag"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_AmendmentFlag_019f8047-3c68-7bed-a7ed-929303c21117" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCentralIndexKey_019f8047-3c68-7521-aa29-e5c3325ffd4a" xlink:href="https://xbrl.sec.gov/dei/2025/dei-2025.xsd#dei_EntityCentralIndexKey"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_019f8047-3c68-7989-9b4a-533712a08848" xlink:to="loc_dei_EntityCentralIndexKey_019f8047-3c68-7521-aa29-e5c3325ffd4a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>7
<FILENAME>R1.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.26.1</span><table class="report" border="0" cellspacing="2" id="id2">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cover<br></strong></div></th>
<th class="th"><div>Aug. 03, 2026</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CoverAbstract', window );"><strong>Cover [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentType', window );">Document Type</a></td>
<td class="text">8-K<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Aug.  03,  2026<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityRegistrantName', window );">Registrant Name</a></td>
<td class="text">UFP TECHNOLOGIES, INC.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityIncorporationStateCountryCode', window );">Entity Incorporation, State or Country Code</a></td>
<td class="text">DE<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-12648<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">04-2314970<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">100 Hale Street<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">Newburyport<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">MA<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressCountry', window );">Entity Address, Country</a></td>
<td class="text">US<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">01950-3504<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CityAreaCode', window );">City Area Code</a></td>
<td class="text">978<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">352-2200<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_WrittenCommunications', window );">Written Communications</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_SolicitingMaterial', window );">Soliciting Material</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_PreCommencementTenderOffer', window );">Pre-commencement Tender Offer</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_PreCommencementIssuerTenderOffer', window );">Pre-commencement Issuer Tender Offer</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_Security12bTitle', window );">Title of 12(b) Security</a></td>
<td class="text">Common Stock<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">UFPT<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_SecurityExchangeName', window );">Security Exchange Name</a></td>
<td class="text">NASDAQ<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCentralIndexKey', window );">Central Index Key</a></td>
<td class="text">0000914156<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AmendmentFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AmendmentFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CityAreaCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Area code of city</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CityAreaCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CoverAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Cover page.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CoverAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentPeriodEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentPeriodEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentType">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentType</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:submissionTypeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressAddressLine1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Address Line 1 such as Attn, Building Name, Street Name</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressAddressLine1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressCityOrTown">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the City or Town</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressCityOrTown</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressCountry">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>ISO 3166-1 alpha-2 country code.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressCountry</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:countryCodeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressPostalZipCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Code for the postal or zip code</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressPostalZipCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressStateOrProvince">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the state or province.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressStateOrProvince</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:stateOrProvinceItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCentralIndexKey">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCentralIndexKey</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:centralIndexKeyItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityEmergingGrowthCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate if registrant meets the emerging growth company criteria.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityEmergingGrowthCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFileNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFileNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fileNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityIncorporationStateCountryCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Two-character EDGAR code representing the state or country of incorporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityIncorporationStateCountryCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarStateCountryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityRegistrantName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityRegistrantName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityTaxIdentificationNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityTaxIdentificationNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:employerIdItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LocalPhoneNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Local phone number for entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LocalPhoneNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_PreCommencementIssuerTenderOffer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 13e<br> -Subsection 4c<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_PreCommencementIssuerTenderOffer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_PreCommencementTenderOffer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 14d<br> -Subsection 2b<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_PreCommencementTenderOffer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_Security12bTitle">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Title of a 12(b) registered security.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_Security12bTitle</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:securityTitleItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SecurityExchangeName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the Exchange on which a security is registered.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection d1-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SecurityExchangeName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarExchangeCodeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SolicitingMaterial">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as soliciting material pursuant to Rule 14a-12 under the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 14a<br> -Subsection 12<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SolicitingMaterial</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_TradingSymbol">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Trading symbol of an instrument as listed on an exchange.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_TradingSymbol</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:tradingSymbolItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_WrittenCommunications">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as written communications pursuant to Rule 425 under the Securities Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Securities Act<br> -Number 230<br> -Section 425<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_WrittenCommunications</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>8
<FILENAME>report.css
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
/* Updated 2009-11-04 */
/* v2.2.0.24 */

/* DefRef Styles */
.report table.authRefData{
	background-color: #def;
	border: 2px solid #2F4497;
	font-size: 1em;
	position: absolute;
}

.report table.authRefData a {
	display: block;
	font-weight: bold;
}

.report table.authRefData p {
	margin-top: 0px;
}

.report table.authRefData .hide {
	background-color: #2F4497;
	padding: 1px 3px 0px 0px;
	text-align: right;
}

.report table.authRefData .hide a:hover {
	background-color: #2F4497;
}

.report table.authRefData .body {
	height: 150px;
	overflow: auto;
	width: 400px;
}

.report table.authRefData table{
	font-size: 1em;
}

/* Report Styles */
.pl a, .pl a:visited {
	color: black;
	text-decoration: none;
}

/* table */
.report {
	background-color: white;
	border: 2px solid #acf;
	clear: both;
	color: black;
	font: normal 8pt Helvetica, Arial, san-serif;
	margin-bottom: 2em;
}

.report hr {
	border: 1px solid #acf;
}

/* Top labels */
.report th {
	background-color: #acf;
	color: black;
	font-weight: bold;
	text-align: center;
}

.report th.void	{
	background-color: transparent;
	color: #000000;
	font: bold 10pt Helvetica, Arial, san-serif;
	text-align: left;
}

.report .pl {
	text-align: left;
	vertical-align: top;
	white-space: normal;
	width: 200px;
	white-space: normal; /* word-wrap: break-word; */
}

.report td.pl a.a {
	cursor: pointer;
	display: block;
	width: 200px;
	overflow: hidden;
}

.report td.pl div.a {
	width: 200px;
}

.report td.pl a:hover {
	background-color: #ffc;
}

/* Header rows... */
.report tr.rh {
	background-color: #acf;
	color: black;
	font-weight: bold;
}

/* Calendars... */
.report .rc {
	background-color: #f0f0f0;
}

/* Even rows... */
.report .re, .report .reu {
	background-color: #def;
}

.report .reu td {
	border-bottom: 1px solid black;
}

/* Odd rows... */
.report .ro, .report .rou {
	background-color: white;
}

.report .rou td {
	border-bottom: 1px solid black;
}

.report .rou table td, .report .reu table td {
	border-bottom: 0px solid black;
}

/* styles for footnote marker */
.report .fn {
	white-space: nowrap;
}

/* styles for numeric types */
.report .num, .report .nump {
	text-align: right;
	white-space: nowrap;
}

.report .nump {
	padding-left: 2em;
}

.report .nump {
	padding: 0px 0.4em 0px 2em;
}

/* styles for text types */
.report .text {
	text-align: left;
	white-space: normal;
}

.report .text .big {
	margin-bottom: 1em;
	width: 17em;
}

.report .text .more {
	display: none;
}

.report .text .note {
	font-style: italic;
	font-weight: bold;
}

.report .text .small {
	width: 10em;
}

.report sup {
	font-style: italic;
}

.report .outerFootnotes {
	font-size: 1em;
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>9
<FILENAME>Show.js
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
// Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission.  Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105.
var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0);
e.removeAttribute('id');a.parentNode.appendChild(e)}}
if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'}
e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>11
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.26.1</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>1</ContextCount>
  <ElementCount>23</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>false</FootnotesReported>
  <SegmentCount>0</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>0</UnitCount>
  <MyReports>
    <Report instance="ufpt-20260803.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>0000001 - Document - Cover</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.ufpt.com/role/Cover</Role>
      <ShortName>Cover</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <InputFiles>
    <File doctype="8-K" isOnlyDei="true" original="ufpt-20260803.htm">ufpt-20260803.htm</File>
    <File>ufpt-20260803.xsd</File>
    <File>ufpt-20260803_lab.xml</File>
    <File>ufpt-20260803_pre.xml</File>
  </InputFiles>
  <SupplementalFiles/>
  <BaseTaxonomies>
    <BaseTaxonomy items="23">http://xbrl.sec.gov/dei/2025</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>false</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>13
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "version": "2.2",
 "instance": {
  "ufpt-20260803.htm": {
   "nsprefix": "ufpt",
   "nsuri": "http://www.ufpt.com/20260803",
   "dts": {
    "inline": {
     "local": [
      "ufpt-20260803.htm"
     ]
    },
    "schema": {
     "local": [
      "ufpt-20260803.xsd"
     ],
     "remote": [
      "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xl-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xlink-2003-12-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "https://www.xbrl.org/dtr/type/2024-01-31/types.xsd",
      "https://xbrl.sec.gov/dei/2025/dei-2025.xsd"
     ]
    },
    "labelLink": {
     "local": [
      "ufpt-20260803_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "ufpt-20260803_pre.xml"
     ]
    }
   },
   "keyStandard": 23,
   "keyCustom": 0,
   "axisStandard": 0,
   "axisCustom": 0,
   "memberStandard": 0,
   "memberCustom": 0,
   "hidden": {
    "total": 2,
    "http://xbrl.sec.gov/dei/2025": 2
   },
   "contextCount": 1,
   "entityCount": 1,
   "segmentCount": 0,
   "elementCount": 24,
   "unitCount": 0,
   "baseTaxonomies": {
    "http://xbrl.sec.gov/dei/2025": 23
   },
   "report": {
    "R1": {
     "role": "http://www.ufpt.com/role/Cover",
     "longName": "0000001 - Document - Cover",
     "shortName": "Cover",
     "isDefault": "true",
     "groupType": "document",
     "subGroupType": "",
     "menuCat": "Cover",
     "order": "1",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ufpt-20260803.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ufpt-20260803.htm",
      "first": true,
      "unique": true
     }
    }
   },
   "tag": {
    "dei_AmendmentFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "AmendmentFlag",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Amendment Flag",
        "label": "Amendment Flag",
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission."
       }
      }
     },
     "auth_ref": []
    },
    "dei_CityAreaCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "CityAreaCode",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "City Area Code",
        "label": "City Area Code",
        "documentation": "Area code of city"
       }
      }
     },
     "auth_ref": []
    },
    "dei_CoverAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "CoverAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Cover [Abstract]",
        "documentation": "Cover page."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentPeriodEndDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "DocumentPeriodEndDate",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Document Period End Date",
        "label": "Document Period End Date",
        "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentType": {
     "xbrltype": "submissionTypeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "DocumentType",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Document Type",
        "label": "Document Type",
        "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressAddressLine1": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityAddressAddressLine1",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, Address Line One",
        "label": "Entity Address, Address Line One",
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressCityOrTown": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityAddressCityOrTown",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, City or Town",
        "label": "Entity Address, City or Town",
        "documentation": "Name of the City or Town"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressCountry": {
     "xbrltype": "countryCodeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityAddressCountry",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, Country",
        "label": "Entity Address, Country",
        "documentation": "ISO 3166-1 alpha-2 country code."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressPostalZipCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityAddressPostalZipCode",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, Postal Zip Code",
        "label": "Entity Address, Postal Zip Code",
        "documentation": "Code for the postal or zip code"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressStateOrProvince": {
     "xbrltype": "stateOrProvinceItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityAddressStateOrProvince",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, State or Province",
        "label": "Entity Address, State or Province",
        "documentation": "Name of the state or province."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityCentralIndexKey": {
     "xbrltype": "centralIndexKeyItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityCentralIndexKey",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Central Index Key",
        "label": "Entity Central Index Key",
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK."
       }
      }
     },
     "auth_ref": [
      "r1"
     ]
    },
    "dei_EntityEmergingGrowthCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityEmergingGrowthCompany",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Emerging Growth Company",
        "label": "Entity Emerging Growth Company",
        "documentation": "Indicate if registrant meets the emerging growth company criteria."
       }
      }
     },
     "auth_ref": [
      "r1"
     ]
    },
    "dei_EntityFileNumber": {
     "xbrltype": "fileNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityFileNumber",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity File Number",
        "label": "Entity File Number",
        "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityIncorporationStateCountryCode": {
     "xbrltype": "edgarStateCountryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityIncorporationStateCountryCode",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Incorporation, State or Country Code",
        "label": "Entity Incorporation, State or Country Code",
        "documentation": "Two-character EDGAR code representing the state or country of incorporation."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityRegistrantName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityRegistrantName",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Registrant Name",
        "label": "Entity Registrant Name",
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC."
       }
      }
     },
     "auth_ref": [
      "r1"
     ]
    },
    "dei_EntityTaxIdentificationNumber": {
     "xbrltype": "employerIdItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "EntityTaxIdentificationNumber",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Tax Identification Number",
        "label": "Entity Tax Identification Number",
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS."
       }
      }
     },
     "auth_ref": [
      "r1"
     ]
    },
    "dei_LocalPhoneNumber": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "LocalPhoneNumber",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Local Phone Number",
        "label": "Local Phone Number",
        "documentation": "Local phone number for entity."
       }
      }
     },
     "auth_ref": []
    },
    "dei_PreCommencementIssuerTenderOffer": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "PreCommencementIssuerTenderOffer",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Pre-commencement Issuer Tender Offer",
        "label": "Pre-commencement Issuer Tender Offer",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r3"
     ]
    },
    "dei_PreCommencementTenderOffer": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "PreCommencementTenderOffer",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Pre-commencement Tender Offer",
        "label": "Pre-commencement Tender Offer",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "dei_Security12bTitle": {
     "xbrltype": "securityTitleItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "Security12bTitle",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Title of 12(b) Security",
        "label": "Title of 12(b) Security",
        "documentation": "Title of a 12(b) registered security."
       }
      }
     },
     "auth_ref": [
      "r0"
     ]
    },
    "dei_SecurityExchangeName": {
     "xbrltype": "edgarExchangeCodeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "SecurityExchangeName",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Security Exchange Name",
        "label": "Security Exchange Name",
        "documentation": "Name of the Exchange on which a security is registered."
       }
      }
     },
     "auth_ref": [
      "r2"
     ]
    },
    "dei_SolicitingMaterial": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "SolicitingMaterial",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Soliciting Material",
        "label": "Soliciting Material",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as soliciting material pursuant to Rule 14a-12 under the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "dei_TradingSymbol": {
     "xbrltype": "tradingSymbolItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "TradingSymbol",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Trading Symbol",
        "label": "Trading Symbol",
        "documentation": "Trading symbol of an instrument as listed on an exchange."
       }
      }
     },
     "auth_ref": []
    },
    "dei_WrittenCommunications": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2025",
     "localname": "WrittenCommunications",
     "presentation": [
      "http://www.ufpt.com/role/Cover"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Written Communications",
        "label": "Written Communications",
        "documentation": "Boolean flag that is true when the Form 8-K filing is intended to satisfy the filing obligation of the registrant as written communications pursuant to Rule 425 under the Securities Act."
       }
      }
     },
     "auth_ref": [
      "r6"
     ]
    }
   }
  }
 },
 "std_ref": {
  "r0": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b"
  },
  "r1": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r2": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r3": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "13e",
   "Subsection": "4c"
  },
  "r4": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "14a",
   "Subsection": "12"
  },
  "r5": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "14d",
   "Subsection": "2b"
  },
  "r6": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Securities Act",
   "Number": "230",
   "Section": "425"
  }
 }
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>14
<FILENAME>0001628280-26-051846-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001628280-26-051846-xbrl.zip
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
MD1$)#3):2LG 0P;DKT3?/B&I_?XUB1@I6REHDYR!VHZFV^:+@"!(Z2<BXG(
MXR $8ZEMQT!GP#VN2+UNVCLGMIZLP1780W\#H;K@0^B;GB.(%H\5HW_LYA]^
M,+?T+"\E'@13!AY-/[DRQP*(9'7D.-6+^6-(R^RC2E$_9QUXTT>,*Q(YH&&H
M';W'(%R&^"$@/WQ?<QQ C8<LT+_M8RU/X);!@#*M@5.W7-LP""XB;#I,!?
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
MG!=/C'^B\Y*3J%383AKQA]M(:AGPWY70__:SB4B+-]H^FIE&VSBD!C:W#'F
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
M=O I\U_C!SFX3F3A,C\'X*SJ-LD63SZ>SHH!BM!XW6Q]U9]$4#@>$0:P'G/
M"%: $XP 4XA#RVG$F/EC>B*P@V,B%8AH:$L@XT!9A("4F$FF980)K6Z:Q.G7
MD_*@9&X'(;PTKSZ>#F=%L3@9C1X?'X^7RB?'F9^.4!3AT;KU\+GYLM;^$5>M
MH1!B5%W]UC2/=S4,MX6CS^^N;O7,SB6(T[R0J2X-Y/%)7IV\RK0L*M5_ZM?@
MQ1;E)[!N!LI3 "* X?$R-\.SH\%@)8?/$GMCW:!\_7ASN6'RWBV*8YW-1^7%
MT20+, 0WJV[%T\*>#O-XODCL^MS,6W<Z+#N!,I\1CW!I[/=5Q]%WFPMO\P!*
M%>-5./'<O[3R_^S;96%38U?QK.^>9'JC45*JF7WKF4AED^KL%V/C+]5=SU5>
M>*F++UO$"2Z 4$0"BC&#2$:<$[X9;NEN'ORMQ,^M/IYF#Z-PXY $1,LWI1:T
MTJ%F;J7)?GZOOVUWH>VVVY0Z(+@S0-NQ-B$(2*1HY?:/UC:]_C&7YUX/,F^L
M#\/%VISTNI;735"?6XP6TH<; 3V+$[/N[7PV[R)71=:!<JNT!'>'@Q"UL]Y;
M<[7*RHO!59$581"U5<LN,GYM?9R9B]2\":/L=@!C!H$P) Q^#B-J,588=Y/Z
M#;.-&$#]9V!_+0\,PT5:Q,73C9W&I1)I\5[.:_YKA(&$ H&QMI%CFEBIQJU8
MV&6U$0JXORBT5K(7)%R&E9E?9+X2_C;H;R?9?5KXITEF:N%()8%@B@+'.&=*
M,&=-NT&B@1.-."%]YZ0[G7N!S=LXL>_OY\KZ;=^)B(!R7 /'.8:<ZD@JV@$C
MWRTV H+V'8@]%>Q%]N_D\M($K6(7KS8<NP-!E@&)K J!,*$MPES"J ,47C#?
MB(MQW[GH0MM>0')N3$A!_OP2MFL6;@<1UD6 RW (N$?.2$@<M1T LL-T(SA8
MW^%HJVF?P)B$MQ_\7?:8;H=@$ &240-(Q"&6ACL&V^V>7S#<" K^BT"QIYY]
M0J):%WWPUSY[B%-=6Q9!%,8\XL: ,,<<-I!KJ[KC8LMZ(SC$+P)'&V7[1,CS
MHKF^SPJ$0P2!<TA+;2C#FG0X8JRL-BM@1;\($OM(V2<4KK.\D,D_\6+7#DI)
M!I36I3A01HPSJ7$72\]=MIMAT>/"9D>R'AB.<OX[]U;N\AOK"(@Q"V1;.E9.
M4PZY:U>/_\%:,P!Z7-7<6[H#I[S\O2NYGF7I"SMI9CC@5E- PO+'*4DB(UFK
MM&];;);Z'E<Q6TEXX/1_\G%1V'22S>?WZ?-N.:\-61$! FL1HL!"0DTE-;(5
M SO--@.AQV7*]F(>F(;;+(EU7,3I]%U8Z_I8)MO><QH!B0P%80PCBEI-,&ZW
M?ZC;;,9!CZN3+64\, 37WI8$V[#'J7ZJ+7_E]Q^<JP]L$89 &6L!5Y'$"EI*
M)&H%P\NVFT'1X])D1[+V"X[+/+^W_C]BP6,%A%84C#%#)A(1&\MVX\7//&@&
M2H_+E)U*?.@)Q>K[,"D^0:3NXB*I;X:8 ]*%E3&U3B DQI@8TVXZV;+8#(<>
M%RA;27C@]-]Y63ZR>/LT5UEM#HP$ <H9#9AA1)@0OVJYE-@PURSQ/2X^[B]>
M3[[T%TL]D^G4[GJJ0S $A!3!?T$15%@@1=H]'[/+:K-'I7I<;6PM92^JC1=S
MZZ<!Y;]\]EC,PN2VD&FM:$J=#JL>'H6YC#H*"5'6=5%_WFF\&1B]KS>V%_;
M?)R'%8XI5SEO$SFMS6S6 ,G"02"!(ZP1A+!=Z6G#7#,&>EQRW%^\7HP*D^"Y
ME\EE6-@N_[9U;!$$4B(!+-48(^J<(>V*3CO--J.@Q]7']F)V1L.K44W$JW#B
M[.CY0GDH_Q%Q=O0O4$L#!!0    ( (JA UT_5V$U62P  +6Z @ ;    =69P
M="TR,#(V,#@P,W@X:WAE>'@Y.3$N:'1M[7U9D]NVMN[[_16X[3BQJR"%DT2I
MV]M5'=OQ\;X[PTE[5^H\G8)(2.(V12H<NEOY]7<M@*2H6:UN222%/#AJB<2P
M\*T1"POOQLG$?_]NS)G[_O^\^[^M%OD8.NF$!PEQ(LX2[I(T]H(1^=/E\3?2
M:F5/?0BGL\@;C1-B:$:7_!E&W[Q[)G]/O,3G[_-VWOTH_W[WH^CDW2!T9^_?
MN=X]\=Q_7'FNJ=DV&[J&Z;I6W^[WG:'F#"QG8#M]>ZCU_E>_@E?A<?E.G,Q\
M_H^KB1>TQAS[O[8ZT^3FP7.3\;6N::^O%I]CT0@>'81)$DZN=0,>3?ACTF*^
M-PJNQ03@A6$(T\W><$(_C*Y?:>*_&_RE-603SY]=__#5F_"8_,H?R!_AA 4_
MT)A'WE ^$WM_<^@?VA=_/LBQV="$[P4\'ZMNX  _/8Z]@9>0?K^MO_L1G\]G
MN#K/TX[?6!J_M7;\Y'G_+4ZY--G2S!P #H^..;65I>D:,+5___P[^<J=<0!=
MC3QH\C8(PC1PX-,?W DCE_RW 9_BU$_B)\\#L!^]W_C6ZE*??F6AA4$:S:9A
ME%#R"XOC-B6WZ2B-$V)2P>EMLDPB2KX$3IN\^97%+OOK^U>=W@T^\_4M)8PD
M$;P+,L2!KB/F),3E]]P/IT+ L, E,-IT"#^D$0J9,!JQP/N;)5X8D'C*'0_(
M^#?^X@70QF0:\3$/8N^>DSCT4WPL)L,P(A/N>@[SL7G/P3%!KY'G<S)ESC<V
MPA:PMS 9\XB,8<;^C/  ON<\PN'!*,,)F4:AFSH)O)Z$+IN1B",EX/> )S "
M&  GX9!\9VCM/@'*^SA,[-Y+8A(#/J"+OU(&KT30N@LO_C,-^/>O]*YV8VJ2
M@/"OWK9>BT' 8\F8!<O-ZW;;6&@>1KW</#P'K77:L.@ $.;SN'ARUPC( \P9
M>[':6MX-)7JGK2^."MM?[E;V) ;9T>>C;)///. 1\X&LS''X%(D&'X!U$J3]
M%%;7\:;X[IOO7YG6S>?;V]_%A[=B79C['XD3SJ( 7HC)%#IS/5AB 9[)!/$P
M9C#N,$WB!-[!9F5;GWZ_RYIZ(@6,=K<GNH=/?8/"<B/D$D"7/RL1EI;6AXKG
MH<?MZ]*%MH8^M 7_%U(C^]E'3 GA4;S_ 5#-@JR_# 1%V]YC"V:>C)$<7NAN
MF1"+R7=FKVV6%E1O=[?"S+3:UBK,&/R:]>8%&S'VA)$)4IM&;XX6*EB9(>,E
M80E2!BC$8@+8^_* "M C?!:!L[ D3QR<!:LO<=!IF_TE'%1:7G\=1V$Z&@-/
MP,2]&%;X(8;A^YS%'.<QA/F!\B+PTX2Y',D=A$%+D&\"#Z4P582$G[IS\>MD
M2S**PH=D# *]?S.G<\QA=8(1)2/)\-DJ@#WFQ2#AD6B$/TY!2!>\?O<9_M>[
MN95,NM1>"$O$$BGA$9E+/Y<@FS%>]@#^\=.7KQ]OEV @OFN3WP4)8+2<?/^J
M9QC:S:_YO'_V A:@8@&]!8B9"&4C'M*AW40@B <";"LTK38:!(%_2Z-EF804
M&GI1G+3&S!\6$B@74:!)/>"11^X(A0IR.PKC6-!AZK,$:22:0!WN!2E0&?3D
M"%J!9\('!M(MA#[],!BUH+=)AALBX,!',RJ&!9B"3G[Q$F<,LW2^4?([M."Y
MN1WP8>SQ(?DD!P$8^FTX!$4>M8EX^TNP1M92\5W"V034O@\OH4"1:JP,8(H
MBG#U7/PF1E; M<+1$P,DSFLIU&%&#RMP)(,9-MEYW29?QQP0E1-/2 XW@EX#
M?$;8-]X@LTA*%$1K*:<BA7&"7))\ EV(*27 H2,@%P[!Q4G$7C)#\"%1?^$N
MFEID@#X8$+PMJ%%]$'Z4YEQ)%U,QGR2< A)A>:7!!9.59->MMOU:KN> ^0Q%
MU@8*9,_WQ?/"I(.'4*;E%F#Q(*K$(5 ^P]\<O0B_#%=_\N)[1(,7W/,8!8YH
M]6.(4LT!Q?D'GZ8#'P1C!H]0@B=.IV@?%I-I97C(& !>3CPA$<&$ )DH>(B!
M00H++,?.@[&<*_3FA#$N4Y2B+0Q?W:/6AC7)@2?'AG8SX L>D/)7X B,)C L
MBK$A$>#'(1JEV$L.,1X(&0]]L8'G(\I*<QBFHELY]#;Y<XS&,Z[',/5]0#W:
MX=(L%W(11U1T D(R8=^P<10"N;7!@*Y@\V$(0:[L\@Q$? '?"F "4G1,O,?,
M*T @@YR!A<1A/7@@BN6J_+M]URZM PP55(,?APL+.9^RE$T<E%\4C[VI$!=
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
M^D3,:Q2&;GDJ4I?OFE%AY$T 3,*N ?1-0@SR"?1A[&^$>G#,9S ,<8:1(PS
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
M!U._>K^UQ(.X8K5*)1Y^Y4E>W &\"?+1PXML7?(AG$S"@-R-6<3);VD2)RQ
M^C:H @0E_-'A@!"<=RPFZK*$J<(0S2Y?H :K"D.<1A.JPA"J,(0J#*$*0YR9
M8NK$OBH,H6!6#PHV_NI3=#=528B&GEPU--KK;,]JJWYD4D&N3I#3;:KWMI^J
M49!3D'OAVT%,2Y6$J,9B7 CD+&KNMR=8WY(0Y[VZ3I2$(&\",$_#(4G8(X_?
MJ@H1JD)$%9]L(!,>5B'BZ7.NE%2WC9>];:*&&<"JE,-1\:5H>S2+K &E'*H@
M[%^LE$/-=4%V'%XI!%5SX>@@4P0^6I9C VHN5$$K'%YSH>9J0%1=4$I %4<X
M)GE5<015'*$6:N#@X@@UUP)KRB-<'!>I6@9'HJNJ95!;O#9<W'_%73>4]VR^
M)=?4^C>=CN+"8Q#6-OJ*L$<1;]3HV8JTQR&MV;>4\C@T=0/<@:"45;QG"9R7
M3H Z%PU.FP!UKED:!K7-\]S\54RY<CEW"G+'G*7>![&\O0*N@IR"W(M&#@VJ
M=13DJK$8EP$YLT>[VO8M]]- +C-/\T[S078$TE[RO.6:PC+'28I5?6[LL\E%
M.4N^"!:6<;.".J+ S+M!]#XL%=/9Z:PTYT!&[<Y<&.U^)?,G%3+./1&CW3E1
M\J="1KV0T6GO"%(H9%PH,JQVO_ZI@><BWI_B#TS[@ &Q$2^,*D=6*12V54Q*
MEE4SMPUM:N^HH:DV8IY'7EMEGQ^3O*>2@1=*WE,=IMM0(G<Q=",JW4Y#>9#S
M.N(^2[Q[/B]DB@4A2V]E95"U^2ML$(<HYC>^LEIC-J/Z>_2S%\NXEO]]0CE?
MZRI_:1S-R3CBK4'$V;<6&R8\NF;^ YO%2V.#@94)L?\<5M9BUZ2J76CXTT]?
MOGZ\;5#98%4?^"G-UJ^*K1JLJ@]\&CVNZ@.K^L"J/K"J#WQFBJG"K:H^L()9
M/2AXLOK YXIBJ/K )T@V4O6!*Y3?IB!WS%FJ^L *<B>>I:H/K"!W:LA=0'W@
M<]$VNQPQ88^$/TYY$/-F)A=T:,?>?O9 ;<\^JRJ,M4,I*/(^@[Q]VNU7,BFS
M&>2U:<<Z97)!TU1(PB,>)[D"H7A(H)E:1*>V*MUVQ @*[=J*O,>SHT%)JP3+
M(YJ8UHY8C-(BFZGWD4\C[GC;RV#7&A\&X$.QWQ'):VJ*O$?T\/J:\O".2-Y.
MIZ.4QZ''DP^NJ%UKT(AZVHHGCTA>Y>T=5:.H0MW')&\3"G6?[S*1>>76[)#'
MN6KOJ<W%HP9%3*IK5=A<5/O9EP(YHT\U7:505&,Q+@-R79V:.V*_"G(*<B\:
M#N]2VZI";F(#K=/2K=[J&N]G/=I <)1=ESNL'4,&+);E9'!_OL$[+"8UC.VF
MO(HH/"L>9O1.%*.^1/)V:']'>61%WN>E*.XH>'XJBR.OAQ&$P8Z:U.K)Q2<;
MKJUOG;]23]8'@NG%3=VVLBM9>;89M#5.527K$HFK@'M$V]U0N7,OH4,^C%DP
MXL0+R)!Y$;EG?LHQ)<*!5F!>' 8&'V//Y5&#/<'O7_4,W;A1['HT/=-5>D:A
MMZX$[ABJ7/59KS"O-7K67&"NF+(>=TQ?)%W5G>BUQ6L#]4=QE=03T^JR2L%K
M+N&ZK/2 EZ5#=?,'S"Y>'+U/_L#+4.0\.2T*U1>&:IWVS+UR_Q2J%:KK@NJN
M34UK>VJ 0K5"==U0;5!MQY9/15!=\RMK?AR$[@S^-TXF_OO_#U!+ 0(4 Q0
M   ( (JA UUA;E<Y/@\  -ME   1              "  0    !U9G!T+3(P
M,C8P.# S+FAT;5!+ 0(4 Q0    ( (JA UW@,,P870(  .T&   1
M      "  6T/  !U9G!T+3(P,C8P.# S+GAS9%!+ 0(4 Q0    ( (JA UT%
MJ,UI< D  ,Q7   5              "  ?D1  !U9G!T+3(P,C8P.# S7VQA
M8BYX;6Q02P$"% ,4    " "*H0-=@X;7R?T%  #A,@  %0
M@ &<&P  =69P="TR,#(V,#@P,U]P<F4N>&UL4$L! A0#%     @ BJ$#73]7
M8359+   M;H" !L              ( !S"$  '5F<'0M,C R-C X,#-X.&MX
@97AX.3DQ+FAT;5!+!08     !0 % $T!  !>3@     !

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>15
<FILENAME>ufpt-20260803_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:dei="http://xbrl.sec.gov/dei/2025"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:xlink="http://www.w3.org/1999/xlink">
    <link:schemaRef xlink:href="ufpt-20260803.xsd" xlink:type="simple"/>
    <context id="c-1">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914156</identifier>
        </entity>
        <period>
            <startDate>2026-08-03</startDate>
            <endDate>2026-08-03</endDate>
        </period>
    </context>
    <dei:AmendmentFlag contextRef="c-1" id="f-22">false</dei:AmendmentFlag>
    <dei:EntityCentralIndexKey contextRef="c-1" id="f-23">0000914156</dei:EntityCentralIndexKey>
    <dei:DocumentType contextRef="c-1" id="f-1">8-K</dei:DocumentType>
    <dei:DocumentPeriodEndDate contextRef="c-1" id="f-2">2026-08-03</dei:DocumentPeriodEndDate>
    <dei:EntityRegistrantName contextRef="c-1" id="f-3">UFP TECHNOLOGIES, INC.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode contextRef="c-1" id="f-4">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityFileNumber contextRef="c-1" id="f-5">001-12648</dei:EntityFileNumber>
    <dei:EntityTaxIdentificationNumber contextRef="c-1" id="f-6">04-2314970</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="c-1" id="f-7">100 Hale Street</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="c-1" id="f-8">Newburyport</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="c-1" id="f-9">MA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressCountry contextRef="c-1" id="f-10">US</dei:EntityAddressCountry>
    <dei:EntityAddressPostalZipCode contextRef="c-1" id="f-11">01950-3504</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="c-1" id="f-12">978</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="c-1" id="f-13">352-2200</dei:LocalPhoneNumber>
    <dei:WrittenCommunications contextRef="c-1" id="f-14">false</dei:WrittenCommunications>
    <dei:SolicitingMaterial contextRef="c-1" id="f-15">false</dei:SolicitingMaterial>
    <dei:PreCommencementTenderOffer contextRef="c-1" id="f-16">false</dei:PreCommencementTenderOffer>
    <dei:PreCommencementIssuerTenderOffer contextRef="c-1" id="f-17">false</dei:PreCommencementIssuerTenderOffer>
    <dei:Security12bTitle contextRef="c-1" id="f-18">Common Stock</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="c-1" id="f-19">UFPT</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="c-1" id="f-20">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityEmergingGrowthCompany contextRef="c-1" id="f-21">false</dei:EntityEmergingGrowthCompany>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
